一、人工阈值分割方法threshold_test1.m
1、分析修改阈值对分割结果的影响
分析:取直方图中第一个谷底的灰度值作为阈值,图像分割效果较好。当阈值改变时,分割后的图像有部分信息丢失,本图中当阈值减小时分割后的图像黑色部分较多,当阈值增大时分割后的图像白色部分较多。
[I,map]=imread('cameraman.tif'); % 读取灰度图像
imshow(I);figure; % 显示原图图像
J=imhist(I);imhist(I); % 提取图像中的直方图信息;将图像转换为直方图信息
[M,N]=size(I); % 直方图信息的高和宽
for i=1:1:M
for j=1:1:N % 遍历像素点
if I(i,j)>80 % 阈值为80
g(i,j)=0; %大于80的点取0(黑色
else g(i,j)=1; % 小于等于80的点取1(白色
end
end
end
figure;imshow(g); % 显示手动阈值分割后的图像
二、迭代阈值分割方法-自动阈值方法threshold_test2.m
%例2 迭代阈值分割
f=imread('cameraman.tif'); %读取图像
subplot(1,2,1);imshow(f);
title('原始图像');
f=double(f); % 返回double类型
T=(min(f(:))+max(f(:)))/2; % 求原图大小平均值,并作为初始阈值T
done=false; % 赋值,if(false)
i=0; % 赋值,迭代次数
while~done % 与更新后的done比较
r1=find(f<=T); % 小于阈值的点,作为目标
r2=find(f>T); % 大于阈值的点,作为背景
Tnew=(mean(f(r1))+mean(f(r2)))/2; % 计算新的阈值Tnew,目标灰度值和背景都取平均
done=abs(Tnew-T)<1; % 迭代至两次阈值的灰度变化不超过1时停止
T=Tnew; % 更新阈值T
i=i+1; % 更新迭代次数
end
f(r1)=0; % 进行二值分割,小于最终的阈值的点为0(黑色),
f(r2)=1; % 大于最终的阈值的点为1(白色)
subplot(1,2,2);
imshow(f);
title('迭代阈值二值化图像');
三、自适应阈值方法
f=imread('cameraman.tif');
figure,subplot(1,2,1),imshow(f),title('原始图像');
h = imbinarize(f,'adaptive','ForegroundPolarity','dark','Sensitivity',0.4);
%自适应阈值分割,ForegroundPolarity 参数指示前景比背景暗
subplot(1,2,2),imshow(h),title('自适应阈值分割图像');
文章来源:https://www.toymoban.com/news/detail-507694.html
四、对比手动阈值(threshold_test1.m)、自动阈值(threshold_test2.m)、自适应阈值与分水岭分割算法(Water tset.m)的分割结果,分析他们的优缺点.
答:
1、阈值分割算法能够较快的完成图像分割,但是它考虑灰度信息而没有考虑空间信息,不适用于多通道图片,也不适用于特征值相差不大的图像,并对于噪声和灰度不均匀敏感,对于背景与目标区域灰度差异较小的图像分割效果不好。手动阈值分割使用双峰法需要有一定的图像先验知识,因为同一个直方图可以对应若干种不同的图像。自动阈值法迭代法只适用于直方图有明显波谷的情况,其他情况不理想。
2、自适应阈值法的思想不是计算全局图像的阈值,而是根据图像不同区域亮度分布,计算其局部阈值,所以对于图像不同区域,能够自适应计算不同的阈值,因此被称为自适应阈值法。优点是在一定条件下受图像对比度与亮度变化的影响很小。缺点是该方法只是借助了图像的像素灰度信息,并未考虑像素间的空间相关信息(如邻域信息),加之外部干扰的存在,使得灰度直方图的波峰和波谷并不一定明显,抗干扰性较差。
3、分水岭算法可处理细胞粘连问题,分割精度高。但是由于噪声点或者其它干扰因素的存在,常常存在过度分割的现象,这是因为过多局部极值点的存在而产生许多小的集水盆地,从而导致分割后的图像不能将图像中有意义的区域表示出来。文章来源地址https://www.toymoban.com/news/detail-507694.html
到了这里,关于Matlab|图像处理04|图像分割-阈值分割方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!