图像处理作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业要求:自选一幅图片,结合图像处理与分析的步骤依次进行图像增强,分割,特征提取和识别,给出每步具体使用的算法,附上原始图和各步骤处理后获取的图像处理结果。

一、图像增强

图像增强可分成两大类:频率域法和空间域法。

前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。

后者空间域法中具有代表性的算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。本文采用空间域增强技术中的中值滤波。

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

Matlab程序:

I=imread('jiqimao.jpg');

imshow(I);

J=rgb2gray(I);

J0=imnoise(J,'salt & pepper');

figure,imshow(J0);

w=[1 2 1;2 4 2; 1 2 1]/16;

J1=imfilter(J0,w,'corr','replicate');

figure,imshow(J1);

w=[1 1 1;1 1 1; 1 1 1]/9;

J2=imfilter(J0,w,'corr','replicate');

figure,imshow(J2);

J3=medfilt2(J0,[3,3]);

figure,imshow(J3);

subplot(3,2,1);imshow(I);title('0');

subplot(3,2,2);imshow(J);title('1');

subplot(3,2,3);imshow(J0);title('2');

subplot(3,2,4);imshow(J1);title('3');

subplot(3,2,5);imshow(J2);title('4');

subplot(3,2,6);imshow(J3);title('5');

运行结果:

图1 几种滤波器对于椒盐噪声污染图像的性能比较图0:原图像;

图1: 转化为灰度图像;

图2:椒盐噪声污染的图像;

图3:3*3高斯平滑效果;

图4:3*3平均平滑效果;

图5:3*3中值滤波效果。

结果分析:从图1中,可见线性平滑滤波在降噪的同时不可避免地造成了模糊,而中值滤波在有效抑制椒盐噪声的同时模糊效应明显低得多,因而对于椒盐噪声污染的图像,中值滤波要远远优于线性平滑滤波。

二、图像分割

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。本文采用基于边缘的分割方法。

Canny边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛应用于各种计算机视觉系统。Canny发现,在不同视觉系统上对边缘检测的要求较为类似,因此,可以实现一种具有广泛应用意义的边缘检测技术。Canny边缘检测算法可以分为以下5个步骤:

1)使用高斯滤波器,以平滑图像,滤除噪声。

2) 计算图像中每个像素点的梯度强度和方向。

3) 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。

4) 应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。

5) 通过抑制孤立的弱边缘最终完成边缘检测。

Matlab程序:

intensity=imread('jiqimao.jpg');

figure,imshow(intensity);

intensity=rgb2gray(intensity);

figure,imshow(intensity);

bw1=edge(intensity,'sobel');

bw2=edge(intensity,'prewitt');

bw3=edge(intensity,'roberts');

bw4=edge(intensity,'log');

bw5=edge(intensity,'canny');

subplot(3,2,1);imshow(intensity);title('0'); subplot(3,2,2);imshow(bw1);title('1'); subplot(3,2,3);imshow(bw2);title('2'); subplot(3,2,4);imshow(bw3);title('3'); subplot(3,2,5);imshow(bw4);title('4'); subplot(3,2,6);imshow(bw5);title('5');

运行结果:

图2 几种算法的结果比较

图0:原图像

相关文档
最新文档