SLIC superpixel实现分析_slicsuperpixelsegmentation-程序员宅基地

技术标签: C++  c++  superpixel opencv  



http://infoscience.epfl.ch/record/149300这是SLIC算法的官网,网站有和SLIC相关的资源。

SLIC主要运用K-means聚类算法进行超像素的处理,聚类算法中的距离度量不仅仅包括颜色空间的颜色距离还包括像素坐标的欧氏距离。所以K-means聚类的中心点由五维向量组成。其中包括,记录LAB颜色空间下的像素以及该像素点的XY坐标,由于XY坐标不能和颜色空间直接进行计算,所以添加了一个紧密度的参数。

算法的实现过程:

1 对于一个包含N个像素的图像而言,如果对这个图像聚类为K个超像素块,那么每个超像素的范围大小为N/K个。如果每个超像素区域长和宽都均匀分布的话,那么每个像素的跨度为STEP=sqrt(N/K)

2 利用上面的数据对K-means聚类中心点尽心初始化,不过在初始化之后还需要注意一点。为了保证选出来的中心点不在像素的边缘上所以需要对对求出的中心点的便于梯度进行一个对比排除。就是和周围的8个像素点尽心比较直到找到像素梯度最小的点作为中心点。初始化之后就进行k-means聚类操作。

3 聚类之后还需要有一个增强处理,以便于将一个区域围起来的独立的像素点给归并到某一类中。

下面是整个代码的执行过程:

void SLIC::DoSuperpixelSegmentation_ForGivenNumberOfSuperpixels(
    const unsigned int*                             ubuff,
	const int					width,
	const int					height,
	int*&						klabels,
	int&						numlabels,
	const int&					K,//required number of superpixels
    const double&                                   compactness)//weight given to spatial distance
{
    const int superpixelsize = 0.5+double(width*height)/double(K);//每一个超像素的大小
    DoSuperpixelSegmentation_ForGivenSuperpixelSize(ubuff,width,height,klabels,numlabels,superpixelsize,compactness);
}

函数的参数中,ubuff是图像的像素内存指针,width和height是图像的高度,klabels和ubuff大小一样,用于返回每个像素所代表的label——也就是聚合之后属于哪一个类。numlabels返回实际聚类之后得到的数目,而K则是用户希望聚类的数目,compactness则表示距离转化为颜色空间的比例。函数的起始求出向上取整的颜色空间区域的大小。

