第四章 习题MATLAB代码
I =imread('cameraman.tif');
4-1 请编写利用迭代法进行图像分割的MATLAB程序
%J=im2bw(I,th/255);%该用法不被建议
str=['迭代分割;阈值Th = ',num2str(th)];
4-2
请编写利用最大类间方差法(Otsu算法)进行图像分割的MATLAB程序
MATLAB中提供了计算最大类间方差阈值分割的阈值函数graythresh。level=graythresh(I)根据最大类间方差阈值方差法计算全局阈值,函数返回的阈值的取值范围为[0,1],输入的图像I可以是uint8、uint16或double型。
利用最大类间方差分割法(Otsu算法)进行图像分割的MATLAB代码如下:
imshow(J);title(['分割结果:阈值Th=',num2str(th)]);
4-3 边缘检测算子的MATLAB实现
解:MATLAB中提供了边缘检测函数edge,用来完成灰度图像的边缘检测,该函数支持6个不同的边缘检测方法,分别是Sobel算法,Prewitt算法、Roberts算法、LoG算法、Zerocross算法和Canny算法。
4-4 边缘检测算子
题目:
请编写MATLAB程序,对一幅数字图像添加高斯噪声,然后分别对原始图像和含噪声的图像用Canny算子进行边缘检测,测试Canny算子对噪声的敏感程度。
IN=imnoise(I,'gaussian');
[BW1,T1] = edge(I,'canny');
[BW2,T2] = edge(IN,'canny');
imshow(IN);title('添加高斯噪声后的图像');
imshow(BW1);title(['阈值[Low,High]=[',num2str(T1),']'])
imshow(BW2);title(['阈值[Low,High]=[',num2str(T2),']'])
4-5 区域生长法
题目:请编写使用区域生长法进行图像分割的MATLAB程序
解:首先编写区域生长所需的子函数,新建一个m文件,代码见“regiongrow.m”文件,然后编写区域生长的主程序如下:
imshow(Io,'Border','tight');
Yout=regiongrow(I,seed,th_mean);