像素块的渐变

时间:2014-04-07 04:45:57

标签: image-processing

我正在阅读一些关于图像方向估计的文章,它说我必须计算一个块w x w的梯度大小。等式是这样的:

(1)
Vx(i,j) = Σ[u = i-w/2... i+w/2] Σ[v = i-w/2... i+w/2] 2dx(u,v)dy(u,v)           

(2)
Vy(i,j) = Σ[u = i-w/2... i+w/2] Σ[v = i-w/2... i+w/2] d^2x(u,v)d^2y(u,v)

我试图找到计算像素渐变的方法(dx,dy)并找到一个:

(3)
dx = 1/2 * ( I(x+1, y) - I(x-1, y) )

(4)
dy = 1/2 * ( I(x, y+1) - I(x, y-1) )

我的问题是(1),(2),(3),(4)是否正确(或者你能推荐正确的公式)?它们是我关于图像方向估计的文章推荐的方法吗?我看过这个Image Processing - Computing gradients at each pixel?。我只看到Sobel是3x3矩阵,如果我使用带有w的块,那该怎么办? 3或如何使用掩模3x3到16x16像素块。我只需要一个精确的方程式来实现文章方法,所以阅读一本关于图像处理的书是我的最后选择,特别是因为我必须从头到尾阅读(我买了一个并且浏览内容表没有帮助 - 我无法理解标题所说的内容,现在正在阅读第01章-_-) 感谢您阅读此问题。

1 个答案:

答案 0 :(得分:1)

我找到了正确的方程式。请注意,(2)还有1个减号

(1)
Vx(i,j) = Σ[u = i-w/2... i+w/2] Σ[v = i-w/2... i+w/2] 2dx(u,v)dy(u,v)           

(2)
Vy(i,j) = Σ[u = i-w/2... i+w/2] Σ[v = i-w/2... i+w/2] d^2x(u,v) - d^2y(u,v)

(3),(4)有点正确,因为它也是matlab中计算梯度的一个选项,但Sobel算子是首选。