我尝试用sobel进行OpenCV操作来计算图像梯度。以下图像在x
和y
中的渐变:
输出如下:
使用简单的代码:
sobelXY = cv2.Sobel(image, cv2.CV_64F, 1, 1, ksize=5)
输出图像中白色像素/周围的值似乎小于黑色像素/周围的值。例如:
sobelXY[20][50] ~= 0
但是
sobelXY[100][700] ~= -150
我想创建此图像的能量图,在其中可以识别高变化和低变化。当前,如果我拍摄图像的Sobel并检查相应像素处的值,那么我就没有意义。这是因为在变化较大(由白色表示)的地方,渐变值小于零,而在变化较小(或无变化)的地方大于或接近零。
答案 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]