void SLIC::DoSuperpixelSegmentation_ForGivenSuperpixelSize(
    const unsigned
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dayenglish/article/details/39616937

智能推荐

多线程---解析无锁队列的原理与实现_多线程无锁队列-程序员宅基地

文章浏览阅读1.4k次。前言为什么需要无锁队列呢?我们知道,多核心优化是现在游戏开发的一个重点课题,无论是工程实践也好,研究算法也罢,将工作并行化交由多线程去做是一个非常普遍的场景。对于这种场景,我们通常会采用线程池+命令队列的方式去实现,其中的命令队列就会使用互斥锁或是无锁队列。并且由于命令队列的读写是较轻量级的操作,采用无锁队列的性能要高于有锁的操作。因此,实现无锁队列等无锁数据结构,可以看作是迈入多线程编程的基石。推荐视频:https://www.bilibili.com/video/BV1354y1b7nz/问题描述_多线程无锁队列

移动web端使用腾讯地图实现定位功能_citylocation.searchcitybylatlng报错信息查看-程序员宅基地

文章浏览阅读2.5w次,点赞4次,收藏16次。最近公司有个需求,让开发一个相对精确的定位功能,我们是微信二次开发,不像APP那种可以有专门的组件或插件来实现, 使用腾讯地图API(支持HTTPS协议) 提前准备: 1: 先去腾讯地图API官网注册一个密匙.步骤很简单;<%@ page language="java" contentType="text/html; charset=UTF-8" pageE..._citylocation.searchcitybylatlng报错信息查看

JAVA 8 Map的使用_jdk'8 map-程序员宅基地

文章浏览阅读417次。JAVA 8 Map的使用_jdk'8 map

signature=4d74f59fe0df9ce45bb57be33a02fa1c,coc-ccls/yarn.lock at 9337fcd75b833d42aa9940dc8f5e2233c9e...-程序员宅基地

文章浏览阅读1.7w次。# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.# yarn lockfile v1"@babel/[email protected]":version "7.0.0-beta.44"resolved "https://registry.yarnpkg.com/@babel/code-frame/-/co..._yw193.c_yw3833

小熊派HarmonyOS 鸿蒙·季 开发-BearPi-HM Nano开发板介绍与E53系列扩展板介绍_小熊派hmnano拓展版e53-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏31次。目录作者介绍BearPi-HM Nano开发板功能介绍BearPi-HM Nano原理图解读按键电路原理LED灯电路原理NFC电路原理E53接口电路原理E53由来及其命名规则E53接口电气标准E53接口案例E53_SC1传感器 BH1750高亮 LED 灯E53_SF1MQ-2 气体传感器无源蜂鸣器E53_IA1光强传感器 BH1750温湿度传感器 SHT30E53_ST1L80-R GPS无源蜂鸣器E53_SC2MPU6050E53_IS1D203B作者介绍刘懿宵,男,西安工程大学电子信息学院,201_小熊派hmnano拓展版e53

razor page ajax,ASP.NET Core Razor中处理Ajax请求的案例-程序员宅基地

文章浏览阅读419次。ASP.NET Core Razor中处理Ajax请求的案例发布时间:2021-02-18 10:53:49来源:亿速云阅读:126作者:小新这篇文章主要介绍了ASP.NET Core Razor中处理Ajax请求的案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在ASP.NET Core Razor(以下简称Razor)刚出来的..._razorpage ajax

随便推点

php ab webbance,Apache的ab工具实例详解-程序员宅基地

文章浏览阅读62次。本文主要和大家分享使用Apache的ab工具实例详解,希望能帮助到大家。ab命令原理Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。Apache附带的ab工具(使用的PHP环境是WAMP集成环境,ab工具位于D:\wamp\bin\apache\Apache2.2.21\bin)非常容易使用。ab命令对发出负载..._phpab

YY摩登兄弟个唱开办,全网运营成直播平台核心竞争力-程序员宅基地

文章浏览阅读202次。8月17日,网红组合摩登兄弟,在广州“中央车站”举办了一场个人音乐会,座无虚席,个唱主办方是总部同属广州的直播平台YY。摩登兄弟成立于2014年,在2015年3月正式成为YY平台签约主播,在4528频道开播后,凭借着良好的唱功和颜值,快速成长为头部主播,分别获得2016年YY年度组合歌手第4名、2017年YY年度组合歌手第2名。作为平台上的金牌主播,YY对其重视有加,一个细节是,日前的二季度财报分..._摩登兄弟分析其“产品定位、主要内容、变现模式”这几个方面

非线性控制1.1——稳定与跟踪问题概念-程序员宅基地

文章浏览阅读5.5k次,点赞8次,收藏43次。1. 非线性控制系统的两大任务 1.1 稳定(或称调节)问题稳定问题是要使得闭环系统的状态稳定在一个平衡点附近。对于稳定问题,系统的输出不一定要有具体的物理意义,此时可以借助输入-输出状态线性化方法把原非线性熊转换为线性系统,从而用线性系统额理论解决系统的稳定问题。 1.2跟踪(或称伺服)问题跟踪问题是要使得闭环系统的输出跟踪一个给定的时变轨迹。2. 常用的非线性..._非线性控制

Itext7表单域处理(文字和图片)及添加水印_itext7-core 编辑表单域-程序员宅基地

文章浏览阅读9.8k次,点赞6次,收藏24次。Itext7改版相对于Itext5改版很大,由于新出来,很多文档都找不到。最近项目用到,就研究并记录了一下。本文解决的问题:1、替换表单域的变量;2、在表单域位置插入图片,图片根据表单域的大小自动变化;3、添加文字水印,水印显示在图片的上面。程序运行效果如下:1、引入maven依赖包为了方便下面直接引入itext7全家桶,有兴趣可以直接研究单个包引入。<..._itext7-core 编辑表单域

Unity Hub启动报错The Hub as encountered a critical error and must close_the hub has encountered a critical error and must -程序员宅基地

文章浏览阅读3.8k次,点赞4次,收藏7次。我已经多次遇到Unity Hub启动报错: Critical error,The Hub as encountered a critical error and must close.You can report a bug using our bug reporter tool.关掉这个窗口后再次启动,通常不会报错了,但是会无法读取已保存的登录信息,如果试图重新登录,会发现登录窗口一直是空白的,无法正常显示。首先想到的解决方法就是卸掉重装,尝试了一下确实有用(而且每次都有用)。但经常卸掉重_the hub has encountered a critical error and must close. you can report a bu

opencv学习日记_python计算机视觉opencv的实习日志-程序员宅基地

文章浏览阅读3.2k次。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档opencv学习日记(一)前言一、opencv是什么?二、使用步骤1.简单使用2.图片色彩模式转换总结前言因为我的毕业设计是关于opencv的一个系统设计所以需要学习opencv,特此开贴督促自己学习和做总结提示:以下是本篇文章正文内容,下面案例可供参考一、opencv是什么?来自百度百科:opencv是一个基于Apache2.0许可发行的跨平台计算机视觉和机器学习软件库,轻量且高效----由C和少量的C++构成,同时提供p._python计算机视觉opencv的实习日志