OpenCV 基于超像素分割的图像区域选取方法及源码
本系列文章由 @yhl_leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/51386993
工程源码GitHub: yhlleo/SuperpixelRegionFill
抠取图像区域的一个小demo,借助图像超像素分割的方法,将图像成子分块,再利用种子填充算法,选取子块区域。
超像素分割方法,采用论文 SEEDS: Superpixels Extracted via Energy-Driven Sampling 提出的方法,对于物体的边界具有较好的保留,如下图所示。可以辅助目标检测中制作Banchmark。
本工程在其基础上,获得的图像labels和contours,然后分别实现区域种子填充,Windows下编译环境为:
- OpenCV
- CMake
- Visual Studio
工程demo包括:
SuperSeedsTest: SEEDS 提供的用例,可获取超像素分割labels和contoursSeedFillTest: 基于labels种子填充子块BoundaryFillTest: 基于contours种子填充子块

(测试代码以./data文件下demo.jpg为例)

在选取了种子点(col, row)->(248, 71)后,两种方法得到的区域mask分别为:


由于保存的labels图像是8bit位图(内存中是CV_32SC1),所以是有损的,如果使用labels区域填充的时候,最好不要使用demo中从保存图像中加载labels数据(也就是在内存中进行,例如通过函数传参)。
种子填充算法使用递归的形式,对于小块的像素区域比较有效,但是由于编译器栈深度有限,填充区域过大的时候,会出现栈溢出的BUG,这里需要注意一下(有时间再优化这里)。
更复杂的接口以及操作,可以根据需要自己定义。
References
OpenCV 基于超像素分割的图像区域选取方法及源码的更多相关文章
- Qt之VLFeat SLIC超像素分割(Cpp版)
源地址:http://yongyuan.name/blog/vlfeat-slic-with-qt.html 近段时间学了点Qt,恰好前段时间用借助VLfeat以及OpenCV捣鼓了SLIC超像素分割 ...
- OpenCV3三种超像素分割算法源码以及效果
OpenCV3中超像素分割算法SEEDS,SLIC, LSC算法在Contrib包里,需要使用Cmake编译使用.为了方便起见,我将三种算法的源码文件从contrib包里拎了出来,可以直接使用,顺便比 ...
- 基于双向BiLstm神经网络的中文分词详解及源码
基于双向BiLstm神经网络的中文分词详解及源码 基于双向BiLstm神经网络的中文分词详解及源码 1 标注序列 2 训练网络 3 Viterbi算法求解最优路径 4 keras代码讲解 最后 源代码 ...
- SILC超像素分割算法详解(附Python代码)
SILC算法详解 一.原理介绍 SLIC算法是simple linear iterative cluster的简称,该算法用来生成超像素(superpixel) 算法步骤: 已知一副图像大小M*N,可 ...
- 超酷实用的jQuery焦点图赏析及源码
焦点图应用在现代网页中使用十分广泛,有注重简单小巧的,也有注重华丽美观的,大部分jQuery焦点图都可以滑动和切换图片,并且在切换图片时产生不同的动画特效.今天我们要分享一些超酷而且实用的jQuery ...
- 超炫酷的jQuery/HTML5应用效果及源码
jQuery非常强大,我们之前也用jQuery分享过很多实用的插件.HTML5可以让网页变得更加绚丽多彩,将HTML5和jQuery结合使用那将发挥更棒的效果. 今天向大家收集了一些关于HTML5和j ...
- 使用Qt5+CMake实现图片的区域选择(附源码)
近期研发涉及到了图片的区域选择,找来一些资料一直不能很满意,所以自己实现了一个. 实现步骤如下.源码可以点击ImageAOI获取. 如下资料来自源码的README. ImageAOI (XLabel) ...
- 基于案例贯通 Spark Streaming 流计算框架的运行源码
本期内容 : Spark Streaming+Spark SQL案例展示 基于案例贯穿Spark Streaming的运行源码 一. 案例代码阐述 : 在线动态计算电商中不同类别中最热门的商品排名,例 ...
- 10款超酷实用的jQuery焦点图赏析及源码
1.jquery整屏滚动插件Scrollify Scrollify是一个jQuery插件协助整屏滚动和顺利拍摄部分.完全可配置和优化. 在线演示 源码下载 2.jquery实现网易邮箱页面插件full ...
随机推荐
- highcharts注意事项
var json = [ {"id":"1","tagName":"apple"}, {"id":& ...
- bzoj 5127 数据校验
题目大意: 一个数列a 对于 a 的一个区间 [l, r],若对于该区间 [l, r] 内的任意一个非空连续子区间,该子区间内出现过的数值在整数上值域连续,则称 [l, r]为合法区间 m次询问 每 ...
- 【POJ 2777】 Count Color
[题目链接] http://poj.org/problem?id=2777 [算法] 线段树 [代码] #include <algorithm> #include <bitset&g ...
- Spark中统计程序运行时间
import java.text.SimpleDateFormat import java.util.Date val s=NowDate() //显示当前的具体时间 val now=new Date ...
- jqxtree异步加载部门树
整体思路 A.要想实现异步加载第一次加载的是一级部门 B.加载一级部门,如果有子部门,部门前面带+号,没有子部门,部门前面没有+号(+号也就是点击可以展开) C.在sql中实现如果有子部门默认都加载一 ...
- 虫食算 2004年NOIP全国联赛提高组(dfs)
1064 虫食算 2004年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descrip ...
- vue tab 点击请求方法
页面: <Tabs value="name1" style="width: 100%;height: 900px;" @on-click="ge ...
- Codeforces 763A
乍看之下感觉有点无从下手,,其实是个很简单的水题,陷入僵局 题目大意:给一棵树,树上每个节点都染色,问能否取下一个节点,使得剩余所有子树上的点的颜色都相同.能输出YES和取下的节点编号,否则输出NO. ...
- Flume OG 与 Flume NG 的对比
Flume OG 与 Flume NG 的对比 1.Flume OG Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent.collect ...
- [ BZOJ 4318 & 3450 / CodeForces 235 B ] OSU!
\(\\\) \(Description\) 一共进行\(N\)次操作,生成一个长度为\(N\)的\(01\)序列,成功对应\(1\),失败对应\(0\),已知每一次操作的成功率\(p_i\). 在这 ...