2D 数字信号处理 - 应用高通和图像

信息处理 图像处理 过滤器 低通滤波器 数字的 巴特沃思
2022-01-28 19:20:14

我一直在研究二维数字信号处理。我正在做的是关于数字图像的去噪:

我想从图像中去除的噪声类型就像高斯噪声和“盐和胡椒”。供您参考,我打算使用巴特沃斯低通滤波器来消除噪声。这是我在matlab中使用的代码。

功能高通

function [ out ] = butterhp( im,d,n )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
h=size(im,1);
w=size(im,2);
[x,y]=meshgrid(-floor(w/2):floor(w-1)/2); -floor(h/2):floor(h-1)/2;
out= 1./(1.+(d./(x.^2+y.^2).^0.5).^(2*n));
 end

功能低通

function [ out] = butterlp( im,d,n)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
out=1-butterhp(im,d,n);
end

matlab代码

a = imread('penang.jpg')
f = rgb2gray(a);
k = imnoise(f,'gaussian')
lp=butterlp(k,15,1);
af=fftshift(fft2(k));
aflp=af.*lp;
aflpi=ifft2(aflp)
noise = uint8(real(aflpi));
imshow(noise)

这是我使用的图像。 输入图像

运行代码,这就是我得到的。

在此处输入图像描述

所以,我的问题是当我尝试通过调整“n阶”和“截止频率”的数量来过滤它以使其看起来更清晰时,它似乎不起作用。它仍然像那样给我模糊的画面。

1个回答

首先要做的事情:如果您使用fftshift,则必须在执行 ifft 之前撤消它。尝试

af=fftshift(fft2(k));
aflp=af.*lp;
aflpi=ifft2(ifftshift(aflp))

结果应该会有所改善,尤其是这个棋盘覆盖应该消失。