for m=1:256
for n=1:256
if (m<=row)&(n<=col)
extendx(m,n)=g(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2);
imshow(extendx,[]);
else
M=max(row,col);
for m=1:M
for n=1:M
if (m<=row)&(n<=col)
extendx(m,n)=g(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2);
imshow(extendx,[]);
msgbox('The output image has a width or height larger than 256!','HELP','help');
end
handles.imdata=g;
guidata(hObject, handles);
5.5 图像增强
5.5.1 平滑去噪
平滑运算的目的是消除或尽量减少噪音,改善图像的质量,为了更好的显示平滑去噪的效果,在本系统中,先对图像进行加噪处理,然后再平滑去噪。从信号分析的观点来看,图像平滑本质上是低通滤波,它通过信号的低频部分,阻截高频的噪音信号。下图5.13即为平滑去噪在系统中的运行结果。
图5.13 加噪平滑后的图像
加噪平滑的代码如下:
function AddNoise_Callback(hObject, eventdata, handles)
f=handles.imdata;
[M,N]=size(f);
f1=imnoise(f,'salt & pepper',0.04);
extendx=double(zeros(256));
if (M<=256)&(N<=256)
W=256;
else
W=max(M,N);
end
for m=1:W
for n=1:W
if (m<=M)&(n<=N)
extendx(m,n)=f1(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(f1)),max(max(f1))]);
handles.imdata=f1;
guidata(hObject, handles);
5.5.2 图像锐化
在图像识别中,需要有边缘鲜明的图像,即图像的锐化。图像锐化的目的是为了突出图像的边缘信息,加强图像的轮廓特征,以便于人眼的观察和机器的识别。然而边缘模糊时图像中常出现的质量问题,由此造成的轮廓不清、线条不鲜明,使图像特征提取、识别和理解难以进行。增强图像边缘和线条,使图像边缘变得清晰的处理成为图像锐化。下图5.14为本系统中对图像锐化的结果图。
图5.14 梯度锐化 基于MATLAB的图像编辑软件开发(16):http://www.751com.cn/jisuanji/lunwen_541.html