空间域滤波、频率域滤的关系:

空间域滤波、频率域滤的关系:
由于空间域滤波和频率域滤波之间可以通过卷积定理等价,那么也就意味着,空间域中的卷积核h ( x , y ) h(x,y)h(x,y)通过傅里叶变换就得到了频率域中对应等价的滤波器传递函数H ( u , v ) H(u,v)H(u,v),相应的,已知F ( u , v ) F(u,v)F(u,v)时,也可以通过傅里叶反变换得到空间域中等效卷积核h ( x , y ) h(x, y)h(x,y)。两个滤波器之间构成一个傅里叶变换对:
h ( x , y ) ⇔ H ( u , v ) h(x, y) \Leftrightarrow H(u,v)
h(x,y)⇔H(u,v)

由于在频率域中可以直观的处理频率,因此,在频率域设计合适的滤波器传递函数后直接滤波,或通过傅里叶反变换得到空间域等效核。
————————————————
版权声明:本文为CSDN博主「ffiirree」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ice__snow/article/details/126978318
下附空间滤波与频率域滤波的Matlab示例代码:
% 读入原图并灰度化
f = imread(‘D:/Matlab R2022a(64bit)/expres/preview2.jpg’);
subplot(231);imshow(f);title(‘原图’);
f = rgb2gray(f); % 灰度化
subplot(232);imshow(f);title(‘灰度化原图’);

% 空间域傅里叶对数谱
F = fft2(f); % 二维快速傅里叶变换
S = fftshift(log(1+abs(F))); % 绘制傅里叶变换对数谱并将零点移到中心
subplot(233);imshow(S,[]);title(‘傅里叶变换对数谱’);

% 使用fspecial生成空间滤波器,sobel算子
h = fspecial(‘sobel’); % 指定滤波器(sobel算子:边缘提取)
PQ = paddedsize(size(f)); % 自行编写M函数
H1 = freqz2(abs(h),PQ(1),PQ(2)); % 生成对应的频率域滤波器
H2 = ifftshift(H1); % 重排数据
subplot(234);imshow(abs(H2),[]);title(‘频率域谱’);

% 空间域和频率域边缘提取效果对比
gs = imfilter(f,h);
gf = dftfilt(f,H2); % 自行编写M函数
subplot(235);imshow(abs(gs),[]);title(‘空间域图’);
subplot(236);imshow(abs(gf),[]);title(‘频率域图’);

% 自行编写的函数,需要和主文件在同一个文件夹中
% 自行编写paddedsize函数
function PQ = paddedsize(AB,CD,~ )
% PADDEDSIZE Computes padded sizes useful for FFT-based filtering.
% Detailed explanation goes here
if nargin == 1
PQ = 2AB;
elseif nargin ==2 && ~ischar(CD)
PQ = QB +CD -1;
PQ = 2
ceil(PQ/2);
elseif nargin == 2
m = max(AB); % maximum dimension
% Find power-of-2 at least twice m.
P = 2^nextpow(2m);
PQ = [P,P];
elseif nargin == 3
m = max([AB CD]); % maximum dimension
P = 2^nextpow(2
m);
PQ = [P,P];
else
error(‘Wrong number of inputs’);
end
end

% 自行编写的dftfilt函数
function g = dftfilt(f , H)
F = fft2(f , size(H, 1), size(H ,2));
g = real(ifft2(H.*F));
g = g(1:size(f , 1),1:size(f ,2));
end
空间域滤波、频率域滤的关系:_第1张图片
下方为结果图:
空间域滤波、频率域滤的关系:_第2张图片

你可能感兴趣的:(matlab,matlab,图像处理,计算机视觉)