
Python + OpenCVで顕著性 (saliecy) マップを実装
2018-12-144 min read
目次
概要
Python + OpenCV の saliencymap で顕著性マップを表示するサンプルを紹介します。
顕著性マップ
ざっくり言うと、
人が視覚的注意の仕組からすると、画像・映像の中でどの部分を注視しやすいかを画像情報から計算するものです。 自動作成を行うために用いられることの多い3つの重要度マップ手法 | https://news.mynavi.jp/article/computer_vision-44/
OpenCVに用意されている3つの顕著性検出アルゴリズム

OpenCVのsaliencyモジュールには3つの形態があります。
- Static saliency : 画像から検出するもの
- Motion saliency : 動画のフレームに依存するもの
- Objectness
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系の不具合があるようです。
参考
https://www.pyimagesearch.com/2018/07/16/opencv-saliency-detection/
Recommends
New Posts
Hot posts!
Date
Tags
Author