Saliency Map是用计算的方式来模拟人眼在图像上的注意力,目前的一些算法大多在Matlab上进行实现的,但是Python越来越成为我们做科研的最常用工具,所以这篇文章主要来盘点下我自己用的,借助Python来实现的SM的计算算法。

1.pyimgsaliency

它是一个Python库,内置了3种Saliency Map的实现方式,分别是下面三个论文的复现:

  • Minimum Barrier Salient Object Detection at 80 FPS
  • Saliency Optimization from Robust Background Detection
  • Frequency-tuned Salient Region Detection

下面是使用的例子:

import pyimgsaliency as psal
import cv2

# 需要被计算的图片
filename = 'bird.jpg'

# 使用三种方法进行计算
rbd = psal.get_saliency_rbd(filename).astype('uint8')

ft = psal.get_saliency_ft(filename).astype('uint8')

mbd = psal.get_saliency_mbd(filename).astype('uint8')

# 二值化的Saliency Map
binary_sal = psal.binarise_saliency_map(mbd,method='adaptive')


# 图像的展示
img = cv2.imread(filename)
cv2.imshow('img',img)
cv2.imshow('rbd',rbd)
cv2.imshow('ft',ft)
cv2.imshow('mbd',mbd)

#openCV cannot display numpy type 0, so convert to uint8 and scale
cv2.imshow('binary',255 * binary_sal.astype('uint8'))

cv2.waitKey(0)