(1)横条纹:0_N_Girl_horiz_lines.bmp
方法一:频域处理
a)陈述:
实验图像为加入了横条纹的图片,首先应该分析图片的频谱,观察频谱分布,以确定去除横条纹的方法.
b)步骤:
①读出原图并进行傅里叶变换,显示频谱图片
从频谱图分析可知,应该将中间大圆周围的小亮圆去除,达到去除横条纹的目的.考虑滤波器的类型,常用的典型滤波器有理想低通滤波器,巴特沃斯低通滤波器,高斯低通滤波器,当巴特沃斯滤波器阶数较小时,滤波结果接近于高斯低通滤波器, 当巴特沃斯滤波器阶数较大时,滤波结果接近于理想低通滤波器.故可先采用理想低通滤波器和高斯低通滤波器进行处理,观察处理结果.当然滤波半径选取也很重要,本题选用滤波半径d0=30.
②首先采用理想低通滤波器对频谱进行滤波,然后对滤波结果进行反傅里叶变换,观察滤波后结果。
从图可以看出,经过理想低通滤波器和高斯低通滤波器滤波后,原始频谱的小亮圆均已去除,但是从图1.4和图1.6可以看出,理想低通滤波之后图像的轮廓模糊,而高斯低通滤波之后图像中的横条纹还在,只是亮度变低了,那么考虑使用巴特沃斯滤波器进行滤波,既可以接近理想滤波也可以接近高斯滤波的滤波效果。当然此处应该选取接近理想低通滤波器的高阶次巴特沃斯滤波器。
③采用不同阶次的巴特沃斯滤波器进行滤波,此处选择阶次level=5和level=15.
阶次为15时图像轮廓模糊,阶次为5时滤波效果较好,且阶次为15时巴特沃斯滤波器滤波后频谱图1.9与理想低通滤波器滤波后频谱近似。接下来考虑取巴特沃斯滤波器阶次为4,比较阶次为4和为5的效果,确定最终滤波方法。
④采用阶次level=4的巴特沃斯滤波器进行滤波,选取的原因在于阶次为5的滤波器不一定达到最好效果了,而阶次低于4之后的阶次较小,滤波效果与高斯低通滤波器效果更相滤波阶次为4的时候的效果更好,故选取阶次为4的巴特沃斯低通滤波器进行滤波,来去除图像中的横条纹。比较图1.1和图1.12可以看出滤波后已完全去除横条纹,但是图像的清晰度会有一定程度降低。
方法二:空域处理
a) 陈述:
本图除了考虑在频域进行处理,还应该考虑空域的规律,读出图像信息可以发现,横条纹的灰度值较高,为255,故可直接考虑在空域处理,去除亮横条纹。
b) 步骤:
① 读取灰度信息,可以看出横条纹灰度值分布规律。
②去除灰度值为255的像素,用邻近点像素值代替,即最近邻插值。
频率滤波降低了图像的清晰度,但是空域处理保持了目标图像的细节信息,效果较好。
c)总结:
对于频域滤波,对比分析滤波效果可知,对于横条纹的滤除,采用高阶巴特沃斯低通滤波器可取得较好滤波效果,而理想低通滤波器虽然可以去除横条纹,但是会造成一定的波浪条纹,而高斯低通滤波器的效果却不佳。且对比发现,虽然高阶巴特沃斯低通滤波器与理想低通滤波器效果接近,但是阶次越高时越会出现理想低通滤波器的波浪条纹缺点,故阶次不宜过高。但是对比频域滤波和空域滤波发现,在这种规律灰度值的横条纹噪声,直接在灰度值上进行处理并进行插值会取得较好效果,且比频域处理更好,图像的清晰度和细节保持都达到很好效果。
(2)特殊叠加条纹:1_N_Girl_Grad_lines.bmp
a)陈述:观察图片分析题目可得到一些处理图片的思想,由于是特殊叠加条纹,可考虑进行高通滤波,并分析进行高通滤波后的图片,找到适合的处理方法。还有既然是叠加,则要考虑用减法进行处理。
b)步骤:
① 读取待处理图像,并进行傅里叶变换,观察频谱图谱。
②对条纹的原始频谱图进行高通滤波处理。此处滤波半径d0=65,滤波方法为高斯高通滤波器。对滤波频谱进行反傅里叶变换,观察高通滤波后的图像。
得到了我们意料中的结果,高斯滤波后的结果图中几乎只剩下了噪声条纹,这样有助于我们进行减法操作,用原始图像减去高通滤波后的条纹图像,观察效果。当然,由于条纹亮度较暗,我们可以考虑原图减去二倍条纹灰度,这个减法操作是在空域进行操作,而非频域操作。
② 空域减法操作,用原图减去二倍的高斯滤波还原图。
分析图可知,已经去除了一部分叠加条纹,图片质量有一定改善,但是图片中还存在明暗不一的条纹,还需要进行相应操作。分析图1.20可考虑,对差值频谱进行低通滤波处理,滤波半径不变,选择理想低通滤波器。
③ 采用理想低通滤波器对差值频谱进行滤波处理,并且采用傅里叶反变换还原图像,观察处理后结果。
对比图中无叠加条纹,并且图片质量较好,边缘无明显模糊情况,故处理较为成功。
c)总结:
对于这种叠加条纹的处理,分析思路应该时找出噪声的频率,还原噪声,再从叠加图片中去除噪声条纹。当然,如果没有思路的时候就直接滤波,会发现效果很差,那么就应该深入思考,是不是方向不对,再换个思路处理图像。本体中叠加条纹是在高频区域,故可先将高频分离处理,再还原条纹,然后再在空域进行作差,最后观察效果,如果需要则可再进行一次低通滤波。
滤除下图中的干扰信号(2_lena_corrupt.bmp)
a)陈述:首先读取干扰图片,为了图片中的干扰信号,先进行频谱分析,观察频域干扰信号的特点,以便于找到合适的滤波方法。
b)步骤:
① 读取图片,对图片进行傅里叶变换,观察频域规律。
分析图可知,应该去除十字亮线,应该采用低通滤波器。当然低通滤波器有理想低通滤波器,巴特沃斯低通滤波器以及高斯低通滤波器,可通过不同滤波器进行滤波,分析滤波效果。本题中滤波半径d0=70。
② 理想低通滤波器滤波对原始频谱进行滤波处理
观察图与原始频谱比较可知,理想低通滤波器去掉了十字亮点,也去掉了一些有用频谱,经过理想低通滤波器滤波之后,虽然噪声去除,但是图片周围出席波浪纹,滤波效果不是很好。
③ 高斯低通滤波器对原始频谱进行滤波处理
观察图,与原始频谱比较可知,高斯低通滤波器去掉了十字亮点,并且目标频谱保存较为完整,经过理想低通滤波器滤波之后,噪声去除,且滤波效果很好,图像略有模糊,但是模糊效应是滤波本来就存在的一个结果。
④ 巴特沃斯低通滤波器对原始频谱进行滤波处理,此处选择低阶次来接近高斯滤波效果,通过选择level=3,对比巴特沃斯低通滤波器与高斯低通滤波器的滤波效果。
从图对比处理后的频谱图,可知高斯滤波后保留的原始信息较多,分析可知,巴特沃斯低通滤波器去除了噪音,发现高斯低通滤波器滤波结果比巴特沃斯滤波器滤波效果好,清晰度较高。故本题采用高斯低通滤波器滤除噪声,并保持较好的目标信息。
c)总结:
对比分析滤波效果可知,一般的噪声图像采用高斯低通滤波器可取得较好滤波效果,而理想低通滤波器虽然可以去除噪声,但是会造成一定的波浪条纹,而低阶巴特沃斯低通滤波器可接近高斯滤波器效果,但是清晰度比高斯滤波差。故本题采用高斯低通滤波器进行滤波。
相关代码
1. 利用傅里叶变换去除下面图像中的条纹
(1)横条纹:0_N_Girl_horiz_lines.bmp
%频域处理
img=imread('D:/VisualStudio 2015/0_N_Girl_horiz_lines.bmp');
%读取原图像
figure(1)
imshow(img)
title('原图')
fftimg=fft2(img);%二维离散傅里叶变换
shiftimg=fftshift(fftimg);%直流分量移到频谱中心
re=real(shiftimg);%取傅里叶变换的实部
logfftimg1=log(re);
figure(2)
imshow(logfftimg1,[8,10])
title('原图频谱')
[m,n]=size(shiftimg);%图像尺寸
n1=floor(m/2);
n2=floor(n/2);
d0=30;%截至半径
%理想滤波器
shiftimg1=shiftimg;
fori=1:m
for j=1:n
if ((i-n1)^2+(j-n2)^2>=d0^2)
shiftimg1(i,j)=0;
end
end
end
re1=real(shiftimg1);%取傅里叶变换的实部
logfftimg1=log(re1);
figure(3)
imshow(logfftimg1,[8,10])
title('理想滤波器频谱')
shiftimg1=ifftshift(shiftimg1);
ifftimg1=uint8(real(ifft2(shiftimg1)));
figure(4)
imshow(ifftimg1);
title('理想滤波器滤波')
level=4;%2级巴特沃斯滤波器 2时接近高斯,5时接近理想,但是数值更大时会有模糊效应
%巴特沃斯低通
shiftimg2=shiftimg;
fori=1:m
for j=1:n
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+(d/d0)^(2*level));
shiftimg2(i,j)=h*shiftimg2(i,j);
end
end
re2=real(shiftimg2);%取傅里叶变换的实部
logfftimg2=log(re2);
figure(5)
imshow(logfftimg2,[8,10])
title('巴特沃斯低通滤波器频谱')
shiftimg2=ifftshift(shiftimg2);
ifftimg2=uint8(real(ifft2(shiftimg2)));
figure(6)
imshow(ifftimg2);
title('巴特沃斯低通滤波器滤波')
%高斯低通
shiftimg4=shiftimg;
fori=1:m
for j=1:n
d=sqrt((i-n1)^2+(j-n2)^2);
h=exp(-1/2*(d^2/d0^2));
shiftimg4(i,j)=h*shiftimg4(i,j);
end
end
re4=real(shiftimg4);%取傅里叶变换的实部
logfftimg4=log(re4);
figure(7)
imshow(logfftimg4,[8,10])
title('高斯低通滤波器频谱')
shiftimg4=ifftshift(shiftimg4);
ifftimg4=uint8(real(ifft2(shiftimg4)));
figure(8)
imshow(ifftimg4);
title('高斯低通滤波器滤波')
%空域处理
[p,q]=size(img);
kimg=img;
fori=1:p
for j=1:q
if (kimg(i,j)==255)
if(i>1)
kimg(i,j)=kimg(i-1,j);
else
kimg(i,j)=kimg(i+1,j);
end
end
end
end
figure
imshow(kimg);
title('空域去横条纹')
(2)特殊叠加条纹:1_N_Girl_Grad_lines.bmp
img=imread('D:/VisualStudio 2015/1_N_Girl_Grad_lines.bmp');%读取原图像
figure
imshow(img)
title('原图')
fftimg=fft2(img);%二维离散傅里叶变换
shiftimg=fftshift(fftimg);%直流分量移到频谱中心
re=real(shiftimg);%取傅里叶变换的实部
logfftimg1=log(re);
figure
imshow(logfftimg1,[8,10])
title('原图频谱')
[m,n]=size(shiftimg);%图像尺寸
n1=floor(m/2);
n2=floor(n/2);
d0=65;%截止半径
%高斯高通
shiftimg5=shiftimg;
for i=1:m
for j=1:n
d=sqrt((i-n1)^2+(j-n2)^2);
h=1-exp(-1/2*(d^2/d0^2));
shiftimg5(i,j)=h*shiftimg5(i,j);
end
end
re5=real(shiftimg5);%取傅里叶变换的实部
logfftimg5=log(re5);
figure
imshow(logfftimg5,[8,10])
title('高斯高通滤波器频谱')
shiftimg5=ifftshift(shiftimg5);
ifftimg5=uint8(real(ifft2(shiftimg5)));
figure
imshow(ifftimg5);
title('高斯高通滤波器滤波')
%图像作差
sub_img=img-2*ifftimg5;
figure
imshow(sub_img)
title('作差结果图')
re=real(shiftimg);%取傅里叶变换的实部
logfftimg1=log(re);
figure
imshow(logfftimg1,[8,10])
title('原图频谱')
sub_fftimg=fft2(sub_img);%二维离散傅里叶变换
sub_shiftimg=fftshift(sub_fftimg);%直流分量移到频谱中心
sub_re1=real(sub_shiftimg);%取傅里叶变换的实部
sub_logfftimg1=log(sub_re1);
figure
imshow(sub_logfftimg1,[8,10])
title('作差后频谱')
%理想低通
for i=1:m
for j=1:n
if((i-n1)^2+(j-n2)^2>=d0^2);
sub_shiftimg(i,j)=0;
end
end
end
sub_re=real(sub_shiftimg);%取傅里叶变换的实部
sub_logfftimg=log(sub_re);
figure
imshow(sub_logfftimg,[8,10])
title('理想低通滤波器频谱')
sub_shiftimg=ifftshift(sub_shiftimg);
sub_ifftimg=uint8(real(ifft2(sub_shiftimg)));
figure
imshow(sub_ifftimg);
title('理想低通滤波器滤波')
2.滤除下图中的干扰信号(2_lena_corrupt.bmp)
img=imread('D:/VisualStudio 2015/2_lena_corrupt.bmp');%读取原图像
figure(1)
imshow(img)
title('原图')
fftimg=fft2(img);%二维离散傅里叶变换
shiftimg=fftshift(fftimg);%直流分量移到频谱中心
re=real(shiftimg);%取傅里叶变换的实部
logfftimg1=log(re);
figure(2)
imshow(logfftimg1,[8,10])
title('原图频谱')
[m,n]=size(shiftimg);%图像尺寸
n1=floor(m/2);
n2=floor(n/2);
d0=70;%截至半径
%理想滤波器
shiftimg1=shiftimg;
fori=1:m
for j=1:n
if ((i-n1)^2+(j-n2)^2>=d0^2)
shiftimg1(i,j)=0;
end
end
end
re1=real(shiftimg1);%取傅里叶变换的实部
logfftimg1=log(re1);
figure(3)
imshow(logfftimg1,[8,10])
title('理想滤波器频谱')
shiftimg1=ifftshift(shiftimg1);
ifftimg1=uint8(real(ifft2(shiftimg1)));
figure(4)
imshow(ifftimg1);
title('理想滤波器滤波')
level=3;%3级巴特沃斯滤波器
%巴特沃斯低通
shiftimg2=shiftimg;
fori=1:m
for j=1:n
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+(d/d0)^(2*level));
shiftimg2(i,j)=h*shiftimg2(i,j);
end
end
re2=real(shiftimg2);%取傅里叶变换的实部
logfftimg2=log(re2);
figure(5)
imshow(logfftimg2,[8,10])
title('巴特沃斯低通滤波器频谱')
shiftimg2=ifftshift(shiftimg2);
ifftimg2=uint8(real(ifft2(shiftimg2)));
figure(6)
imshow(ifftimg2);
title('巴特沃斯低通滤波器滤波')
%高斯低通
shiftimg4=shiftimg;
fori=1:m
for j=1:n
d=sqrt((i-n1)^2+(j-n2)^2);
h=exp(-1/2*(d^2/d0^2));
shiftimg4(i,j)=h*shiftimg4(i,j);
end
end
re4=real(shiftimg4);%取傅里叶变换的实部
logfftimg4=log(re4);
figure(7)
imshow(logfftimg4,[8,10])
title('高斯低通滤波器频谱')
shiftimg4=ifftshift(shiftimg4);
ifftimg4=uint8(real(ifft2(shiftimg4)));
figure(8)
imshow(ifftimg4);
title('高斯低通滤波器滤波')