【问题标题】:How to calculate laplacian form gradient?如何计算拉普拉斯形式梯度?
【发布时间】:2020-08-29 14:14:21
【问题描述】:

我正在处理阴影移除。首先,我必须从图像的两个方向计算梯度。 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;

谢谢!

【问题讨论】:

  • 这是matlab代码吗?我认为这需要一个 matlab 标签。
  • 你必须计算梯度的拉普拉斯算子,还是给定梯度的原始图像的拉普拉斯算子?
  • 我有一些图像存在阴影。首先我计算梯度,我可以根据梯度幅度和不变图像去除阴影。从那里开始,我必须根据梯度计算拉普拉斯算子。

标签: matlab image-processing gradient laplacian


【解决方案1】:

使用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)

现在如果我们计算GXGY 的梯度:

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 的梯度和GXGY 的梯度的方法之间存在像素偏移。

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;

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多