图像焦点和FFT

3
我是一名新手Matlab用户,我的项目涉及图像处理。
我有许多RGB图像,需要找到一种方法来区分焦点不清晰的图像和清晰的图像。 我不需要纠正那些失去焦点的图像,我只需要找出哪些图像失去了焦点并将它们移除。我对图像进行了FFT2,然后使用功率谱的径向平均值来查看是否存在清晰或模糊之间的差异,但我没有看到两者之间的区别。
因此,我决定使用图像的梯度。
[gradx,grady]=gradient(image) 

然后取其大小

new_image=sqrt((gradx.^2)+(grady.^2)) 

并尝试使用新的图像 new_image 进行 FFT2 ,而不是使用 image 。 功率谱看起来并不像我所期望的,因此我不确定是否应分别对 gradx 和 grady 的 new_image 进行 FFT2 。 有人对是否这样做有任何想法吗?
我还在考虑使用Sobel掩模而不是梯度。
mask=fspecial('sobel')
mask_x=imfilter(image,mask)
mask_y=imfilter(image,mask')
new_image=sqrt((mask_x.^2)+(mask_y.^2))

然后在“new_image”中进行“FFT2”,但是功率谱不正确。我期望它从零开始,但实际上它是从最高值开始呈指数下降的。
有人尝试使用这种方法对图像进行分类吗?谢谢阅读。

1
很难准确地想象你所说的“功率谱不正确。我期望它从零开始,但实际上它从最高值开始呈指数下降。” 但这让我觉得你可能在检查结果之前忽略了调用FFTSHIFT。 - jez
1
把你的频谱进行fftshift操作!! - Shai
抱歉让您感到困惑,我漏掉了我已经在使用FFTSHIFT。 - user3043257
1个回答

1
一种DCT变换,可以消除图像相对边缘处的高频不连续性,而无需使用FFT/DFT。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接