失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matalb 图像处理 低通滤波和高通滤波 (理想 巴特沃斯 高斯 含代码)

matalb 图像处理 低通滤波和高通滤波 (理想 巴特沃斯 高斯 含代码)

时间:2020-12-27 08:14:40

相关推荐

matalb 图像处理 低通滤波和高通滤波 (理想 巴特沃斯 高斯 含代码)

低通滤波和高通滤波

主要类型和公式主要效果图各类型的函数代码最终比较代码

主要类型和公式

1.低通滤波

主要分为理想低通滤波,巴特沃斯低通滤波,高斯低通滤波

理想低通滤波:

其中:对于大小为M*N的图像,频率点(u,v)与频域中心的距离为D(u,v),其表达式为:

下列的D(u,v)都相同

巴特沃斯低通滤波:

高斯低通滤波:

2.高通滤波

理想高通滤波:

巴特沃斯高通滤波:

高斯高通滤波:

主要效果图

带傅里叶谱:

不带傅里叶谱:

各类型的函数代码

理想低通滤波:

function out = imidealflpf(I, freq)% imidealflpf函数构造理想的频域低通滤波器% 参数:I输入的灰度图像% 参数:freq低通滤波器的截止频率% 返回值:out 指定的理想低通滤波器[M,N] = size(I);out = ones(M,N);for i=1:Mfor j=1:Nif (sqrt(((i-M/2)^2+(j-N/2)^2))>freq)out(i,j)=0;endendend

理想高通滤波:

function out = imidealflpf1(I, freq)% imidealflpf函数构造理想的频域低通滤波器% 参数:I输入的灰度图像% 参数:freq低通滤波器的截止频率% 返回值:out 指定的理想低通滤波器[M,N] = size(I);out = ones(M,N);for i=1:Mfor j=1:Nif (sqrt(((i-M/2)^2+(j-N/2)^2))<freq)out(i,j)=0;endendend

把特沃尔低通滤波:

function out = imgaussflpf4(I,sigma,x)% imgaussflpf函数 构造频域高斯低通滤波器% 参数:I输入的灰度图像% 参数:sigma限制图像D0参数% 参数:x巴特沃尔的阶数[M,N] = size(I);out = ones(M,N);for i=1:Mfor j=1:Ndistance=sqrt((i-M/2)^2+(j-N/2)^2);out(i,j) = 1/(1+(distance/sigma).^(2.*x));endend

巴特沃尔高通滤波:

function out = imgaussflpf4(I,sigma,x)% imgaussflpf函数 构造频域高斯低通滤波器% 参数:I输入的灰度图像% 参数:sigma限制图像D0参数% 参数:x巴特沃尔的阶数[M,N] = size(I);out = ones(M,N);for i=1:Mfor j=1:Ndistance=sqrt((i-M/2)^2+(j-N/2)^2);out(i,j) = 1/(1+(distance/sigma).^(2.*x));endend

高斯低通滤波:

function out = imgaussflpf2(I, sigma)% imgaussflpf函数 构造频域高斯低通滤波器% 参数:I输入的灰度图像% 参数:sigma高斯函数的Sigma参数[M,N] = size(I);out = ones(M,N);for i=1:Mfor j=1:Nout(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);endend

高斯高通滤波:

function out = imgaussflpf3(I, sigma)% imgaussflpf函数 构造频域高斯低通滤波器% 参数:I输入的灰度图像% 参数:sigma高斯函数的Sigma参数[M,N] = size(I);out = ones(M,N);for i=1:Mfor j=1:Nout(i,j) = 1-exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);endend

对图像进行对应并输出的函数:

function out = imfreqfilt(I, ff)% imfreqfilt函数对灰度图像进行频域滤波% 参数:I输入的空域图像% 参数:ff应用的与原图像等大的频域滤波% 返回值:out 反变换回空域后的图像if (ndims(I)==3) && (size(I,3)==3) % RGB图像I = rgb2gray(I);I = double(I);endif (size(I) ~= size(ff))msg1 = sprintf('%s: 滤镜与原图像不等大,检查输入', mfilename);msg2 = sprintf('%s: 滤波操作已经取消', mfilename);eid = sprintf('Images:%s:ImageSizeNotEqual',mfilename);error(eid,'%s %s',msg1,msg2);end% 快速傅立叶变换f = fft2(double(I));% 移动原点s = fftshift(f);% 应用滤镜及反变换out = s .* ff; %对应元素相乘实现频域滤波out = ifftshift(out);out = ifft2(out);% 求模值out = abs(out);% 归一化以便显示out = out/max(out(:));

