当前位置:文档之家› 实验一-图像增强和图像分割实验

实验一-图像增强和图像分割实验

实验一图像增强和图像分割实验(1)分别用图中给出的直线和曲线作为增强函数进行增强,比较它们的效果并讨论其特点。

1.I=im2double(I);%转换数据类型为double [M,N]=size(I);figure(1);imshow(I);%显示原图像title('原图像'); figure(2);I=rgb2gray(I);%转化为灰度图像[H,x]=imhist(I,64); stem(x,(H/M/N),'.'); title('原图像');%tan=30`a=sqrt(3)/3;b=0;y=a.*I+b;figure(3);imshow(y);title('tan=30'); figure(4);[H,x]=imhist(y,64); %tan=45`a=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=60`a=sqrt(3);b=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的原图像图片1的30度线性变换图像图片1的45度线性变换图像L-1图片1的60度线性变换图像原图像的直方图 30度变换后直方图45度变换后的直方图 60度变换后直方图图片2处理程序参考图片1处理程序。

图片2实验结果如图所示:图片2原图像30度变换后图像45度变换后图像60度变换后图像2.实验结果分析由实验结果可以看出,当按照30度线性变换后图像变暗,按照45度变换后图像没有任何改变,按照60度变换后图像变亮,由变换后的直方图可以确认像素点的变化。

由以上分析可以得出,当线性变换函数的斜率大于1时,图像的对比度将增大;当线性变换的斜率小于时,图像的对比度将减小;当线性变换函数的斜率等于1时,图像的对比度不变,只是像素点整体的移动。

虽然线性变换可以改变对比度,但是对图像的细节部分增强有限。

1.在MATLAB中编写灰度图像的对指数点运算程序图片1对数处理程序:I=imread('图片1.png'); %读入原图像I=im2double(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('对数变换');实验结果如下图所示:图片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(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('指数变换');实验结果如下图所示:图片1直方图指数变换后直方图图片1指数变换后图像图片2对指数处理程序参考图片1处理程序。

对指数处理结果如图所示:图片2指数变换后图像图片2直方图指数变换后直方图对数变换后直方图图片2对数变换后图像2.实验结果分析A、对数变换采用对数变换,当函数自变量为低值时,曲线斜率很高;自变量为高值时,曲线斜率变小。

由变换后图像和直方图可以得出,对数变换是增强图像中较暗的细节,从而可用来扩展被压缩的高值图像中较暗的像素。

B、指数变换对数变换采用的是伽玛变换(γ>1),同理图像的高灰度区域对比度得到增加。

因为伽玛变换变换不是线性变换,不仅可以改变图像的对比度,还能够增强细节,从而带来整体图像效果的增强和改善。

(2)分别用Roberts算子、Sobel算子、LoG算子和Canny算子进行边缘检测,比较它们的效果并讨论其特点;图片3 图片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');实验结果如图所示:图片3经过roberts算子检测的图像图片3经过sobel算子检测的图像图片3经过LoG算子检测的图像图片3经过canny算子检测的图像图片4处理程序参考图片3处理程序。

实验结果如下图所示:roberts处理后图像 sobel处理后图像LoG处理后图像 canny处理后图像2.实验结果分析由实验结果可以看出:Roberts利用局部差分算子寻找边缘,边缘定位精度较高,但是容易丢失一部分边缘,同时由于图像没经过平滑处理,因此不具备抑制噪声的能力,所以对含噪声少的图像的处理效果较好;Sobel算子考虑了邻域信息,相当于对图像先做加权平滑处理,然后再做微分运算,虽然能够对噪声有抑制效果,但不能完全排除检测结果中出现的虚假边缘。

对边缘定位准确,但检测出的边缘容易出现多像素宽度;LoG算子即高斯-拉普拉斯算子,克服了拉普拉斯抗噪声比较差的缺点,但在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉,造成这些尖锐的边缘无法被检测到,但是相对于Roberts算子和Sobel算子处理结果稍好;Canny算子:在图像边缘检测中,抑制噪声和边缘精确定位是无法同时瞒足的,Canny算子在力图在抗干扰和精确定位之间寻求最佳的折中方案。

由图像处理结果可以看出,效果较前三者边缘更细腻、清楚。

从边缘定位的精度看:Roberts算子和LoG算子定位精度更高。

从对不同方向边缘的敏感性而言:Sobel算子检测斜向阶跃边缘效果较好;Roberts算子检测水平和垂直边缘效果较好;LoG算子不具备边缘方向检测能力;Soberl算子可以提供最精确的边缘方向估计。

从去噪能力看:Roberts算子和LoG算子虽然定位精度较高,但受噪声影响大。

从总体效果来衡量,Canny算子给出了一种边缘定位精确性和抗噪声干扰性的较好折中。

(3)采用不同阈值化方法(固定阈值、迭代阈值、Otsu阈值等)对图像进行分割,比较它们的效果并讨论其特点;图片5 图片6实验步骤: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)<=129) I(i,j)=0;else I(i,j)=255;endendendfigure(3);imshow(I);title('129阈值');图片5直方图取129阈值分割图片6处理过程参考图片5。

实验结果如图所示:图片6直方图取83阈值分割2.迭代阈值:I=imread('图片5.png');ZMAX=max(max(I)); %取出最大灰度值ZMIN=min(min(I)); %取出最小灰度值TK=(ZMAX+ZMIN)/2;bcal=1;ISIZE=size(I); %读出图像大小while(bcal)iForeground=0; %定义前景和背景数 iBackground=0;ForegroundSum=0;%定义前景和背景灰度总和BackgroundSum=0;for i=1:ISIZE(1)for j=1:ISIZE(2)tmp=I(i,j);if(tmp>=TK)iForeground=iForeground+1; ForegroundSum=ForegroundSum+double(tmp); %前景灰度值elseiBackground=iBackground+1;BackgroundSum=BackgroundSum+double(tmp);endendendZO=ForegroundSum/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('迭代法分割')实验结果:迭代后的阀值:128图片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.5137Otsu阈值分割图片6处理过程同上,实验结果如下:Level=0.4039;Otsu阈值分割4.实验结果分析固定阈值:由图片5和图片6的处理结果看出,固定阈值适合具有明显双峰的图像,但是当两个峰值相差很远时不适用,而且容易受到噪声的干扰,进而导致阈值的选取误差。

相关主题