上一节学习了利用 Canny 算法来完成一个图片的边缘检测从而可以区分出图像的边缘。本节再了解一个计算机视觉中更常见的应用那就是把图片的前景和背景的分离也叫做图像分割。什么是图像的前景和背景在图像处理和计算机视觉中前景和背景是指图像中的两个主要部分。前景前景是图像中引起人们兴趣或希望被重点关注的区域通常指图像中的主要目标或者在图像处理中你想要从图像中提取或识别的对象。背景简单理解就是除了前景之外的其余图像区域作为陪衬的、通常是图像中次要的区域。举个例子上述图片一只猫在一个花园中那么照片中的猫就是前景而周围的花园景色就是背景。在一些图像处理任务中准确地分割前景和背景非常关键例如在图像分割领域中我们就很希望将图像中的不同对象分离开来这肯定需要识别然后分割前景和背景。如何区别前景和背景在继续阅读之前你可以先想一下如果让你自己来完成这个前景和背景的分割在已学习的知识框架下如何来完成呢你可能会想到先用灰度图简化一张图像。没错前面已经介绍了灰度图灰度图丢失了颜色信息转而将彩色图像转化为了只有一个通道灰度的照片在这样的照片里所有像素的灰度值都限制在了 0-255 的范围内。如果想要区分前景和背景就需要找到一个灰度阈值比如100大于100的所有像素称之为前景或背景而小于等于100的所有像素称之为背景或前景。基于此就可以把一张图片的前景和背景分开了。那现在问题转化为如何选择一个合适的阈值来将灰度图分开?大津算法大津算法就是专门做这个事的一种算法这里不写具体的公式了如果你对大津算法感兴趣可以直接去百度查一下有很多公式推导。这里从一个最通俗易懂的角度来说明大津算法是如何将一个灰度图分为前景和背景的。大津是个日本学者。他在研究这个算法的时候可能这么想过假设我已经找到了一个阈值并且已经利用这个阈值将图像划分为两块区域一块是所有像素点小于阈值的一块是所有像素点大于阈值的那么这两个区域可以看做是两个集合或者两个类别。如果让前景和背景分割的效果最好那肯定就是这两个集合两个类别之间的灰度值相差最大这样区别才明显。于是大津定义了一个指标为两类中所有像素点的类间方差如果类间方差最大那么划分这两类的阈值分割出来的图像肯定就是最明显的。类间方差最大这是大津算法的一个核心思想。方差大意味着两个数据的差别大从而可以最大限度、最精确的来完成图像的前景和背景的分割。那还是回到这个问题如何确定这个阈值使得小于它和大于它的两类图像的像素点类间方差最大呢大津也想了很多办法发现从数学上几乎很难解决这个问题但是这个问题数学上解决不了不代表工程上解决不了。工程实践解决我们知道灰度图的全部像素的值也就 0-255。假设先设置阈值为 0那么就可以利用这个阈值计算出一个类间方差记为S0 然后再设置阈值为1再计算出一个类间方差S1一直尝试到设置阈值为255 总共计算出 256 个方差分别为 S0、S1、…、S255。找到这 256 个类间方差最大的那个值对应的阈值就是希望得到的阈值了。这就是大津算法在实现时的另一个核心思想灰度值遍历。所以总结一下大津算法的核心思想有两个。第一个是数学上的求大于阈值和小于阈值所有像素点的方差以类间方差为标准来划分前景和背景第二个是工程上的利用遍历法来遍历所有像素值最终获得类间方差最大时对应的阈值。对于计算机而言遍历一个从 0-255 的数组的性能是很快的。因此大津算法在效果和性能上都还不错成为了在图像前景和背景分离中一个常见的算法。查看全部 AI 知识库内容点击链接董章鱼的公开 AI 空间