OpenCV静态图像分割(抠图)

很多时候,我们需要对静态图像进行分割,将前景与背景分离。OpenCV原生提供了一些图像分割的方法。

我们主要以下图为例,测试图像分割的效果。我们期待将图中的苹果抽离出来。图中含有高光、阴影,这是分割的难点。

一、漫水填充

此算法以一个种子点为中心,将颜色相近的像素修改为目标颜色。Photoshop中使用的魔术棒工具就是使用此算法。主要参数是种子点的位置和颜色变化上下限。此算法只适用于背景特别单调,前景边缘清晰的场合。即便如此,受环境影响,参数也很难调。一般需要人工辅助。

测试结果:

二、分水岭算法

此算法需要用户标记出不同区域,算法将周边相似的像素合并到区域中。对于测试图,我们把前景(苹果)标记为一个区域,将背景标记为另一个区域,标记图如下:

算法运行的结果如下:

三、Grabcuts算法

此算法需要用户画出一个矩形,矩形内为前景,外为背景,算法求出具体前景范围。算法因为需要迭代,运行速度较慢。

下图显示出标记的矩形区域,以及计算出的前景(苹果)具体范围。

四、Mean-Shift算法

此算法并不是真正的图像分割,只是去除图像中的精细纹理,减少颜色梯度。可以作为一种预处理算法,后续使用其他算法进行分割。

算法运行的结果如下,接近于一种模糊:

五、K-Means算法

此算法将图像分为K个类簇,需预先确定有多少个类簇。类簇的数量对分割的效果有重大影响。

设置2个类簇的结果:

设置3个类簇的结果:

六、U2-Net

以上,便是OpenCV原生的图像分割方法。可以看到,如果没有人工干预,效果交不理想,即使有人工干预,效果也不太理想(阴影没有办法处理)。

U2-Net是一个优秀的图像分割模型,能够提出中图片中的主要目标。

模型有多个版本,u2net、u2netp、u2net_human_seg等,可根据实际情况挑选模型。

模型的运行速度和精度都很不错。

以下是算法处理结果:

可以看到,苹果的范围被很好的标记出来,甚至阴影也处理好了。

相关推荐
拜小白18 小时前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
山顶夕景18 小时前
【VLM】AdaCodec:用“预测视觉码”替代逐帧RGB输入
计算机视觉·视频问答·多模态理解·视觉token压缩
深圳市快瞳科技有限公司20 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
小豆庄21 小时前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11
zwc32104320551 天前
Day 2:图像内存、数据类型与stride
c++·人工智能·opencv·算法·计算机视觉
誰能久伴不乏1 天前
OpenCV 入门(二):像素访问、ROI 与深浅拷贝
人工智能·opencv·计算机视觉
zwc32104320551 天前
第四周第五天——重构成类
c++·人工智能·opencv·算法·计算机视觉
椒颜皮皮虾྅1 天前
模型部署不再卡在环境上:DeploySharp 四大推理引擎与 Windows/Linux 离线交付实战
linux·运维·开发语言·人工智能·windows·计算机视觉·cuda
zwc32104320551 天前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
拜小白2 天前
【论文解读】ZInD:带标注平面图、360° 全景与 3D 房间布局的 Zillow 室内数据集
深度学习·计算机视觉·全景图