我尝试用sobel进行OpenCV操作来计算图像梯度。下图的x
和y
中的渐变:
输出如下:
使用简单代码:
sobelXY = cv2.Sobel(image, cv2.CV_64F, 1, 1, ksize=5)
看来输出图像中白色像素/周围的值小于黑色像素/周围的值。例如:
sobelXY[20][50] ~= 0
但是
sobelXY[100][700] ~= -150
这是什么意思?有没有一种方法可以表示黑色像素始终比白色像素占据较低值的输出?
给出像素值在[0,255]
范围内的图像,Sobel运算符的输出可以在[-255,255]
范围内。因此,您将需要标准化您的Sobel输出。您可以使用norm min_max方法执行此操作。
sobelXY = cv2.normalize(sobelXY,
dst = sobelXY,
alpha = 0,
beta = 1,
norm_type = cv2.NORM_MINMAX,
dtype = cv2.CV_32F)
这将规范化您的输入,使值介于[alpha,beta]之间