用prewitt算子计算梯度

Calculating gradient with prewitt operator

我是新手,正在尝试了解它。

我在 Google 上搜索了各种链接,但有一些关于 如果你能告诉我如何对梯度进行计算,我会很高兴但是通过计算 prewitt 运算符。

例如: 你有图像 5X5 -> I(x,y) = |4-i-j|;
我,j = 0..4;

如何使用 prewitt 运算符(Gx 和 Gy)进行计算??

使用称为 convolution 的数学运算对图像执行梯度计算。下面给出fg两个矩阵的卷积公式

在伪代码中,算法为:

let f be the prewitt (convolution) operator
let g be the image
let h be the convolution result

for x from 1 to height of h
    for y from 1 to width of h
       h[x,y] = 0;
       for n1 from top to bottom of f
           for n2 from left to right of f
               h[x,y] += f[n1,n2]*g[x-n1,y-n2]

一些languages/libraries为您实现卷积。

python 的流行 scipy 包有一个内置函数 prewitt 用于准确计算您描述的内容:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.filters.prewitt.html#scipy.ndimage.filters.prewitt