【OpenCV 4开发详解】分割图像——Grabcut图像分割

本文介绍了OpenCV 4中的Grabcut算法,用于图像分割。该算法基于高斯混合模型,通过迭代优化实现背景和前景的精确区分。OpenCV提供的grabCut()函数用于执行Grabcut算法,需要指定输入图像、掩码、ROI区域、背景和前景模型以及迭代次数。程序示例展示了如何应用grabCut()函数进行图像分割,并显示分割结果。
摘要由CSDN通过智能技术生成
本文首发于 “小白学视觉”微信公众号,欢迎关注公众号
本文作者为小白,版权归 人民邮电出版社发行所有,禁止转载,侵权必究!

经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。

Grabcut算法是重要的图像分割算法,其使用高斯混合模型估计目标区域的背景和前景。该算法通过迭代的方法解决了能量函数最小化的问题,使得结果具有更高的可靠性。OpenCV 4提供了利用Grabcut算法分割图像的grabCut()函数,该函数的函数原型在代码清单8-21中给出。

代码清单8-21 grabCut()函数原型
1.	void cv::grabCut(InputArray  img,
2.	                     InputOutputArray  mask,
3.	                     Rect  rect,
4.	                     InputOutputArray  bgdModel,
5.	                     InputOutputArray  fgdModel,
6.	                     int  iterCount,
7.	                     int  mode = GC_EVAL 
8.	                     )
  • img:输入的待分割图像,数据类型为CV_8U的三通道图像。
  • mask:用于输入、输出的CV_8U单通道掩码图像,图像中像素值的取值范围以及含义在表8-4给出。
  • rect:包含对象的ROI区域,该参数仅在mode == GC_INIT_WITH_RECT时使用。
  • bgdModel:背景模型的临时数组。
  • fgdModel:前景模型的临时数组。
  • iterCount:算法需要进行的迭代次数。
  • mode:分割模式标志,该参数值可选择范围以及含义在表8-5给出。
表8-4 grabCut()函数中掩码图像像素值范围和含义
标志参数 简记 含义
GC_BGD 0 明显为背景的像素
GC_FGD 1 明显为前景(对象)的像素
GC_PR_BGD 2 可能为背景的像素
GC_PR_FGD 3 可能为前景(对象)的像素
表8-5 grabCut()函数中分割模式标志取值范围和含义
标志参数 简记 含义
GC_INIT_WITH_RECT 0 使用提供的矩形初始化状态和掩码,之后根据算法进行迭代更新
GC_INIT_WITH_MASK 1 使用提供的掩码初始化状态,可以组合GC_INIT_WITH_RECT和GC_INIT_WITH_MASK。然后,使用GC_BGD自动初始化ROI外部的所有像素。
GC_EVAL 2 算法应该恢复
GC_EVAL_FREEZE_MODEL 3 只使用固定模型运行grabCut算法(单次迭代)

该函数实现了GrabCut图像分割算法,函数的第一个参数是待分割的输入图像,要求是CV_8U的三通道彩色图像。第二个参数是掩码矩阵,该参数既用于输入又用于输出,当最后一个参数设置为GC_INIT_WITH_RECT时,该矩阵会被设置为初始掩码,掩码矩阵中具有4个可选择的参数,分别是0(GC_BGD)表示明显为背景的像素、1(GC_FGD)表示明显为前景或者对象的像素、2(GC_PR_BGD)表示疑似背景的像素、3(GC_PR_FGD)表示疑似前景或者对象的像素。最后图像的分割结果也是通过分析掩码矩阵中每个像素的数值进行提取。函数第三个参数是需要进行分割去ROI区域,在ROI区域的外部会被标记为“明显的背景”区域,该参数尽在mode == GC_INIT_WITH_RECT时使用。函数第四个和第五个参数分别是背景模型、前景模型的临时数组,需要注意的是在处理同一图像时,请勿对它进行修改。函数第六个参数是算法进行迭代的次数。函数最后一个参数是分割模式标志,可以选择的参数及其

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值