图像显著性检测 LC算法

图像显著性检测算法之一:LC Algorithm

基本思想

计算某个像素在整个图像上的全局对比度,即该像素与图像中其他所有像素在颜色上的距离之和作为该像素的显著值。

显著值计算

图像 II 中某个像素 IkIk 的显著值计算如下:

其中IiIi的取值范围为 [0,255][0,255], 即为灰度值。

上式等于:

NN表示图像中像素的数量。

给定一张图像,每个像素IkIk的颜色值已知。假定Ik=amIk=am,则上式可进一步重构:

其中,fnfn表示图像中第nn个像素的频数,以直方图的形式表示。

代码实现

直接调用OpenCV接口,实现图像中像素的直方图统计,即统计[0,255][0,255]中每个灰度值的数量。

# 直方图,统计图像中每个灰度值的数量

hist_array = cv2.calcHist([image_gray], [0],None, [256], [0.0,256.0])

计算像素与其他所有像素在灰度值上的距离。

defcal_dist(hist):

    dist = {}

forgrayinrange(256):

value =0.0

forkinrange(256):

value += hist[k][0] * abs(gray - k)

        dist[gray] = value

returndist

将灰度值图像中的像素值更新为对比度值(即距离度量)。

foriinrange(image_width):

forjinrange(image_height):

        temp = image_gray[j][i]

        image_gray_copy[j][i] = gray_dist[temp]

image_gray_copy = (image_gray_copy - np.min(image_gray_copy)) / (np.max(image_gray_copy) - np.min(image_gray_copy))

代码链接: https://github.com/asdfv1929/Saliency_LC_Algorithm

结果展示

原图:

图像显著性检测 LC算法_第1张图片

显著图:

图像显著性检测 LC算法_第2张图片

你可能感兴趣的:(图像显著性检测 LC算法)