最终比较代码

%低通|高通频率域滤波f=imread('8.jpeg');%原图f=im2double(f);f1=rgb2gray(f);%低通理想滤波dt_L=imidealflpf(f1,40);%低通 理想40滤波器dtL=imfreqfilt(f1,dt_L);%带入滤波器输出dtL1=fft2(dtL);%傅里叶变换sdtL=fftshift(log(1+abs(dtL1)));% 绘制傅里叶变换对数谱并将零点移到中心%高通理想滤波gt_L=imidealflpf1(f1,60);%高通 理想60滤波器gtL=imfreqfilt(f1,gt_L);%带入滤波器输出gtL1=fft2(gtL);%傅里叶变换sgtL=fftshift(log(1+abs(gtL1)));% 绘制傅里叶变换对数谱并将零点移到中心%低通巴特沃斯dt_B=imgaussflpf4(f1,40,2);%巴特沃斯dtB=imfreqfilt(f1,dt_B);%带入滤波器输出dtB1=fft2(dtB);%傅里叶变换sdtB=fftshift(log(1+abs(dtB1)));% 绘制傅里叶变换对数谱并将零点移到中心%高通巴特沃斯gt_B=imgaussflpf5(f1,60,2);%巴特沃斯gtB=imfreqfilt(f1,gt_B);%带入滤波器输出gtB1=fft2(gtB);%傅里叶变换sgtB=fftshift(log(1+abs(gtB1)));% 绘制傅里叶变换对数谱并将零点移到中心%低通高斯滤波dt_G=imgaussflpf2(f1,40);dtG=imfreqfilt(f1,dt_G);%带入滤波器输出dtG1=fft2(dtG);%傅里叶变换sdtG=fftshift(log(1+abs(dtG1)));% 绘制傅里叶变换对数谱并将零点移到中心%高通高斯滤波gt_G=imgaussflpf3(f1,60);gtG=imfreqfilt(f1,gt_G);%带入滤波器输出gtG1=fft2(gtG);%傅里叶变换sgtG=fftshift(log(1+abs(gtG1)));% 绘制傅里叶变换对数谱并将零点移到中心%输出不带傅里叶谱% subplot(3,3,1);imshow(f1);title('原图');% subplot(3,3,4);imshow(dtL);title('低通理想滤波处理后 D0=40');% subplot(3,3,5);imshow(dtB);title('低通巴特沃斯滤波处理后 D0=40 二阶');% subplot(3,3,6);imshow(dtG);title('低通高斯滤波处理后 D0=40 ');% subplot(3,3,7);imshow(gtL);title('高通理想滤波处理后 D0=60');% subplot(3,3,8);imshow(gtB);title('高通巴特沃斯滤波处理后 D0=60 二阶');% subplot(3,3,9);imshow(gtG);title('高通高斯滤波处理后 D0=60');%输出带傅里叶谱subplot(5,3,1);imshow(f1);title('原图');subplot(5,3,4);imshow(dtL);title('低通理想滤波处理后 D0=40');subplot(5,3,5);imshow(dtB);title('低通巴特沃斯滤波处理后 D0=40 二阶');subplot(5,3,6);imshow(dtG);title('低通高斯滤波处理后 D0=40 ');subplot(5,3,7);imshow(sdtL,[]);title('低通理想滤波处理后 D0=40 傅里叶谱');subplot(5,3,8);imshow(sdtB,[]);title('低通巴特沃斯滤波处理后 D0=40 二阶 傅里叶谱');subplot(5,3,9);imshow(sdtG,[]);title('低通高斯滤波处理后 D0=40 傅里叶谱');subplot(5,3,10);imshow(gtL);title('高通理想滤波处理后 D0=60');subplot(5,3,11);imshow(gtB);title('高通巴特沃斯滤波处理后 D0=60 二阶');subplot(5,3,12);imshow(gtG);title('高通高斯滤波处理后 D0=60');subplot(5,3,13);imshow(sgtL,[]);title('高通理想滤波处理后 D0=60 傅里叶谱');subplot(5,3,14);imshow(sgtB,[]);title('高通巴特沃斯滤波处理后 D0=60 二阶 傅里叶谱');subplot(5,3,15);imshow(sgtG,[]);title('高通高斯滤波处理后 D0=60 傅里叶谱');

如果觉得《matalb 图像处理 低通滤波和高通滤波 (理想 巴特沃斯 高斯 含代码)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。