【发布时间】:2013-11-27 19:34:11
【问题描述】:
我是 Matlab 新手,我有一个涉及图像处理的项目。
我有许多 RGB 图像,我需要找到一种方法来将失焦图像与聚焦图像分开。我不需要纠正失焦的焦点,我只需要找到失焦的并删除它们。我已经对图像做了FFT2,然后使用功率谱图像的径向平均值来查看对焦或失焦之间是否存在差异,但我没有看到两者之间的差异。
我决定使用图像的渐变
[gradx,grady]=gradient(image)
然后取大小
new_image=sqrt((gradx.^2)+(grady.^2))
现在尝试使用new_image 而不是image 来执行FFT2。功率谱看起来不像我期望的那样,所以我不确定我是否应该分别对new_image 和gradx 和grady 执行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,但功率谱再次不正确。我希望它从零开始,而是从最高值开始并呈指数下降。
有没有人尝试使用这种方法对图像进行分类?感谢您的阅读。
【问题讨论】:
-
很难想象您所说的“功率谱不正确。我希望它从零开始,而是从最高值开始并呈指数下降。”但它向我表明,您可能会在检查结果之前忽略调用 FFTSHIFT。
-
fftshift你的频谱!! -
对不起,我已经在使用 FFTSHIFT。
标签: matlab image-processing fft gradient