Matlab实现指纹去噪增强

数字图像处理:指纹去噪增强

一、实验要求

指纹去噪,并细化指纹。原图如下图所示。
Matlab实现指纹去噪增强_第1张图片

待处理原图

二、matlab实现

指纹图像去噪增强分为7个步骤:二值化、去噪、腐蚀、锐化、细化、膨胀、平滑。

1.二值化

将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。

I=imread('finger.png');
I=rgb2gray(I);
level=graythresh(I);
I=imbinarize(I,level);

Matlab实现指纹去噪增强_第2张图片

二值化

2.去噪

图像平滑的主要目的是减少图像噪声。图像噪声来自于多方面,有来自于系统外部的干扰(如电磁波或经电源窜进系统内部的外部噪声),也有来自于系统内部的干扰(如摄像机的热噪声、电器机械运动而产生的抖动噪声等内部噪声)。实际获得的图像都因受到干扰而含有噪声,噪声产生的原因决定了噪声分布的特.性及与图像信号的关系。减少噪声的方法可以在空间域或频率域处理。在空间域中进行时,基本方法就是求像素的平均值或中值;在频率域中则运用低通滤波技术。图像平滑总是要以一定细节模糊为代价,因此如何尽量平滑掉图像的噪声,又尽量保持图像细节,是图像平滑研究的主要问题之一。
此处我们使用的是中值滤波的方法处理。中值滤波是一种非线性处理技术,由于它在实际运算过程中并不需要知道图像的统计特性,所以比较方便。在一定的条件下,中值滤波可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声非常有效;但是,对一些细节多,特点是点、线、尖顶细节较多的图像则不宜采用中值滤波的方法。中值滤波的目的是在保护图像边缘的同时,去除噪声。

I1=medfilt2(I,[10,10]);
figure();
imshow(I1);
title('denoise image');

Matlab实现指纹去噪增强_第3张图片

去噪

3.腐蚀

指纹图像腐蚀运算后使得指纹纹路更细,便于后续的处理,但会指纹图像显得模糊。

s=ones(4,4);
I2=imerode(I1,s);
figure();
imshow(I2);
title('erosion');

Matlab实现指纹去噪增强_第4张图片

腐蚀

4.锐化

图像锐化即对图像进行处理,使图像的边缘变得鲜明。目的是为了突出图像的边缘信息,加强轮廓特征,以便于人眼的观察和机器的识别对比。
这里我们采用Sobel算子对图像增强。

I3=double(I2);
h=fspecial('sobel');
K=filter2(h,I3);
K1=I3-K;
figure();
imshow(K1);
title('锐化');

Matlab实现指纹去噪增强_第5张图片

锐化

5.细化

细化又称为骨骼化,是指在不影响图像的拓扑关系的情况下,将图像中宽度大于一个像素的线条转变为只有一个像素宽度的图像的处理过程。

K=bwmorph(K1,'thin','inf');
figure();
imshow(K);
title('细化');

Matlab实现指纹去噪增强_第6张图片

细化

6.膨胀

膨胀就是使用算法,将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。

circle=strel('disk',2);
B=imdilate(K,circle);
figure();
imshow(B);
title('膨胀');

Matlab实现指纹去噪增强_第7张图片

膨胀

7.去毛刺

腐蚀就是使用算法,将图像的边缘腐蚀掉。作用就是将目标的边缘的“毛刺”踢除掉。膨胀就是使用算法,将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。使用相同次数的腐蚀与膨胀,可以使目标表面更平滑。即可去除毛刺

s=ones(3,3);
I2=imerode(B,s);
figure();
imshow(I2);

Matlab实现指纹去噪增强_第8张图片

去毛刺(再次腐蚀)

你可能感兴趣的:(数字图像处理,matlab,计算机视觉,图像处理)