查看原文
其他

Selective Search算法与演示

gloomyfish OpenCV学堂 2020-02-04

点击上方蓝字关注我们

星标或者置顶【OpenCV学堂】

干货文章与技术教程第一时间送达

算法详解

在对象检测RCNN模型中使用了SS(Selective Search)进行区域推荐,改进了传统图像检测进行全局开窗检测的高计算消耗,典型的对象检测网络RCNN的结构如下:

其中SS作为一种区域推荐算法作为检测框,它是一种基于图像层次纹理、大小、形状进行分割与合并的算法。SS算法对输入图像的过度分割以后作为算法输入,图示如下:

SS算法进行区域推荐ROI生成会执行如下步骤

  1. 对每个分割区域计算外接矩形框,作为区域推荐窗口

  2. 对每组相邻的分割区域根据相似性进行合并

  3. 不断重复1~2

上述步骤中产生大的ROI区域不断被添加到,图像也从最初的过度分割到完全分割、到最终的完全合并。这种基于不同层次的合并被称为自底向上的分割方法。如下图所示:

相似性计算

颜色相似性
根据两个分割区域的颜色直方图的相似度来进行比较,颜色相似计算直方图方法是把0~255总计256个维度分为25个BIN、对RGB三通道得到25x3=75个维度数值,比较两个分割区域的这两组75个数值,采用直方图交叉来计算直方图相似程度,公式如下:

纹理相似性
纹理本质上是图像的梯度、所以计算图像高斯梯度(基于高斯核)、分为8个方向、每个方向上计算颜色直方图、颜色直方图分为10个BIN这样就得到10x8=80个向量,对于彩色RGB图像得到80x3=240个描述子向量作为纹理特征,比较纹理特征相似度的方法与颜色相似性相同。

大小与形状相似性

根据外界矩形框的面积大小,排序得到前2000个ROI区域作为RCNN的区域推荐框。

OpenCV代码演示

OpenCV在扩展模块图像处理中已经包含了SS算法,可以通过API直接创建SS模型对象,调用其方法实现区域推荐功能,代码演示如下:

import cv2

if __name__ == '__main__':
    cv2.setUseOptimized(True);
    cv2.setNumThreads(4);

    # read image
    im = cv2.imread("D:/images/dog.jpg")
    # resize image
    newHeight = 200
    newWidth = int(im.shape[1] * 200 / im.shape[0])
    im = cv2.resize(im, (newWidth, newHeight))
    cv2.imshow("input", im)

    # 创建算法+设置输入图像
    ss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation()
    ss.setBaseImage(im)

    # 使用SS快速版本
    ss.switchToSelectiveSearchFast()

    # 执行SS
    rects = ss.process()
    print('Total Number of Region Proposals: {}'.format(len(rects)))

    # 推荐100个ROI
    numShowRects = 100
    imOut = im.copy()

    # 显示前100个区域外接矩形框
    for i, rect in enumerate(rects):
        if i < numShowRects:
            x, y, w, h = rect
            cv2.rectangle(imOut, (x, y), (x + w, y + h), (02550), 1, cv2.LINE_AA)
        else:
            break

    # show output
    cv2.imshow("SS-Demo", imOut)
    cv2.waitKey(0)
    cv2.destroyAllWindows()



善始者实繁

克终者盖寡


推荐阅读

OpenCV学堂-原创精华文章

《tensorflow零基础入门视频教程》

基于OpenCV与tensorflow实现实时手势识别

图像分割网络FCN详解与代码实现

深度学习中的反向卷积

OpenCV SIFT特征算法详解与使用

HOG特征详解与行人检测



听说点【好看】会有好运来

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存