了解用于创建能量图的sobel操作输出

2024-09-26 18:10:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试了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

我想为这张图片绘制一张能量图,在这里我可以识别高变化和低变化。目前,如果我采取索贝尔的图像和检查值在相应的像素,我无法理解。这是因为在变化较大(用白色表示)的地方,梯度值小于零,而在变化较小(或没有变化)的地方,梯度值大于或接近零


Tags: 代码图像image地方单位像素cv2opencv
1条回答
网友
1楼 · 发布于 2024-09-26 18:10:16

给定像素值在[0,255]范围内的图像,Sobel操作符的输出可以在[-255,255]范围内。因此,您需要规范化Sobel输出。您可以使用norm min\u max方法来执行此操作。你知道吗

sobelXY = cv2.normalize(sobelXY, 
                dst = sobelXY, 
                alpha = 0, 
                beta = 1, 
                norm_type = cv2.NORM_MINMAX, 
                dtype = cv2.CV_32F)

这将规范化您的输入,使值介于[alpha,beta]

相关问题 更多 >

    热门问题