实验报告
班级:08108班
姓名:王胤鑫 09号 学号:08210224
一、实验内容
给出噪声图像,请选择合适的图像增强算法,给出你认为最优的增强后的图像。 可以使用Matlab - Image Processing Toolbox 中的处理函数。 原始图像如下:
二、算法分析
对于给出的图像中有灰色的噪声,因此首先处理灰色的线条,根据其方差的大小来判断其所在行。对于两条白色的噪声,根据与前后两行的对比来判断其所在位置。程序中设定灰色线条处理的均方差门限为,白线处理的标准为与前后两行的差值超过(转换为double型)。滤除噪声之后再通过中值滤波、拉普拉斯图像增强等方式对图像进行处理。
三、matlab 源程序
clear all;clc; f=imread('');
figure,imshow(f),title('原始图像'); [m,n]=size(f);
f0= im2double(f); % 整型转换为 double 类 f1=f0;
std_i=zeros(1,m-2); %灰线处理 for i=2:m-1 %灰线处理
std_i(i-1)=std(f0(i,:)); if(std_i(i-1)< for j=1:m
f0(i,j)=(f0(i-1,j)+f0(i+1,j))/2; end end end
figure,imshow(f0),title('滤除灰线后的图像'); fz=f0-f1;
[r,c]=find(fz~=0);%寻找灰线噪声的位置 f2=f0; change=0; count=0; for i=3:m-2 %白线处理 for j=1:m
if(abs(f0(i,j)-f0(i-1,j))>&&abs(f0(i,j)-f0(i+1,j))> count=count+1; end
if(count>n* count=0; change=1; break; end end
if(change==1) for k=1:m
f0(i,k)=(f0(i-1,k)+f0(i+1,k))/2; end
change=0; count=0; end end
figure,imshow(f0),title('滤除白线后的图像'); fz1=f2-f0;
[r1,c1]=find(fz1~=0); %寻找白线噪声的位置 fn = medfilt2(f0); %反射对称填充
figure, imshow(fn),title('中值滤波后的图像');
f0 = im2double(fn); % 整型转换为 double 类 g =2*f0- imfilter(f0,w4, 'replicate'); % 增强后的图像 figure, imshow(g),title('高提升滤波图像(A=2)');
四、图像处理结果
五、结果分析
从上面结果可以看出,带状噪声处理部分,已经基本将带状噪声去除。并且通过程序找出了灰色噪声所在行为192,白色噪声所在行为179,182.
程序中的判断条件为白色噪声和前后两行的像素值相差超过一定的范围(double类型),并且此类点在一行中所在的比例超过80%,与给出的原始图像对应。有程序结果可知,处理过程中仅仅对噪声所在行做了修正,除此之外并且未引入任何其他人为噪声。
而对于处理之后的图像存在的椒盐噪声,经过中值滤波器已经基本可以将椒盐噪声处理的比较好。
另外,程序中也做了A=2的高提升滤波,增强了原始信息,有图可以看出,除了细节增强意外,原始信息更加丰富,因此比之前的图像明亮许多。
因篇幅问题不能全部显示,请点此查看更多更全内容