图像分割万金油—堪比模型分割效果的分割算法

分割原理

图像分割在我们常见的视觉应用场景中是十分重要的一个步骤。简单的理解,我们平时所接触的二值化操作就是一种简单的图像分割。

opencv常用的二值化有几种操作,也支持比较多的算子,但是相信用过它们的人都应该知道它们的弊端。总之就是一句话,不能满足大部分的精细分割任务。

【其实如果不涉及到对复杂图像的精细分割问题,不论是使用二值化也好还是其他算子也好,都还是能比较容易地进行分割的】

这篇文章,我们将不再聚焦于使用常规的算子或者形态学操作方式去进行图像分割,也不聚焦于分割模型啥的。

该算法是我在出版一本算法书的过程中,查资料发现的一种算法。它是从图像分割的本质上,采用概率论的思维进行处理。目前已被用到很多工业场景中。往下的示例,我将直接使用这些数据进行演示。

图像分割

图像分割的原理很好理解,如下图:

在这个图中,可以明显看到中间的灰度值比两边的都低,那么就可以从中间把图像一分为三,即每一列分割成一类。

从数学的角度对图像分割原理进行解释,即:对每一个像素的值X进行分类,以确定这个像素值X的类别L。

常见的一些分割难点

我们遇到的很多问题都是没办法找到这个明显的分割位置的,如下图,这是一个LED芯片晶圆的放大图:

当在一个视野中遇到忽明忽暗的情况时,无法使用传统的阈值分割。
如果使用算子进行边缘检测的方式进行分割,同样也会出现分割混乱。

退一步想,不使用整图分割的方式,对整图进行拆分成多个子图,然后再将子图的分割结果合并。思路没问题,但是这种方法还是会出现很多不可接受的情况。具体的情况大家可以试一试,不过我相信,大部分能够看到这篇文章的人,应该都是已经踩过这个坑了的。

其他的不过多废话,直接进入正题。

贝叶斯原理

贝叶斯公式大家一定不陌生,就是:P(A|B) = P(AB) / P(B) = [P(B|A) * P(A)] / P(B)

再结合概率的思维去解释图像分割,即计算每一个像素值X属于不同类别L的概率,选择最大概率对应的类别作为该像素的分割类别。

那么就可以用贝叶斯公式表示图像分割:P(X|L)

不过单纯的计算像素值与类别的条件概率,还是不能直接用于图像分割中。因为我们很多时候还要考虑图像特征的问题。即如下图所示:


如果只根据像素的值进行分割,假设一个二分类任务,肯定会得到一个如图所示的分割关系。如果某一个点在b、c中间,那么我们一般采用的方法就是看这个点属于哪一类的概率高,就将其分为哪一类。即如果某一点x属于第一类(红色)的概率大于属于第二类(蓝色)的概率,那么点x就分类为第一类(红色)。

这种分割方式相较于我们传统使用opencv进行阈值分割的方式,其分割结果更接近实际。但是,它仍然不够实际。
就比如上面的晶圆图中,在图像左边有较暗的部分。如果采用这种方式进行分割,得到的结果仍然不够精确。

随机场分割

随机场分割是在贝叶斯原理的基础上,引入了随机场的概念形成。此处的随机场即马尔可夫随机场。
马尔可夫随机场是一个无向图模型,任一区域的值仅与它相邻的区域相关,与其他区域无关。由于马尔可夫随机场的这一特性,使得它在图像分割领域的应用十分成功。

关于详细的讲解,可移步至我的资源中查找《贝叶斯算法的介绍与案例》
分割的代码也在我的资源中 《图像分割案例代码》

如下将贴上代码测试的效果图:
原图:
![原图](https://img-blog.csdnimg.cn/9ce92e5ec2ae458782a8ffb48e7186cd.png

二分类迭代1次的分割图
![在这里插入图片描述](https://img-blog.csdnimg.cn/555de8d571a6432eab08767275fe9548.png

ps:也可以多次迭代

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月20日
下一篇 2022年5月20日

相关推荐