Python + OpenCVで顕著性 (saliecy) マップを実装

Python + OpenCVで顕著性マップを実装 サンプルコード OpenCV
スポンサーリンク




スポンサーリンク

概要

Python + OpenCV の saliencymap で顕著性マップを表示するサンプルを紹介します。

顕著性マップ

ざっくり言うと、

人が視覚的注意の仕組からすると、画像・映像の中でどの部分を注視しやすいかを画像情報から計算するもの

です。
自動作成を行うために用いられることの多い3つの重要度マップ手法 | https://news.mynavi.jp/article/computer_vision-44/

OpenCVに用意されている3つの顕著性検出アルゴリズム



OpenCVに用意されているsaliency機能 ※ 画像をクリックで拡大

OpenCVのsaliencyモジュールには3つの形態があります。

  • Static saliency : 画像から検出するもの
  • Motion saliency : 動画のフレームに依存するもの
  • Objectness
OpenCV: Saliency API

Static saliency

上記で触れた「Static saliency」うちの以下の2つを紹介します。

cv2.saliency.StaticSaliencySpectralResidual_create()
cv2.saliency.StaticSaliencyFineGrained_create()

StaticSaliencySpectralResidual_create()

import cv2

if __name__ == "__main__" :
    image = cv2.imread("./img/src.jpg")
    
    saliency = cv2.saliency.StaticSaliencySpectralResidual_create()
    (success, saliencyMap) = saliency.computeSaliency(image)
    saliencyMap = (saliencyMap * 255).astype("uint8")

    if success is True:
        cv2.imshow("Image", image)
        cv2.imshow("Output", saliencyMap)
        cv2.waitKey(0)

StaticSaliencyFineGrained_create()

import cv2

if __name__ == "__main__" :
    image = cv2.imread("./img/src.jpg")

    saliency = cv2.saliency.StaticSaliencyFineGrained_create()
    (success, saliencyMap) = saliency.computeSaliency(image)

    if success is True:
        cv2.imshow("Image", image)
        cv2.imshow("Output", saliencyMap)
        cv2.waitKey(0)

注意点

上記の実装はOpenCV3.4系のものです。3.3系の不具合があるようです。

参考

OpenCV Saliency Detection - PyImageSearch
This tutorial will show you how to perform saliency detection using OpenCV's 'saliency' module and Python.
OpenCV: Saliency API
OpenCVPyhton画像処理
スポンサーリンク
スポンサーリンク
スポンサーリンク
404 Motivation Not Found