i want to create a Saliency Map based on itti model via OpenCV(Python). what i'm doing is that: 1- first i change image color space from RGB to LAB color space 2- for each color channel, i create a Pyramid with 6 level 3- from bigger image to smaller, first i make them a fixed size, then differ them via cv2.subtract command.

What i expect is that, in each step of differencing, i should lose details and focus on salient regions but what a get is a black screen. in fact, subtracting removes all image data.

this is my code:

import cv2
import numpy as np

sign =  cv2.imread("sign.jpg")

#size of image
height = np.size(sign, 0)
width = np.size(sign, 1)

#converting LAB color space
lab = cv2.cvtColor(sign, cv2.COLOR_BGR2LAB)

#extracting color channels
l= lab[:,:,0]
a= lab[:,:,1]
b= lab[:,:,2]

a_channel = a.copy()
b_channel = b.copy()

a_prm = [a_channel]
b_prm = [b_channel]

for i in xrange(6):
    a_channel = cv2.pyrDown(a_channel)
    b_channel = cv2.pyrDown(b_channel)

    a_prm.append(cv2.resize(a_channel, dsize=(width,height)))
    b_prm.append(cv2.resize(b_channel, dsize=(width,height)))

a_map = a_prm[0]
for i in range(1,6):
        a_map = cv2.subtract(a_map,a_prm[i])


I am developing the same algorithm, but I am using C++ one of the biggest problem I got was that I did the math (subtraction and sum) using uchar values obtaining black images. Try transforming uchar to float to do the math and then go back to uchar to visualize the image.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.