如何计算拉普拉斯形式梯度?
How to calculate laplacian form gradient?
我正在处理阴影去除。首先,我必须计算图像在两个方向上的梯度。 g(x,y) = -2*f(x,y) + f(x+1,y) + f(x,y+1)。然后我对梯度做了一些计算并稍微修改它。
当我必须从修改后的梯度计算拉普拉斯算子(二阶导数)时,问题就来了。
我知道拉普拉斯滤波器有一个矩阵:[0,1,0: 1,-4,1; 0,1,0]。
但问题是如果细胞已经被修改,如何从梯度计算拉普拉斯算子?
梯度计算:
[Gx,Gy] = imgradientxy(img_G,'intermediate');
greenGradient = Gx + Gy;
谢谢!
使用imgradientxy(I,'intermediate')
计算梯度时:
GX(j, i) = I(j, i+1) - I(j, i)
GY(j, i) = I(j+1, i) - I(j, i)
拉普拉斯算子:
L(j, i) = I(j, i-1) + I(j, i+1) + I(j-1, i) + I(j+1, i) - 4*I(j, i)
现在如果我们计算GX
和GY
的梯度:
GGX(j, i) = GX(j, i) - GX(j, i-1)
= I(j, i+1) - I(j, i) - I(j, i) + I(j, i-1)
= I(j, i-1) + I(j, i+1) - 2*I(j, i)
GGY(j, i) = I(j-1, i) + I(j+1, i) - 2*I(j, i)
所以
L(j, i) = GGX(j, i) + GGY(j, i)
请注意,用于查找 I
梯度与 GX
和 GY
梯度的方法之间存在像素偏移。
I = im2double(imread('coins.png'));
[GX, GY] = imgradientxy(I,'intermediate');
L = imfilter(I, [0 1 0; 1 -4 1; 0 1 0], 'replicate');
GGX = imfilter(GX, [0 0 0; -1 1 0; 0 0 0], 'replicate');
GGY = imfilter(GY, [0 -1 0; 0 1 0; 0 0 0], 'replicate');
L2 = GGX+GGY;
E = (L2-L).^2;
我正在处理阴影去除。首先,我必须计算图像在两个方向上的梯度。 g(x,y) = -2*f(x,y) + f(x+1,y) + f(x,y+1)。然后我对梯度做了一些计算并稍微修改它。
当我必须从修改后的梯度计算拉普拉斯算子(二阶导数)时,问题就来了。
我知道拉普拉斯滤波器有一个矩阵:[0,1,0: 1,-4,1; 0,1,0]。 但问题是如果细胞已经被修改,如何从梯度计算拉普拉斯算子?
梯度计算:
[Gx,Gy] = imgradientxy(img_G,'intermediate');
greenGradient = Gx + Gy;
谢谢!
使用imgradientxy(I,'intermediate')
计算梯度时:
GX(j, i) = I(j, i+1) - I(j, i)
GY(j, i) = I(j+1, i) - I(j, i)
拉普拉斯算子:
L(j, i) = I(j, i-1) + I(j, i+1) + I(j-1, i) + I(j+1, i) - 4*I(j, i)
现在如果我们计算GX
和GY
的梯度:
GGX(j, i) = GX(j, i) - GX(j, i-1)
= I(j, i+1) - I(j, i) - I(j, i) + I(j, i-1)
= I(j, i-1) + I(j, i+1) - 2*I(j, i)
GGY(j, i) = I(j-1, i) + I(j+1, i) - 2*I(j, i)
所以
L(j, i) = GGX(j, i) + GGY(j, i)
请注意,用于查找 I
梯度与 GX
和 GY
梯度的方法之间存在像素偏移。
I = im2double(imread('coins.png'));
[GX, GY] = imgradientxy(I,'intermediate');
L = imfilter(I, [0 1 0; 1 -4 1; 0 1 0], 'replicate');
GGX = imfilter(GX, [0 0 0; -1 1 0; 0 0 0], 'replicate');
GGY = imfilter(GY, [0 -1 0; 0 1 0; 0 0 0], 'replicate');
L2 = GGX+GGY;
E = (L2-L).^2;