图像分割与边缘检测
1、灰度阈值分割 程序:
>> I=imread('rice.png'); >> I=rgb2gray(I); >> I2=im2bw(I);
>> figure,imshow(I2); >> I2=im2bw(I,140/255); >> figure,imshow(I2)
原图:
原始图像的二值图像:
T=140时:
T=120
T=110
2、边缘检测:各种算子 程序:
>> I=imread('lena.bmp'); >> I=rgb2gray(I); >> figure,imshow(I)
>> BW1=edge(I,'sobel',0.1); >> figure,imshow(BW1);
>> BW2=edge(I,'roberts',0.1);
>> figure,imshow(BW2);
>> BW2=edge(I,'roberts',0.1); >> figure,imshow(BW2);
>> BW3=edge(I,'prewitt',0.1); >> figure,imshow(BW3); 原图:
Sobel算子检测效果:
Roberts算子检测效果:
Prewitt算子检测效果:
由结果可以发现,Sobel算子和Prewitt算子的效果比较好。
3、LOG算子的图像: 程序:
>> x=-2:0.06:2; >> y=-2:0.06:2; >> sigma=0.6; >> y=y';
>> for i=1:(4/0.06+1); xx(i,:)=x; yy(:,i)=y; end
>> r=i/(2*pi*sigma^4)*((xx.^2+yy.^2)/(sigma^2)-2).*exp(-(xx.^2+yy.^2)/(sigma^2)); >> colormap(jet(16)); >> mesh(xx,yy,r); >> surf(xx,yy,r); 用mesh画的:
用surf画的: