system: [SYSTEM]

user: 3. 实验结果及分析 3.1. 开发工具介绍 MATLAB是MATrix LABoratory (“矩阵实验室”)的缩写，是由美国MathWorks公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的，功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。 MATLAB的基本数据单位是矩阵，它的指令表达式与数学，工程中常用的形式十分相似，故用MATLAB来解算问题要比用C，FORTRAN等语言完相同的事情简捷得多。 MATLAB包括拥有数百个内部函数的主包和三十几种工具包Toolbox。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算，可视化建模仿真，文字处理及实时控制等功能。学科工具包是专业性比较强的工具包，控制工具包，信号处理工具包，通信工具包等都属于此类。 开放性使MATLAB广受用户欢迎。除内部函数外，所有MATLAB主包文件和各种工具包都是可读可修改的文件，用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。 3.2. Imadjust函数对图像的处理 3.2.1. 通过函数imadjust()调整灰度图像灰度范围 代码1： I = imread('F:layblack.jpg'); J = imadjust(I，[0.2，0.5]，[0，1]); figure subplot(121)，imshow(I); subplot(122)，imshow(J); 实验结果如图8： 图8. 左边是原图，右边是处理后图像 结果分析： 在程序中通过函数imadjust()调整灰度图像的灰度范围。原图像灰度范围为0~255，程序将小于255 × 0.2的灰度值设为0，将大于255 × 0.5的灰度值设为255。 代码2： I = imread('F:layblack.jpg'); J = imadjust(I，[0.5，0.9]，[0，1]); figure subplot(121)，imshow(I);title('原图'); subplot(122)，imshow(J);title('处理后图像') 实验结果如图9： 图9. 左边是原图，右边是处理后图像 结果分析：代码2相对于代码1，更改了[low_in;high_in]的值，对比两个处理后的图像可以得到low_in的值越大，图像就越容易变黑色，而high_in的值越小，就越容易变白色。 3.2.2. 通过函数Imadjust()调整灰度图像的亮度 代码： close all;clear all;clc; %调整灰度图像的灰度和显示亮度 I=imread('F:layblack.jpg'); J=imadjust(I，[0.1 0.5]，[0 1]，0.4);%调整图像灰度并调高亮度 K=imadjust(I，[0.1 0.5]，[0 1]，4);%调整图像灰度并调低亮度 figure， subplot(131)，imshow(uint8(I));title('原图'); subplot(132)，imshow(uint8(J));title('调整图像灰度调高亮度'); subplot(133)，imshow(uint8(K));title('调整图像灰度调低亮度'); 实验结果如图10。 结果分析： 左侧是原图，中间是调整图像灰度并加强亮色值的输出后显示的图像，右侧是调整图像灰度并加强暗色值的输出后显示的图像。之所以处理后的图像一个加强亮色，而另一个加强暗色，是因为它们的Gamma值不同，Gamma曲线是一种特殊的色调曲线，当Gamma值等于1的时候，曲线为与坐标轴成45˚的直线，这个时候表示输入和输出密度相同；当Gamma值大于1的时候，将会造成输出亮化；当Gamma值小于1的时候，将会造成输出暗化。 图10. 左边原图，中间调高亮度图，右边调低亮度图 3.2.3. 通过函数Imadjust()对彩色图像进行增强 代码： close all;clear all;clc; %imadjust()对彩色图像进行增强 I=imread('F:lay.jpg'); J=imadjust(I，[0.2 0.3 0;0.6 0.7 1]，[ ]);%imadjust()对RGB图像进行处理 figure， subplot(121)，imshow(uint8(I)); subplot(122)，imshow(uint8(J)); 实验结果如图11： 图11. 左边是原图，右边是处理后图像 结果分析： 左侧为原图，右侧为处理后的图像，可以看到图像亮度明显增强。 3.3. Histeq函数对图像的处理 3.3.1. Histeq函数对灰度图像的处理 代码： I = imread('F:beijing.jpg'); J = histeq(I); imshowpair(I，J，'montage') axis off figure subplot(121)，imhist(I，64)，title('原图的直方图') subplot(122)，imhist(J，64)，title('直方图均衡化后的直方图') 实验结果如图12和图13所示： 图12. 原图直方图和均衡化后的直方图 图13. 左边是原图，右边是处理后图像 结果分析： 由直方图对比可知，原图像的直方图通过灰度变换函数修正为灰度均匀分布的直方图，同时，histeq函数处理后的图像对比度明显增强。 缺点：1) 变化后图像的灰度级减少，某些细节消失；2) 某些图像，如直方图有高峰，经处理后对比度不自然的过分增强。 3.3.2. Histeq函数对彩色图像的处理 代码1： close all;clc; rgb=imread('F:night.jpg'); % 对饱和度与亮度进行histeq处理 hsv=rgb2hsv(rgb); h=hsv(:，:，1); s=hsv(:，:，2); v=hsv(:，:，3); V=histeq(v); result_hsv=hsv2rgb(h，s，V); % 对RGB每个通道进行histeq处理 r=rgb(:，:，1); g=rgb(:，:，2); b=rgb(:，:，3); R=histeq(r); G=histeq(g); B=histeq(b); result_rgb=cat(3，R，G，B); % 结果显示 montage({rgb，result_hsv，result_rgb}，'Size'，[1 3]) title(原始图像和HSV以及RGB) 实验结果如图14： 图14. 原始图像，HSV图像，RGB图像) 结果分析： 对彩色图像进行直方图均衡化的两种主要策略 [ 8 ]：一种是对R，G，B三个通道分别进行处理；另外一种是转换到另外一个色彩空间中再进行处理，例如HSV (转换后只需要对V通道进行处理即可)。 代码2 clear all;clc;close all; ImgFile='F:lay.jpg'; ImgIn=imread(ImgFile); ImgHistEq=histeq(ImgIn，256); figure;subplot(121);imshow(uint8(ImgIn));title('原图'); subplot(122);imshow(ImgHistEq);title('全局灰度增强 - 直方图均衡'); figure;subplot(121);imhist(ImgIn，256); axis([0 255 0 1e4]);title('原图的直方图'); subplot(122);imhist(ImgHistEq，256);axis([0 255 0 1e4]);title('直方图均衡化后的直方图'); 实验结果如图15和图16所示： 图15. 左边是原图，右边是处理后图像 图16. 原图直方图和均衡化后的直方图 结果分析：用histeq和imadjust处理同一张彩色图像，histeq处理后的视觉效果明显好于imadjust。 3.4. Adapthisteq函数对图像处理 3.4.1. Adapthisteq函数对灰度图像处理 代码： I = imread('F:beijing.jpg'); J = adapthisteq(I，'clipLimit'，0.02); imshowpair(I，J，'montage');%%使用蒙太奇显示图像，把大小相同的连续图像显示出来 title('原始图像 (left) and 对比度增强后图像 (right)') 实验结果如图17： 图17. 左边是原图，右边是处理后图像 结果分析： 用adapthisteq处理图像，设置Cliplimit为0.02用来限制对比度，Cliplimit值越高对比度越强，处理后的图像细节越突出。 3.4.2. Adapthisteq函数对彩色图像处理 代码： RGB = imread('F:night.jpg'); %imshow(RGB) I = rgb2gray(RGB); %figure %imshow(I) montage({RGB，I}，'Size'，[1 2])，title('原图和灰度图像') g1 = adapthisteq(I); g2 = adapthisteq(I， 'NumTiles'， [25 25]); g3 = adapthisteq(I， 'NumTiles'， [25 25]， 'ClipLimit'， 0.05); figure%%图1 subplot(221)，imshow(I)，title('原图像'); subplot(222)，imshow(g1)，title('默认值图像'); subplot(223)，imshow(g2)，title('设置参数NumTiles为[25 25]的图像'); subplot(224)，imshow(g3)，title('使用小片数量，且ClipLimit=0.05的图像'); %%更改参数以后 g4 = adapthisteq(I); g5 = adapthisteq(I， 'NumTiles'， [25 25]， 'ClipLimit'， 0.08); g6 = adapthisteq(I， 'NumTiles'， [25 25]， 'ClipLimit'， 0.08， 'NBins'，255); figure%%图2 subplot(221)，imshow(I)，title('原图像'); subplot(222)，imshow(g4)，title('默认值图像'); subplot(223)，imshow(g5)，title('使用小片数量，且ClipLimit=0.08的图像'); subplot(224)，imshow(g6)，title('使用小片数量，且ClipLimit=0.08的图像，且NBins=255'); 实验结果如图18，图19和图20： 图18. 原图和灰度图像 图19. 左上为原图，右上为默认值图像，下面为设置参数的图像 图20. 左上为原图，右上为默认值图像，下面为设置参数的图像 结果分析： 从上图中所示的结果相比较，设置参数会增加细节。比如说，设置“ClipLimit”参数，值越高对比度则越高。就图19和图20左下方的两幅图相比较，同样的NumTiles[ 2525 ]，但“ClipLimit”不同，图19的“ClipLimit”为0.01(默认值)，图20的“ClipLimit”为0.08 (自己设置的)，得到的图像图20的图像细节比图19的多很多。图19与图20中右下方的两幅图对比，只是添加了一个参数“NBins”，255，得到的结果也不一样。由于图像中对比度增大，图像中出现了棋盘效应。 3.5. Imadjust、Histeq、Adapthisteq三种函数对图像处理的比较 对灰度图像处理结果如图21： 图21. 原图和imadjust图像，histeq图像，adapthisteq图像 对彩色图像处理结果如图22： 图22. 原图和imadjust图像，histeq图像，adapthisteq图像