# Direction of sobel operator may be wrong

Hi,
I am doing sobel exercise in unit2 of course “OpenCV for Robotics”. In course book the sobel operators are set like:

``````#Apply the horizontal sobel operator with a kernel size of 3
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
#Apply the vertical sobel operator with a kernel size of 3
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
``````

in order to get this kind of result:

But I use the same statement and get the controdictory results. My code is:

``````#! /usr/bin/env python
import rospy
import cv2
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError

class Sobela_Class():

def __init__(self):

'/home/user/catkin_ws/src/opencv_for_robotics_images/Unit_2/Course_images/test_img_b.jpg')
self.img = cv2.resize(self.img, (450, 350))
self.img = cv2.cvtColor(self.img, cv2.COLOR_BGR2GRAY)

def main(self):

# sobel operation along with horizontal direction
self.sobel_x = cv2.Sobel(self.img, cv2.CV_64F, 1, 0, ksize=3)
# sobel operation along with vertical direction
self.sobel_y = cv2.Sobel(self.img, cv2.CV_64F, 0, 1, ksize=3)

# show images
cv2.imshow('original image', self.img)
cv2.imshow('sobel_x', self.sobel_x)
cv2.imshow('sobel_y', self.sobel_y)

cv2.waitKey(0)
cv2.destroyAllWindows()

if __name__ == '__main__':

rospy.init_node("sobela_1_node")
sobela = Sobela_Class()
sobela.main()
``````

and results are:

I think there may be a mistake. I am new beginner of OpenCV, but I guess there is similarity in OpenCV and Numpy. For example, the representation of 2D array is defined as [y,x], y for so-called colume, x for so-called row. So maybe here `sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)` is actually for vertical direction and `sobel_x = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)` for horizontal direction.
Please let me know if I am wrong.

I am quite familiar with OpenCV because I have worked on edge-detection projects.

Yes, Sobel operation on X axis gives you vertical lines and Sobel operation on Y axis gives you horizontal lines.

The images in the tutorial’s notebook must be swapped. Those are wrong at the moment.

Regards,
Girish

Thank you @girishkumar.kannan for confirmation!

I’ve just fixed the order of the images in the notebook. Thanks for the feedback!

1 Like