图像前景分割之GrabCut算法

参考:

       参考项目一:https://github.com/NathanZabriskie/GraphCut

       参考项目二:https://github.com/cm-jsw/GraphCut

运行环境:

       1.python3.x

       2.所需库函数:numpy,opencv-python

       3.操作步骤:

              1) 长按鼠标右键在分割目标周围标定矩形框,矩形框外的区域被自动认为是背景;

              2) 按字母'n'得到初步分割结果;

              3) 按数字'0',在input图上通过长按鼠标左键进行背景标注,按字母'n'得到初步分割结果。(标注处为背景区域去掉);

              4) 按数字'1',在input图上通过长按鼠标左键进行前景标注,按字母'n'得到初步分割结果。(标注处为前景区域增加保留)

              5) 按数字'2',在input图上通过长按鼠标左键进行背景标注,按字母'n'得到初步分割结果。(标注处为可能为背景区域);

              6) 按数字'3',在input图上通过长按鼠标左键进行前景标注,按字母'n'得到初步分割结果。(标注处为可能为前景区域);

              7) 按字母'r',重置;

              8) 按字母's',将分割后的图片保存到输出文件;

              9) 按键盘'esc',退出;

       在input图片中标定含有物体的矩形,矩形外的区域被自动认为是背景,对于用户标定的矩形区域,可用背景中的数据来区别它里面的前景和背景区域。用高斯混合模型(GMM)来对背景和前景建模,并将末定义的像素标记为可能的前景或背景。图像中的每一个像素都被看作通过虚拟边与周围像素相连接,而每一条边都有一个属于前景或背景的概率,这基于它与周围像素颜色上的相似性。每一个像素会与一个前景或背景节点连接。若节点之间不属于同一个终端(就是两个相邻的节点,一个节点属于前景,一个节点属于背景),则会切断它们之间的边,这就将图像各个部分分割出来了。

# -*- coding:utf-8 -*-
# Python 2/3 compatibility
from __future__ import print_function
  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值