什么是图像分割
将数字图像划分成不相交,不重合的区域的过程就叫图像分割。
这很像PhotoShop里面的快速选取工具,判断边界,分割边界。
固定阈值分割
先上效果图
这里阈值我手动设置成了0.35,当然,你也可以通过“最大类间方差法”(OTSU)来找到一个最佳阈值。
OTSU:找到灰度直方图中两峰之间的最低点作为阈值。
%固定阈值分割
%原图
I = imread('coins.png');
subplot(221);imshow(I);
% 直方图
subplot(2,2,[2,4]);imhist(I);
%固定阈值分割,这里阈值为 0.35
level = 0.35;
%im2bw 为分割函数
I_2bw = im2bw(I,level);
subplot(223);imshow(I_2bw);
自适应阈值分割
先上效果图
采用自适应阈值分割方法比采用直方图分割有更好的分割效果。
对于不同的图像的适应性也更强。
%自适应阈值分割
%原图
I = imread('coins.png');
subplot(221);imshow(I);
I = im2double(I);
%直方图
subplot(2,2,[2,4]);imhist(I);
diff = 0.01; %设定一个迭代终止值
level1 = ( min(I(:)) + max(I(:)) ) / 2; %初值,当然自己目测一个常数也是可以的
arr1 = find(I>level1); %第一部分图像
arr2 = find(I<=level1); %第二部分图像
level2 = ( (mean(I(arr1))) + (mean(I(arr2))) ) / 2; %两部分图像取平均
%通过迭代产生最佳阈值
while abs(level1 - level2) < diff
arr1 = find(I>level1);
arr2 = find(I<=level1);
level2 = ( (mean(I(arr1))) + (mean(I(arr2))) ) / 2;
end
%im2bw 为分割函数
I_2bw = im2bw(I,level2);
subplot(223);imshow(I_2bw);
分割效果增强
对于边界不是非常明显的图像,可以对图像进行“平滑处理”后再进行分割。
平滑处理
平滑处理,是增强图像边界的一种方式。