Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab del2和Matlab梯度之间的差异_Matlab_Image Processing_Operators_Gradient - Fatal编程技术网

Matlab del2和Matlab梯度之间的差异

Matlab del2和Matlab梯度之间的差异,matlab,image-processing,operators,gradient,Matlab,Image Processing,Operators,Gradient,有人能解释为什么我在使用Matlab时,得到了与拉普拉斯算子截然不同的结果吗 laplacian = del2(image); 对 [x, y] = gradient(image); [xx, xy] = gradient(x); [yx, yy] = gradient(y); laplacian = xx + yy; 这不应该是同一件事吗?当一个包含dx项时,它们会变得特别发散 在这里举个例子以防万一:我有一个由 [5; 2.5+2.5i; 5i; -2.5+2.5i; -5; -2.5

有人能解释为什么我在使用Matlab时,得到了与拉普拉斯算子截然不同的结果吗

laplacian = del2(image);

[x, y] = gradient(image);
[xx, xy] = gradient(x);
[yx, yy] = gradient(y);
laplacian = xx + yy;
这不应该是同一件事吗?当一个包含dx项时,它们会变得特别发散

在这里举个例子以防万一:我有一个由

 [5; 2.5+2.5i; 5i; -2.5+2.5i; -5; -2.5-2.5i; -5i; 2.5-2.5i] 
乘以它的转置(如果有帮助,我可以发布整个矩阵)。此字段的del2()的内部块(3:6,3:6)为:

[-2.5           -0.625-0.625i  -2.5i           0.625-0.625i ;
 -0.625+0.625i   0             -0.625+0.625i   0            ;
  2.5i          -0.625+0.625i  -2.5           -0.625+0.625i ;
  0.625+0.625i   0             -0.625+0.625i   0            ] 
而xx+yy的内部块(3:6,3:6)是:

[-5             -2.5-2.5i      -5i            -2.5-2.5i     ; 
 -2.5+2.5i      -2.5           -2.5-2.5i      -2.5i         ; 
  5i            -2.5+2.5i      -5             -2.5-2.5i     ; 
  2.5+2.5i       2.5i          -2.5+2.5i      -2.5          ]
正如你所见,这将在任何进一步的方程式中产生巨大的差异。谁能解释一下,谢谢

正如您在上所看到的,它与您比较它的方法不同,系数为
1/4

这在一定程度上解释了示例中的因子4。 我把其余的都归咎于边缘效应:如果你仔细观察,f at(x,y),del2(f(x,y))的拉普拉斯函数只使用(x,y)及其最近邻:x+1,x-1,y+1,y-1计算

梯度函数(以及显式使用梯度函数的散度)也是如此。计算梯度两次涉及最近邻的最近邻。因此,div(grad(f(x,y))实际上是使用(x,y)和x+2,x-2,y+2,y-2来计算的。因此,差


网格间距越大,这两个计算之间的差异就越大。

变量“image”代表什么函数?它是通过imread()加载的图像。您看过源代码吗?“type del2”,“type gradient”它们也可以被带到编辑器中。我可以花一整天的时间试图区分这些差异,但我想有人可能会有一个概念上的解释。什么戏剧性的效果?请举例说明!我只在边缘处得到了一些扭曲。用于测试的函数:
z=X.^2.*Y
是,或者其他函数可能是棋盘格,因为测试“场的分辨率太低了。我想起来了。谢谢。@GuntherStryuf。我之所以要问这个问题,是因为我陷入了一个类似的问题。Matlab定义的拉普拉斯算子真的正确吗?向量梯度的散度不应该等于拉普拉斯算子吗?为什么Matlab在边缘进行外推当他们把它放在文档中时,我觉得它是正确的。2.`div(梯度(F(X))==laplacian(F(X))因此,是的,它不是在matlab实现中吗?实际上没有使用它。我建议你做一些测试,看看什么适合你的需要。3.为了保持相同的向量大小,我在边缘做了外推。两个结果中可能也有一个样本发生了变化!这是正确的。我自己学过,但从未回到这个探索中所以,你得到了答案。:)这是不正确的。使用x和x+1计算梯度。重复的应用程序会使这个x、x+1和x+2发生变化,这只是
del2
的变化。