了解sobel操作输出以创建能量图

时间:2019-09-28 18:02:24

标签: python opencv computer-vision

我尝试用sobel进行OpenCV操作来计算图像梯度。以下图像在xy中的渐变:

enter image description here

输出如下:

enter image description here

使用简单的代码:

    sobelXY = cv2.Sobel(image, cv2.CV_64F, 1, 1, ksize=5)

输出图像中白色像素/周围的值似乎小于黑色像素/周围的值。例如:

sobelXY[20][50] ~= 0

但是

sobelXY[100][700] ~= -150

我想创建此图像的能量图,在其中可以识别高变化和低变化。当前,如果我拍摄图像的Sobel并检查相应像素处的值,那么我就没有意义。这是因为在变化较大(由白色表示)的地方,渐变值小于零,而在变化较小(或无变化)的地方大于或接近零。

1 个答案:

答案 0 :(得分:0)

给出像素值在[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]