【关键词】:直方图;图像均衡化;灰度;旋转;测时
【摘要】:读入图像,在屏幕上显示图像,得到图像尺寸。查看图像直方图,进行直方图均衡,对图像进行不同的灰度和反差修改。观察不同图像的直方图。在屏幕上显示直方图均衡和灰度调整后的图像及其直方图。将处理后的图像存盘。用imrotate.m函数对图像进行旋转,观察分别采用nearest neighbor,bilinear,bicubic三种方法的图像质量,用tic、toc函数测量所用时间并作比较。
1简介
1.1引言
MATLAB 是目前在国际上被广泛接受和使用的科学与工程计算软件。MATLAB 已经不仅仅解决矩阵与数值计算的软件,更是一种集数值与符号运算、数据可视化图形表示与图形界面设计、程序设计、仿真等多种功能于一体的集成软件。另外,数字图像处理技术涉及光学技术、微电子技术、计算机技术和数学分析等领域,是一门综合性强、应用范围广的新兴学科。具体包括图像视觉基础、图像变换、图像增强、图像恢复、图像压缩、图像编码、图像解码、图像传输、图像识别和图像分析等技术。其理论推导和数学分析很多,而上述理论的验证和工程实现可通过MATLAB完成。因此,数字图像处理与MArIZAB紧密相关。
二:图像处理
2.1图像的直方图均衡化
直方图均衡化(histogram equalization)直方图均衡化是利用直方图的统计数据进行直方图的修改,能有效的处理原始图象的直方图分布情况,使各灰度级具有均匀的概率分布,通过调整图像灰度值的动态范围,自动地增加整个图像的对比度,以致图像具有较大的反差,大部分细节比较清晰. 传统算法根据直方图增强技术理论:设原始图像在(x,y)处的灰度为f,而改变后的图像为g,对于离散图像,则对图像增强的方法为:g=EH(f). EH(f)为映射函数,必须满足两个条件(其中图象的象素总数为n,分L个灰度等级):① EH(f)在0≤f≤L-1范围内是一个单值单增函数;② 对于0≤f≤L-1有0≤g≤L-1. 则直方图均衡化法的映射函数为:gk=EH(fk)==Σk〖〗i=0ni〖〗N=Σk〖〗I=0pf(fi)(k=0,1,2,……,L-1)(0≤fk≤1)根据该方程可以由原图像的各象素灰度值直接得到直方图均衡化后各象素的灰度值[5]. 由于算术计算过程复杂,本文利用MATLAB的Image toolbox工具箱中直方图均衡化histeq()函数同样可以实现对图像的增强,imread()函数用于读入各种图像文件,imshow()函数用于显示图像,imhist()函数用于显示直方图. 在Command Window窗口执行如下命令:clear,close allQ=imread‘’);W=rgb2gray(Q);I=imresize(W,0.75);J=histeq(I);imshow(I);figure,imshow(J);figure,imhist(I);figure,imhist(J);
2.2图像的插值运算与几何旋转
图像的差值运算有三种包括:{'nearest'}:1最邻近线性插值(Nearest-neighbor interpolation);2'bilinear': 双线性插值(Bilinear interpolation);3'bicubic': 双三次插值(或叫做双立方插值)(Bicubic interpolation)
对于最近邻插值来说,输出像素的赋值为当前点的像素点。对于双线性插值来说,输出像素的赋值为2X2矩阵所包含的有效点的加权平均值。对于双三次插值来说,输出像素的赋值为4X4矩阵所包含的有效点的加权平均值。这里的像素的数目直接影响了运算过程的复杂度。因此双线性插补的方法需要的运算时间比邻插补方法需要的时间长。同样双三次插值比双线性插补方法需要的时间要长。
对于图像的几何旋转一般使用函数imrotate(),使用的格式为imrorate(1,2,3)[其中1位置填写对象的名称;2位置填写旋转的角度;3位置填写图像的插值方式也可以不填写那么表示默认];通常情况下将图形的几何旋转与插值方式联合起来使用。
2.3计时:
评价一个算法的好坏的标准一般包括两个方面一个是整个程序所占内存的大小(由于现在计算机的迅速发展,内存的不断扩大这个因素的的影响的已经不大了);另一个就是程序运行的总时间;而测试时间的函数tic toc函数能将程序运行的时间直接显示出来便于程序员优化程序。用法很简单,直接将两个函数分别在整个程序的首尾。
2.4图像均衡化的一般步骤:
处理前 处理后
三:结束语
将数字图像处理理论与MA,I1 AB语言有机地糅合在一起,编程思路简洁、清晰,调试方便、快捷,易于实现,实验效果明显。通过上述两段程序的编程、调试和实现,初学者既可加深对数字图像处理理论的认识,又可熟悉MATLAB语言的应用,还可提高学习兴趣,增强信心,为今后更进一步的数字图像处理技术的学习打下坚实的基础。
参考文献:
1《MATLAB在数字图像处理中的应用Application of MATLAB to Digital Image Processing》(1.武汉军械士官学校;2.军械工程学院) 涂望明 魏友国 施少敏
2《MATLAB环境下的数字图像处理实验入门》张博夫,梁凯琦
3《基于Matlab的X线医学图像增强与直方图处理方法》袁丽婷, 邱力军
附录:
图像的直方图均衡化示例代码1:
>>A=imread('H:\优本小组\\i\\LENA.BMP'); %读入函数
>> j=histeq(A); %图像均衡化
>> figure;subplot(2,2,1);imshow(A); %打开窗口;划分窗口;输出图像
>> subplot(2,2,2);imhist(A); %划分窗口;输出图像直方图
>> subplot(2,2,3);imshow(j); %划分窗口;输出处理后的图像
>>subplot(2,2,4);imhist(j); %划分窗口;输出处理后图像的直方图
图像的插值运算与几何旋转示例代码2:
>>figure;subplot(2,3,1);B=imrotate(A,90,'nearest');imshow(B)
>>subplot(2,3,2);C=imrotate(A,90,'bilinear');imshow(C)
>>subplot(2,3,2);C=imrotate(A,90,'bilinear');imshow(C)
>>subplot(2,3,3);D=imrotate(A,90,'bicubic');imshow(D);
>>subplot(2,3,4);imhist(B)
>>subplot(2,3,5);imhist(C)
>>subplot(2,3,6);imhist(D)
计时示例代码3
>>tic;figure;B=imrotate(A,90,'nearest');imshow(B);toc;
Elapsed time is 1.768582 seconds.
>> tic;figure;C=imrotate(A,90,'bilinear');imshow(C);toc;
Elapsed time is 0.267426 seconds.
>> tic;figure;D=imrotate(A,90,'bicubic');imshow(D);toc;
Elapsed time is 0.171263 seconds.
彩图均衡化示例代码:
>>A=imread('H:\优本小组\图像处理\图片\\LENA.BMP');
>>figure;
>>R=A(:,:,1);;
>> G=A(:,:,2);
>> B=A(:,:,3);
>> figure;
>> subplot(4,2,1);imshow(A);
>> title('原图像');
>> subplot(4,2,2);imshow(R);
>> title('图像的红色分量');
>> subplot(4,2,3);imhist(R);
>> title('图像红色分量的直方图');
>> subplot(4,2,4);imshow(G);
>> title('图像的绿色分量');
>> subplot(4,2,5);imhist(G);
>> title('绿色分量的直方图');
>> subplot(4,2,6);imshow(B);
>> title('图像的蓝色分量');
>> subplot(4,2,7);imhist(B);
>> title('蓝色分量的直方图');
>> r=histeq(R); %对红色分量进行均衡化
>> g=histeq(G); %对绿色分量进行均衡化
>> b=histeq(B); %对蓝色分量进行均衡化
>> figure;
>>subplot(4,2,2);imshow(r);
>>title('图像均衡化后的红色分量');
>>subplot(4,2,3);imhist(r);
>>title('图像均衡化后的红色分量的直方图');
>>subplot(4,2,4);imshow(g);
>>title('图像均衡化后的绿色分量');
>>subplot(4,2,5);imhist(g);
>>title('图像均衡化后的绿色分量的直方图');
>>subplot(4,2,6);imshow(b);
>>title('图像均衡化后的蓝色分量');
>>subplot(4,2,7);imhist(b);
>>title('图像均衡化后的蓝色分量的直方图');
>> figure;
>> new=cat(3,r,g,b); %组合成彩色图像
>> imshow(new);