图像增强方法之空域增强(1)

       我们常接触过“图像处理”这个名词,无论是生活还是工作,拍照P图运用到图像处理,指纹识别也需要用到图像处理,下面我就与大家一同去接触下matlab中的图形处理部分。

      图像处理,分为三个阶段:A、图像预处理  B、特征抽取阶段 C、识别分析阶段 。俗话说:“万事开头难”,图像预处理阶段是尤为重要的环节,处理不好,后面的任务就无法顺利地开展。图像预处理方法有两种,图像增强与图像复原。图像增强方法包括了空域法和频域法,图像复原方法则是建立“降质模型”。而再进一步深入,空域增强法又可分为两类:
(1)基于像素点,处理对象是图像的每个像素     (2)基于模板,处理对象是小的子图像(模板)


这次,我们就先接触认识下图像增强中空域变换增强方法。在这之前,先谈下一些基础知识,帮助大家,特别是像我这类刚入门的新手,能够扎实基础,方便后面的展开。


a.“灰度”这个词我们并不陌生,但是估计也有不少人不明所以。其实它就是指亮度的明暗程度,主要用于传送图片,分别有16级、32级、64级。灰度就是没有色彩,RGB色彩分量全部相等。

b.“灰度图像”,这个非常重要,它是指一种具有从黑到白256级灰度色阶或等级的单色图像。该图像中的每个像素用8位数据表示,因此像素点值介于黑白间的256种灰度中的一种。该图像只有灰度等级,而没有颜色的变化。在Photoshop中,将灰度图像作为一种颜色通道的数字图像。

c.灰度级:所谓颜色或灰度级指黑白显示器中显示像素点的亮暗差别,在彩色显示器中表现为颜色的不同,灰度级越多,图像层次越清楚逼真。

---------------------------------------------------------------------------------------------------------------------------------------------
接下来,我们就进入正文。空域增强中有直接灰度调整方法,其中涉及到许多函数,通过其中几个重要函数的功能,我们就能清楚了解这种调整。补充说明的是,下面函数的语法格式并不是完整的,我仅是针对入门选取最简单的说明。


1.impixel函数:得到像素的数据


语法格式:[C,R,P]=impixel(X,MAP)


注:X-输入图像  MAP-索引图像的调色板(非索引图像无此参数)
    C-指定像素的颜色  R,P-像素坐标


      如果在输入图像参数后面给出指定像素坐标值,将返回指定像素颜色值;否则,进入交互方式,根据鼠标在图像上单击的位置返回颜色值。

例:

        RGB=imread('1.bmp');
        pixels=impixel(RGB)



 
2.improfile函数:得到图像中一条线段或多条线段强度值,并绘制成图形。

例:
%绘制彩色图像的强度值
I=imread('2.jpg');
subplot(1,2,1);imshow(I);
x=[35 338 346 103];
y=[253 250 17 148];
subplot(1,2,2);improfile(I,x,y),grid on

3.imhist函数:显示指定图像的直方图(数字图像处理中,最简单有用的工具)

【灰度直方图是灰度级的函数,描述图像中具有该灰度级的像素的个数】

例:

%显示图像的直方图
I=imread('1.bmp');
subplot(1,2,1);imshow(I);
title('原图像');
%axis square;
subplot(1,2,2);imhist(I);
title('图像的直方图');
%axis square;

4.imadjust函数:实现图像的灰度级变换,将图像的灰度值映像扩展为新的数值范围。——扩展对比度

语法格式:J=imadjust(I,[low_in high_in],[low_out high_out],gamma)

不管I属于哪一类,此处指定的强度值的范围均为[0,1]。gamma是一个可选的参数,一般来说灰度间的映像是直线的,也可以调整gamma参数变为非线性的。

例:

I=imread('3.png');
J=imadjust(I,[0.15 0.9],[0,1]); %进行直方图变换
subplot(1,2,1);
imshow(J);
subplot(1,2,2);
imhist(J)


对于低值灰度图像,使用对数变换效果更好。可以扩展低值灰度,压缩高值灰度,使低值灰度的图形细节更容易看清。

对数变换的灰度映像表达式: g(x,y)=log(f(x,y)+1)

例子:

 I=imread('3.png');
J=imadjust(I,[0.15 0.9],[0,1]);
subplot(1,2,1);
imshow(I);
I=double(I); %对数运算不支持unit8类型,将图像转换为double类型
J=log(I+1); %进行灰度的对数转换
subplot(1,2,2);
imshow(mat2gray(J))

附注:mat2gray实现图像矩阵的归一化操作。[1]  所谓"归一化"就是使矩阵的每个元素的值都在0和1之间。该函数在数字图像处理

中经常用到。

I = mat2gray(A, [amin amax])

猜你喜欢

转载自459838660.iteye.com/blog/2196821