计算机视觉——使用OpenCV GrabCut算法从图像中移除背景-GrabCut算法的工作原理

首先,在图像上绘制一个矩形,包含图像的主题,例如一个人或一只狗。矩形外的区域自动被视为背景。在定义的矩形内,背景中的数据被用作区分前景和背景位置的参考。

基于提供的事实,计算机进行初始标记,识别前景和背景中的像素(或进行硬标记)。

简单来说,这种方法使用高斯混合模型(Gaussian Mixture Model, GMM)定义矩形内的区域作为颜色分布模型,每个像素被标记表示其是否为前景、背景或未知。如果您对图像处理有所了解,您会知道每个像素通过梯度与下一个像素相连,因此该模型将鼓励具有相似颜色分布的像素具有相同的标记。

GMM根据提供的数据学习并创建新的像素分布。换句话说,未知像素根据它们与其他硬标记像素的颜色统计关系被标记为可能的前景或可能的背景(类似于聚类)。

这个像素分布被用来创建一个图。像素是图中的节点。两个新节点被添加:源节点和汇聚节点。每个前景像素都连接到源节点,而每个背景像素都连接到汇聚节点。

像素是前景/背景的可能性决定了连接像素到源节点/汇聚节点的边的权重。边的信息或像素相似性决定了像素之间的权重。如果像素之间存在显著的颜色差异,它们之间的边将具有较低的权重。

创建了带有初始权重的图之后,我们使用最小割算法,以产生两组顶点。

然后我们创建一个具有N个顶点的图(N=像素数),并根据顶点(像素)的颜色相似性用边连接它们。之后,我们将向网络中添加两个顶点(用于前景和背景的标签),每个顶点将根据像素与背景或前景的颜色分布匹配的可能性与N个像素相连。

换句话说,GrabCut方法创建了两个标签,一个用于背景,一个用于前景,并使用每个像素的颜色分布将所有像素与其自身连接。

上一篇:python实现假设检验-t检验


下一篇:解决 nginx 代理 1Panel 后远程无法 ssh-方法解析