cif*_*ifz 13
据我所知,没有内置的高斯滤波器导数.你可以很容易地为自己创建一个如下:
对于2D
G1=fspecial('gauss',[round(k*sigma), round(k*sigma)], sigma);
[Gx,Gy] = gradient(G1);
[Gxx,Gxy] = gradient(Gx);
[Gyx,Gyy] = gradient(Gy);
Run Code Online (Sandbox Code Playgroud)
其中k确定它的大小(取决于你想要支持的程度).
对于1D是相同的,但您没有两个渐变方向,只有一个.你也可以用另一种方式创建高斯滤波器,我假设你已经有了自己喜欢的方法.
在这里,我给了你第二个订单,但你可以在这里看到模式以继续进一步的订单.
您发布的卷积滤波器([1 0 -1])看起来像有限差分.虽然我认为你在概念上是正确的,但最正确和最常见的方法是使用[1 -1]或[-1 1],在中间你用0来跳过中心样本近似导数.这也可以起作用(但是记住这是高阶与真实结果不同的近似值),但我通常更喜欢上面发布的方法.
注意:如果您确实对2D滤波器感兴趣,则高斯族的导数具有可操纵性,这意味着您可以轻松地从我放弃的任何方向创建高斯导数的滤波器.假设您想要的方向定义为
cos(theta), sin(theta)
Run Code Online (Sandbox Code Playgroud)
那么高斯在那个方向上的导数就是
Gtheta = cos(theta)*Gx + sin(theta)*Gy
Run Code Online (Sandbox Code Playgroud)
如果你以递归的方式重新申请,你可以去任何你喜欢的订单.