Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Finding Leftmost and Rightmost Edge of Binary Image

I am trying to find the leftmost and rightmost edge of a binary image like the one attached. I am currently doing this by using a for loop starting from the center of the white portion and working towards a direction until I get to my first black pixel. This works great except it is very slow. Is there any other ways to do this, but in a faster way. Thanks all who reply.

Binary Image

#### Start Image Processing #########

hsv = cv2.cvtColor(cv_image, cv2.COLOR_BGR2HSV)
lower_red = np.array([0,100,100])
upper_red = np.array([10,255,255])
mask = cv2.inRange(hsv, lower_red, upper_red)
mat=cv.GetMat(cv.fromarray(mask))
moments=cv.Moments(mat)
yc_red= moments.m01/moments.m00
xc_red=moments.m10/moments.m00
width, height = cv.GetSize(mat)
max_right_red_x = 0
for a in range(int(round(xc_red)), width, 3):
     for b in range (0, height, 3):
        if(mat[b,a] == 0):
           continue
        elif(a > max_right_red_x):
           max_right_red_x = a
           max_right_red_y = b
max_left_red_x = width
for a2 in range(int(round(xc_red)), 0, -3):
     for b2 in range (0, height, 3):
        if(mat[b2,a2] == 0):
           continue
        elif(a2 < max_left_red_x):
           max_left_red_x = a2
           max_left_red_y = b2

### End of Image Processing ######