Grabcut

  • 仓库地址
  • 用到的库
  • 代码略述
  • 代码使用说明:
  • 调试过程
  • 复现体悟
  • 推荐博客

仓库地址

https://github.com/Leevan001/Grab_cut
click here!

用到的库

import numpy as np

import cv2

import maxflow

代码略述

一共写了两个版本的迭代

Gbv1是只迭代一轮的代码

Gbv2的迭代是每次都用kmeans重新聚类

Gbv2的迭代是严格按照原论文的迭代,运行速度较慢

Gbv3是打算加快运行速度的,但并没有实现,目前运行速度可提升的方向是constructGCGraph函数

及构建图速度较慢,可以考虑numpy的向量化或多线程,但多线程效果好像并不理想(一次迭代需要6~10s,一半迭代1次效果就比较理想了)

代码使用说明:

运行代码首先人为给定框,按下enter或space键确认

运行效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-onz8kJYg-1681897512599)(https://fastly.jsdelivr.net/gh/Leevan001/pictureBed@main/utools/1681877296937feb07b7032b61814a0b9e53e68756ac.png)]

调试过程

首先是无符号整型数溢出不会报错

calcBeta,在这个函数中遇到了越界的情况,要将uint8转成astype(np.float32)

其次,因为参数gamma 设置地不好,源码中设置为50,我10~50地测试效果都不理想,心态破防,后来设为2,code奇迹般的work了。

换了几个最大流的库,发现pymaxflow最快

聚类直接用opencv的接口最快

能用numpy向量操作的尽量用numpy向量操作,for循环运行速度慢

复现体悟

第一次将数学知识运用起来,觉得还是挺神奇的。经典算法。

kmeans+GMM+最小割

概率论+图论

其实也可以不用kmeans,但kmeans算法比em快很多,权衡之下用的kmeans。

以后不用pycharm全面投入vsc了。vsc真的界面很清爽。

从论文理解到复现一共花了三天,本来要用c++的,但配环境花了很久最后虽然配好了,但兴趣索然全失,毕竟opencv就是C++写的,再把code重敲一遍意义不大。

但C++还是挺重要的,它运行速度很快,有空再重拾一下C++,尽管用C++刷力扣,但用C++做项目的经历还是很少,第一次下载Clion这个ide,第一次用msys2配环境,第一次了解Cmake。怀疑以前学了个假C++课。

做这个的时候面临两个期中考试,一次非限课ppt汇报,扁桃体发炎+咳嗽+角膜炎,xs人有时很脆弱有时又很强大。

不管结果如何,就当一次切磋吧,我也是有收获的。人生也只是一场没有终点的修行罢了。

最后感谢chatgpt的帮助!

推荐博客

opencv源码

csdn

GrabCut python实现相关推荐

  1. Python OpenCV GrabCut进行前景分割和提取

    Python OpenCV GrabCut进行前景分割和提取 1. 效果图 1.1 边界框GrabCut效果图 1.2 Mask GrabCut效果图 2. GrabCut原理 2.1 GrabCut ...

  2. python 黑白tif提取边界像素坐标_OpenCV GrabCut算法:前景分割和提取

    点击上方"蓝色小字"关注我呀 文章翻译自光头哥哥的博客,原文链接: https://www.pyimagesearch.com/2020/07/27/opencv-grabcut- ...

  3. Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm)

    Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm) ################# ...

  4. Python:实现GrabCut算法(附完整源码)

    Python:实现GrabCut算法 img = cv2.imread('data.jpg')img = cv2.resize(img, (224, 224), interpolation=cv2.I ...

  5. OpenCV python GrabCut算法提取前景背景图片

    OpenCV python GrabCut算法提取前景背景图片 处理图片:[lena_color.jpg] 手动mask[mask.jpg] import numpy as np import cv2 ...

  6. python实现grabcut算法进行物体分割

    GrabCut算法进行物体分割 GrabCut算法原理 python实现GrabCut算法 GrabCut算法原理 (1)在图片中定义含有(一个或多个)物体的矩形. (2)矩形外外的区域被自动认为是背 ...

  7. Python OpenCV学习笔记之:使用Grabcut算法进行图像背景和前景分割

    为什么80%的码农都做不了架构师?>>>    # -*- coding: utf-8 -*- """ 图像分割 """i ...

  8. 用GrabCut进行前景检测(对书中代码进行改进)Python

    GrabCut 该算法,在opencv中很容易就可以使用. 通过对于一开始取定的矩阵来做来模拟. (这个我们可以通过调整这个点的以及对应的矩阵大小来调整效果) 下面就是算法提取出来的图像,以及原图 下 ...

  9. python opencv 利用 GrabCut 算法(opencv已经实现)从图像中分离出前景

    # 利用GrabCut算法从图像中分离出前景 import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg = ...

最新文章

  1. 图像配准----SIFT
  2. Linux常用软件和安装方法,Linux软件安装与卸载常用方法(转)
  3. 设置跳转到新的actvity之后不可返回
  4. 如何在Linux中使用sFTP上传或下载文件与文件夹
  5. 利用PHP的VLD查询OPCODE
  6. 软件项目管理复习题库(学生自制非官方)
  7. Unity 导航网格生成碰撞体
  8. 【f1c200s/f1c100s】不带中断引脚采用扫描的方式实现通用gpio-keys
  9. 美团外卖数据采集接口
  10. 一张对数字图像处理贡献最大的花花公子人体照
  11. python编程猫下载_编程猫下载_编程猫安卓版下载_编程猫 2.0.2手机版免费下载- AppChina应用汇...
  12. 月之暗面(树形dp)
  13. web前端的网页优化
  14. 整数与浮点数比较-汇编码分析
  15. Xshell入门必看
  16. C语言数组的初始化总结
  17. 微信公众号客服功能如何开通?
  18. 每日新闻 丨新突破:AI能提前十年预测心脏病,准确率高达90%
  19. CMMI视频推荐(2)CMMI的五个级别
  20. 计算机专业专科毕业设计题目,计算机专业毕业设计题目

热门文章

  1. 不可不知道的SEO与SEM术语大全
  2. JavaScript —— JSchallenger Arrays 数组练习(测试一下你的 JS 数组基础)【专题二】
  3. [AV1] 谈谈AV1中的 S-Frame
  4. 【更新】京东、美团、饿了么获取cookies
  5. 无人车系统(一):运动学模型及其线性化
  6. RLC电阻电容电感基础知识——电容篇
  7. 淘淘商城---8.9
  8. Postman----打开postman console控制台,查看接口测试打印log
  9. 学习C++在windows下窗口应用程序开发(一)
  10. 网络营销策略常见方法有哪些?