【问题标题】:Hamming filter to reduce ringing artifact in image汉明滤波器以减少图像中的振铃伪影
【发布时间】:2017-11-07 15:36:17
【问题描述】:

我有一个低分辨率图像 (sLR),它是通过在行方向的频率(k 空间)域中选择参考高分辨率图像 (sHR) 的中心部分生成的。当我在频域中对这个低分辨率图像进行零填充时,我在空间域中得到了预期的振铃伪影。我尝试通过使用 Hamming 窗口过滤图像来消除此伪影。请在下面查看我的代码。我对将 fft 和 ifft 应用于图像以及过滤过程有疑问,如果有人可以检查我的代码并确认它是正确的,我将不胜感激。

% sHR: HR reference image
n = size(sHR,1);
kspHR = fftshift(fft(sHR,n,1),1)/n; % HR image in k-space

% Generating LR image (LR in row-direction)
kspLR = kspHR((n/2)-(n/4)+1:(n/2)+(n/4),:); 
sLR = real(ifft(ifftshift(kspLR,1),n,1)))*n; 

% Zero-padding
a = floor(size(kspLR,1)/2);
kspZP = padarray(kspLR, a ,'both');
sZP = real(ifft(ifftshift(kspZP,1),n,1)))*n;% image with Ringing artifact

% Apply Hamming filter to Zero-padded kspace image (kspZP)
[r,c]=size(abs(kspZP));
w = hamming(r);
W = repmat(w,[1,c]);
kspHM = W.*kspZP
sHM = real(ifft(ifftshift(kspHM,1),n,1)))*n; % Filtered image in spatial domain

我的第二个问题是当我使用 iffft 时,输出图像通常具有负强度。对于空间域中的进一步处理,如果我以图像的最小强度为 0 的方式对图像强度进行归一化,可以吗?还是应该使用图像的绝对值?

【问题讨论】:

  • 每个问题一个问题(请参阅:How to Ask)。

标签: matlab image-processing signal-processing fft hamming-window


【解决方案1】:
  1. 这不是汉明窗的标准用法,但作为一种高斯形状,它可能会有所帮助。尝试应用窗口(或其他一些频率响应)而不是剪掉频谱的中心部分,或将其放入中心部分。否则,尖锐的截止将保留,振铃也将保留。

  2. 我建议使用 max(0,... 将这些负值剪裁为零,因为它们表示您不想要的振铃。也许还会将意外的大值剪辑到1

【讨论】:

  • 感谢您的回复@NickJH。你的意思是我应该使用这样的窗口: [r,c]=size(abs(kspZP)); w = 汉明(r/2); w = padarray(w, a ,'both'); W = repmat(w,[1,c]);并将这个 W 应用到我的 kspZP?
  • 是的,或者在填充之前将 kspLR 乘以寡妇函数(我认为这是等效的)。那会更模糊,但应该有更少的振铃。不同形状和大小的频域掩模会有不同的过滤效果。
  • 顺便说一句,我猜你需要 sLR 用于其他目的,而且它确实需要一个尖锐的频率截止;否则有更简单的方法可以在一个轴上模糊图像。
猜你喜欢
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2011-10-02
相关资源
最近更新 更多