《超像素》 超像素是一种以聚类思想为初衷的方法,目的是为了对较大像素的图像进行区域划分,来帮助理解,本文介绍了一个开源项目在火灾检测场景使用超像素,比较巧妙,虽然效果不是很理想,但是提供了一个很好的思路。 Key Words:超像素、火灾检测、OpenCV实现 Beijing, 2020 作者:RaySue Code:https://github.com/tobybreckon/fire-detection-cnn
Agile Pioneer
超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。
超像素就是把一幅像素级(pixel-level)的图,划分成区域级(district-level)的图,是对基本信息元素进行的抽象。超像素最直观的解释,便是把一些具有相似特性的像素“聚合”起来,形成一个更具有代表性的大“元素”。
它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征,很大程度上降低了图像后处理的复杂度,所以通常作为分割算法的预处理步骤。
这些小区域大多保留了进一步进行图像分割的有效信息,且一般不会破坏图像中物体的边界信息。
应用超像素的意义在于:超像素可以把图像分割的足够细碎,从而可以保障每个分割后的图像块都是一块具有独立语义的图像块。
大大降低了数据维度,而且可以剔除一些异常像素点。
理论上,任何图像分割算法的过度分割(over-segmentation),即可生成超像素。
Under segmentation Error
用于描述超像素块既包含很多物体边缘及物体,又包含很多的背景,这种像素团越多说明效果越不好Boundary Recall
和物体边界的重合度,越高代表超像素的边缘越贴近物体边缘Compactness score
可以理解为越向棋盘格子越紧实,也就是在超像素簇内部有着更低的空间方该技术已经被广泛的应用到图像分割、姿势估计、目标跟踪、目标识别等多个计算机视觉任务等。
利用超像素来理解 CNN 到底学到了什么,安利论文:“Why Should I Trust You?” Explaining the Predictions of Any Classifier
配合分类模型做 目标定位 比如:一个火灾检测的项目就用到了超像素“Experimentally Defined Convolutional Neural Network Architecture Variants for Non-temporal Real-time Fire Detection”
配合粒子滤波做 目标跟踪 比如:“Superpixel Tracking”
对所有的有火灾和没有火灾的图片进行二分类,然后利用超像素算法,对每个超像素块移动到中心,保持模型训练尺度的大小进行分类,所有有多少超像素块就分多少类,效果如下:
Q: AttributeError: module ‘cv2.cv2’ has no attribute ‘ximgproc’
A: 如果没有按照opencv-contrib就会报错,pip install opencv-contrib-python解决
[1] https://www.zhihu.com/question/27623988 [2] https://www.cnblogs.com/blog4ljy/p/9449915.html [3] https://blog.csdn.net/WZZ18191171661/article/details/91039457 [4] https://blog.csdn.net/zhangyonggang886/article/details/51494122?locationNum=2&fps=1 [5] https://blog.csdn.net/qq_26129959/article/details/90760028 [6] https://blog.csdn.net/qq_40268412/article/details/103915197 [7] https://blog.csdn.net/chengyq116/article/details/98470820