我正在使用clown.jpg图像来消除其明显的图案/噪点.
在拍摄图像之前,我做的第一步是对二维像素(即256 x 256)的平方图像进行调整.在MATLAB中使用FFT和fftshift,以图像中心的强度为基础,进行快速傅立叶变换.以下图像是使用上述功能的结果.
我成功地通过在FFT图像上手动归零“星星”来消除模式/噪点,如下所示:
采用IFFT,我得到更好的图片质量(未显示).
我有一个问题是如果有一个自动化的方式使“星星”归零?由于我们不想删除最亮的“星”,DC分量,也不是低值,我创建了一个图像零位置的间隔.这样一个阈值如下:
filter = (fLog > .7*max(fLog(:)) ) | (fLog < .25*max(fLog(:)) )
where fLog is the log(1+abs(Fourier image)) and .7 and .25 are the corresponding
interval percentages.
输出掩码(我将乘以傅里叶图像)将在下面找到.黑色对应于0的值,白色对应于1.请注意,该掩码的过滤将删除一些“星”并保留一些直流分量.显然这种方法不是最好的.
我正在阅读关于做一个高通滤波器,但是这似乎去除了傅里叶图像中的所有外部值.这是基于我以前的测试(我没有包括那些图像).
有什么建议您突出显示除DC分量以外的高强度值.理想情况下,我想让面具看起来像:
在另一个网站中,提到使用“高通和水平校正FFT数据仅保留代表光栅图案的杂散点”.我不清楚如何做到这一点.
您的帮助将不胜感激.
这是我的源代码来帮助:
I = imread('clown.jpg'); % Read Image
% convert to grayscale
I =