我正在尝试手动实现 sobel 运算符。这是我在 python 2.7 中的代码:
import cv2
import numpy as np
sobelX = np.array([[1,0,-1],[2,0,-2],[1,0,-1]])
sobelY = sobelX.T
imgoriginal = cv2.imread("building.bmp")
imgv = cv2.filter2D(imgoriginal, -1, sobelY)
imgh = cv2.filter2D(imgoriginal, -1, sobelX)
imgboth = (imgv**2 + img**2)**0.5
这是输出:
由于某种原因,算子的水平和垂直分量似乎有很好的效果,但组合图像有很多噪声。
我注意到当我执行 (imgv**2)**0.5 之类的操作时,也会引入大量噪音,即使理想情况下,我应该得到大致相同的图像。
有谁知道这里发生了什么?我应该以不同的方式组合图像吗?