1、实验一 图像增强和图像分割实验(1)分别用图中给出的直线和曲线作为增强函数进行增强,比较它们的效果并讨论其特点。线性变换 对指数变换图片 1 图片 2实验步骤:1. 在 MATLAB 中编写灰度图像的线性变换点运算程序图片 1 处理程序I=imread(图片 1.png); %读入原图像I=im2double(I); %转换数据类型为 doubleM,N=size(I);figure(1);imshow(I);%显示原图像title(原图像);figure(2);I=rgb2gray(I);E2(s)E3(s)E1(s)L-1L-1E5(s)E4(s)L-1L-1%转化为灰度图像H,x=imh
2、ist(I,64);stem(x,(H/M/N),.);title(原图像);%tan=30a=sqrt(3)/3;b=0;y=a.*I+b;figure(3);imshow(y);title(tan=30);figure(4);H,x=imhist(y,64);stem(x,(H/M/N),.);title(tan=30);%tan=45a=1;b=0;y=a.*I+b;figure(5);imshow(y);title(tan=45);figure(6);H,x=imhist(y,64);stem(x,(H/M/N),.);title(tan=45);%tan=60a=sqrt(3);b=
3、0;y=a.*I+b;figure(7);imshow(y);title(tan=60);figure(8);H,x=imhist(y,64);stem(x,(H/M/N),.);title(tan=60);实验结果如下图所示:代代代图片 1 的原图像tan=30图片 1 的 30 度线性变换图像tan=45图片 1 的 45 度线性变换图像tan=60图片 1 的 60 度线性变换图像0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.0050.010.0150.020.025 代代代0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
4、100.0050.010.0150.020.0250.030.0350.04 tan=30原图像的直方图 30 度变换后直方图0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.0050.010.0150.020.025 tan=450 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.0050.010.0150.020.025 tan=6045 度变换后的直方图 60 度变换后直方图图片 2 处理程序参考图片 1 处理程序。图片 2 实验结果如图所示:代代代图片 2 原图像tan=3030 度变换后图像tan=4545 度变换后图
5、像tan=6060 度变换后图像2. 实验结果分析由实验结果可以看出,当按照 30 度线性变换后图像变暗,按照 45 度变换后图像没有任何改变,按照 60 度变换后图像变亮,由变换后的直方图可以确认像素点的变化。由以上分析可以得出,当线性变换函数的斜率大于 1 时,图像的对比度将增大;当线性变换的斜率小于时,图像的对比度将减小;当线性变换函数的斜率等于 1 时,图像的对比度不变,只是像素点整体的移动。虽然线性变换可以改变对比度,但是对图像的细节部分增强有限。1. 在 MATLAB 中编写灰度图像的对指数点运算程序图片 1 对数处理程序:I=imread(图片 1.png); %读入原图像I=i
6、m2double(I); %转换数据类型为 doubleI=rgb2gray(I);figure(1);imshow(I); %显示原图像title(原图像);figure(3);H,x=imhist(I,64);stem(x,(H/M/N),.);title(原图像);figure(2);y=log(I+1);imshow(I);title(对数变换);figure(4);H,x=imhist(y,64);stem(x,(H/M/N),.);title(对数变换);实验结果如下图所示:0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.010.020.030.
7、040.050.060.070.08 代代代0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.010.020.030.040.050.060.070.080.09 代代代代图片 1 直方图 图片 1 对数变换直方图代代代代对数变换后图像图片 1 指数处理程序:I=imread(图片 1.png); %读入原图像I=im2double(I); %转换数据类型为 doubleI=rgb2gray(I);M,N=size(I);figure(1);imshow(I); %显示原图像title(原图像);figure(3);H,x=imhist(I,64);stem(
8、x,(H/M/N),.);title(原图像);figure(2);imshow(imadjust(I,3);figure(4);H,x=imhist(imadjust(I,4),64);stem(x,(H/M/N),.);title(指数变换);实验结果如下图所示:0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.010.020.030.040.050.060.070.08 代代代0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.10.20.30.40.50.60.7 代代代代图片 1 直方图 指数变换后直方图图片 1 指数
9、变换后图像图片 2 对指数处理程序参考图片 1 处理程序。对指数处理结果如图所示:代代代代图片 2 指数变换后图像0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.020.040.060.080.10.120.140.160.180.2 代代代0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.020.040.060.080.10.12 代代代代图片 2 直方图 指数变换后直方图0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 100.020.040.060.080.10.120.140.160.18
10、代代代代对数变换后直方图代代代代图片 2 对数变换后图像2. 实验结果分析A、对数变换采用对数变换,当函数自变量为低值时,曲线斜率很高;自变量为高值时,曲线斜率变小。由变换后图像和直方图可以得出,对数变换是增强图像中较暗的细节,从而可用来扩展被压缩的高值图像中较暗的像素。B、指数变换对数变换采用的是伽玛变换(1) ,同理图像的高灰度区域对比度得到增加。因为伽玛变换变换不是线性变换,不仅可以改变图像的对比度,还能够增强细节,从而带来整体图像效果的增强和改善。(2)分别用 Roberts 算子、Sobel 算子、LoG 算子和 Canny 算子进行边缘检测,比较它们的效果并讨论其特点;图片 3 图
11、片 4实验步骤:1. 在 MATLAB 中编写检测程序I=imread(图片 3.png);bw1=edge(I,roberts);bw2=edge(I,sobel);bw3=edge(I,log);bw4=edge(I,canny);figure(1);imshow(I);title(原图像);figure(2);imshow(bw1);title(roberts);figure(3);imshow(bw2);title(sobel);figure(4);imshow(bw3);title(log);figure(5);imshow(bw4);title(canny);实验结果如图所示:ro
12、berts图片 3 经过 roberts 算子检测的图像sobel图片 3 经过 sobel 算子检测的图像log图片 3 经过 LoG 算子检测的图像canny图片 3 经过 canny 算子检测的图像图片 4 处理程序参考图片 3 处理程序。实验结果如下图所示:roberts sobelroberts 处理后图像 sobel 处理后图像log cannyLoG 处理后图像 canny 处理后图像2. 实验结果分析由实验结果可以看出:Roberts 利用局部差分算子寻找边缘,边缘定位精度较高,但是容易丢失一部分边缘,同时由于图像没经过平滑处理,因此不具备抑制噪声的能力,所以对含噪声少的图像的
13、处理效果较好;Sobel 算子考虑了邻域信息,相当于对图像先做加权平滑处理,然后再做微分运算,虽然能够对噪声有抑制效果,但不能完全排除检测结果中出现的虚假边缘。对边缘定位准确,但检测出的边缘容易出现多像素宽度;LoG 算子即高斯-拉普拉斯算子,克服了拉普拉斯抗噪声比较差的缺点,但在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉,造成这些尖锐的边缘无法被检测到,但是相对于 Roberts 算子和 Sobel 算子处理结果稍好;Canny 算子:在图像边缘检测中,抑制噪声和边缘精确定位是无法同时瞒足的,Canny 算子在力图在抗干扰和精确定位之间寻求最佳的折中方案。由图像处理结果可以看出,效果
14、较前三者边缘更细腻、清楚。从边缘定位的精度看:Roberts 算子和 LoG 算子定位精度更高。从对不同方向边缘的敏感性而言:Sobel 算子检测斜向阶跃边缘效果较好;Roberts 算子检测水平和垂直边缘效果较好;LoG 算子不具备边缘方向检测能力;Soberl 算子可以提供最精确的边缘方向估计。从去噪能力看:Roberts 算子和 LoG 算子虽然定位精度较高,但受噪声影响大。从总体效果来衡量,Canny 算子给出了一种边缘定位精确性和抗噪声干扰性的较好折中。(3)采用不同阈值化方法(固定阈值、迭代阈值、Otsu 阈值等)对图像进行分割,比较它们的效果并讨论其特点;图片 5 图片 6实验步
15、骤:1. 固定阈值: I=imread(图片 5.png);figure(1);imshow(I);title(原图像);figure(2);imhist(I);title(直方图);i=1;j=1;for i=1:1:256for j=1:1:256if (I(i,j)=TK)iForeground=iForeground+1;ForegroundSum=ForegroundSum+double(tmp); %前景灰度值elseiBackground=iBackground+1;BackgroundSum=BackgroundSum+double(tmp);endendendZO=Foreg
16、roundSum/iForeground; %计算前景和背景的平均值ZB=BackgroundSum/iBackground; TKTmp=uint8(ZO+ZB)/2;if(TKTmp=TK )bcal=0;elseTK=TKTmp;end %当阈值不再变化的时候,说明迭代结束enddisp(strcat(迭代后的阀值:,num2str(double(TK); %显示最终阈值newI=im2bw(I,double(TK)/255);figure(1);imshow(I);title(原始图像);figure(2);imshow(newI);title(迭代法分割) 实验结果:迭代后的阀值:1
17、28代 代 代 代 代图片 5 迭代分割图片 6 处理过程同上,实验结果如图所示:迭代后的阀值:104代 代 代 代 代图片 6 迭代分割3. Otsu 阈值:I = imread(图片 5.png);level = graythresh(I);BW = im2bw(I,level);figure(1);imshow(I);title(原图像);figure(2); imshow(BW);title(otsu);实验结果:Level=0.5137otsuOtsu 阈值分割图片 6 处理过程同上,实验结果如下:Level=0.4039;otsuOtsu 阈值分割4. 实验结果分析固定阈值:由图片
18、 5 和图片 6 的处理结果看出,固定阈值适合具有明显双峰的图像,但是当两个峰值相差很远时不适用,而且容易受到噪声的干扰,进而导致阈值的选取误差。又因为直方图是各灰度的像素统计,其峰值和谷底并不一定代表目标和背景,所以没有图像其他方面的知识,只靠直方图进行图像分割是不一定准确的。迭代阈值:基本思想是:开始选择一个阈值作为初始值,然后按照某种方法不断更新这个阈值,直到满足给定的条件为止。由处理结果可以看出,迭代阈值法不需要再依靠直方图或其他方法给出分割阈值,就能够很好的分割图像。对于图片 6 效果不是很好。Otsu 阈值:Otsu 阈值又称最大类间方差法,函数 Graythresh 可以自适应地
19、确定变换所用的最优阈值。由图像处理结果可以看出,对于简单图像处理效果稍好,但是对于复杂图像的处理效果不好,常常给物体的边缘带来误差。(4)对于 2 幅不同的纹理图像,计算其灰度共生矩阵及相关的二次统计量(能量、惯性、相关性、熵等) ,并比较有何不同?从这些统计量中可以看出纹理图像有何特点?图片 7 图片 8实验步骤:1. 实验程序%基于共生矩阵纹理特征提取,d=1,=0,45,90,135共四个矩阵%所用图像灰度级均为 256Gray = imread(图片 7.png);M,N = size(Gray);I= zeros(M, N);I= ( Gray - rem(Gray, 8) ) /
20、8;figure(1); imshow(Gray, ); title(256 * 256);figure(3);imhist(Gray);figure(2); imshow(I, ); title(8 * 8);figure(4);imhist(I);%-%计算四个共生矩阵 P,取距离为 1,角度分别为0,45,90,135%-P = zeros(8,8,4);for m = 1:8for n = 1:8for i = 1:Mfor j = 1:Nif j1P(n,m,2) = P(m,n,2);endif iMP(n,m,3) = P(m,n,3);endif iMP(n,m,4) = P(
21、m,n,4);endendendif m=nP(m,n,:) = P(m,n,:)*2;endendend%-% 对共生矩阵归一化%-for n = 1:4P(:,:,n) = P(:,:,n)/sum(sum(P(:,:,n);end %-%4.对共生矩阵计算能量、熵、惯性矩、相关 4 个纹理参数%-H = zeros(1,4);I = H;Ux = H; Uy = H;deltaX= H; deltaY = H;C =H;for n = 1:4E(n) = sum(sum(P(:,:,n).2); %能量for i = 1:8for j = 1:8if P(i,j,n)=0H(n) = -
22、P(i,j,n)*log(P(i,j,n)+H(n); %熵endI(n) = (i-j)2*P(i,j,n)+I(n);%惯性矩Ux(n) = i*P(i,j,n)+Ux(n); %相关性中 xUy(n) = j*P(i,j,n)+Uy(n);%相关性中 yendendendfor n = 1:4for i = 1:8for j = 1:8deltaX(n) = (i-Ux(n)2*P(i,j,n)+deltaX(n); %相关性中 xdeltaY(n) = (j-Uy(n)2*P(i,j,n)+deltaY(n); %相关性中 yC(n) = i*j*P(i,j,n)+C(n); ende
23、ndC(n) = (C(n)-Ux(n)*Uy(n)/deltaX(n)/deltaY(n); %相关性 end%-%求能量、熵、惯性矩、相关的均值和标准差作为最终 8 维纹理特征%-b1 = sqrt(cov(E); a1 = mean(E) ;b2 = sqrt(cov(H); a2 = mean(H) ;b3 = sqrt(cov(I); a3 = mean(I);b4 = sqrt(cov(C) ;a4 = mean(C);sprintf(0,45,90,135 方向上的能量依次为: %f, %f, %f, %f,E(1),E(2),E(3),E(4) % 输出数据;sprintf(0
24、,45,90,135 方向上的熵依次为: %f, %f, %f, %f,H(1),H(2),H(3),H(4) % 输出数据;sprintf(0,45,90,135 方向上的惯性矩依次为: %f, %f, %f, %f,I(1),I(2),I(3),I(4) % 输出数据;sprintf(0,45,90,135 方向上的相关性依次为: %f, %f, %f, %f,C(1),C(2),C(3),C(4) %输出数据;2. 实验结果如下所示:图片 7 的结果:ans =0,45,90,135 方向上的能量依次为: 0.170495, 0.143078, 0.164191, 0.141377ans
25、 =0,45,90,135 方向上的熵依次为: 2.223837, 2.366822, 2.239749, 2.389057ans =0,45,90,135 方向上的惯性矩依次为: 0.671650, 0.907801, 0.640556, 0.982820ans =0,45,90,135 方向上的相关性依次为: 0.672787, 0.543289, 0.677332, 0.507081共生矩阵:P(:,:,1) =0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0.0017 0.0036 0.0017 0.0003 0.00060 0
26、0 0.0036 0.0221 0.0293 0.0102 0.00190 0 0 0.0017 0.0293 0.0781 0.0537 0.01970 0 0 0.0003 0.0102 0.0537 0.1152 0.09410 0 0 0.0006 0.0019 0.0197 0.0941 0.3527P(:,:,2) =0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0.0035 0.0039 0.0007 0.00070 0 0 0.0035 0.0184 0.0326 0.0160 0.00640 0 0 0.0039 0
27、.0326 0.0801 0.0564 0.02620 0 0 0.0007 0.0160 0.0564 0.0950 0.10180 0 0 0.0007 0.0064 0.0262 0.1018 0.3099P(:,:,3) =0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0.0019 0.0044 0.0019 0.0006 0.00030 0 0 0.0044 0.0246 0.0325 0.0079 0.00220 0 0 0.0019 0.0325 0.0840 0.0581 0.01480 0 0 0.0006 0.0079
28、 0.0581 0.1105 0.09600 0 0 0.0003 0.0022 0.0148 0.0960 0.3411P(:,:,4) =0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0.0029 0.0039 0.0021 0.00070 0 0 0.0029 0.0150 0.0358 0.0172 0.00570 0 0 0.0039 0.0358 0.0744 0.0576 0.03260 0 0 0.0021 0.0172 0.0576 0.0859 0.09810 0 0 0.0007 0.0057 0.0326 0.
29、0981 0.3114图片 8 的结果:ans =0,45,90,135 方向上的能量依次为: 0.375000, 1.000000, 0.375000, NaNans =0,45,90,135 方向上的熵依次为: 1.039721, 0.000000, 1.039721, NaNans =0,45,90,135 方向上的惯性矩依次为: 0.500000, 0.000000, 4.500000, NaNans =0,45,90,135 方向上的相关性依次为: -1.777778, NaN, -0.197531, NaN共生矩阵:P(:,:,1) =0 0 0 0 0 0 0 00 0 0 0
30、0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0.25000 0 0 0 0 0 0.2500 0.5000P(:,:,2) =0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 1P(:,:,3) =0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0
31、 0 0 0 0 0 00 0 0 0 0 0 0 0.25000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0.2500 0 0 0.5000P(:,:,4) =NaN NaN NaN NaN NaN NaN NaN NaNNaN NaN NaN NaN NaN NaN NaN NaNNaN NaN NaN NaN NaN NaN NaN NaNNaN NaN NaN NaN NaN NaN NaN NaNNaN NaN NaN NaN NaN NaN NaN NaNNaN NaN NaN NaN NaN NaN NaN NaNNaN NaN NaN NaN N
32、aN NaN NaN NaNNaN NaN NaN NaN NaN NaN NaN NaN3. 实验结果分析:灰度共生矩阵是对图像上保持某距离的两象素分别具有某灰度的状况进行统计。实验获取了 0、45、90和 135方向分别的灰度共生矩阵,及各灰度共生矩阵的相关特征。能量:反映了图像灰度分布均匀程度和纹理粗细度。由图片 7 实验结果可以看出,图片 7 在 0和 90方向分布较均匀,与实际图片相符合;图片 8 在 45方向分布均匀。熵:图像所具有的信息量的度量。图片 7 的熵值较大且各方向近似相等,表明图片 7 中充满纹理;图片 8 中熵值差别较大,且灰度共生矩阵接近零矩阵,则图片 8 几乎没有
33、纹理。惯性矩:反映了图像的清晰度和纹理沟纹深浅的程度。图片 7 在 45和 135方向惯性矩稍大,表明在这两个方向纹理沟纹深;而图片 8 在 90方向惯性矩稍大,图像清晰。相关性:度量空间灰度共生矩阵元素在行和列方向上的相似程度,相关值大小反映了图像中局部灰度相关性。图片 7 在 45和 135方向相关性小,可以认为这两个方向为纹理的主方向;图片 8 在 0和 90出现负值,在另外两个方向出现错误,可以认为 0和 90为主方向。总结:通过这四个简单的图像处理小实验,简单了解了灰度图像的简单处理,例如由真彩转灰度、图像数据格式转换、灰度级的压缩等。不仅仅是从眼睛分辨图片的特征,更要依据数据的理论分析。从简单的图像处理实验可以感受到图像处理的强大,在图像处理的道路上有很多任务要完成。