我希望在MATLAB中对一个三维数据矩阵进行非对称高斯滤波。使用imgaussfilt3,我可以对称地进行滤波(所有三个维度的模糊效果相同)。但是,我只能为sigma提供一个值,因此在所有维度上过滤的效果都相同。
在另一个线程中,我发现可以使用fspecial函数将过滤器分离并水平和垂直应用(在那种情况下仅为2D)。不幸的是,我无法使其正常工作(在一个小示例矩阵中使用imgaussfilt时得到的结果与fspecial不同),而fspecial的文档说高斯模式不再建议使用,要改为使用imgaussfilt。
以下是一个示例:
在另一个线程中,我发现可以使用fspecial函数将过滤器分离并水平和垂直应用(在那种情况下仅为2D)。不幸的是,我无法使其正常工作(在一个小示例矩阵中使用imgaussfilt时得到的结果与fspecial不同),而fspecial的文档说高斯模式不再建议使用,要改为使用imgaussfilt。
以下是一个示例:
matrix = rand(30,30,30);
sigma = 2;
matrix_symblur = imgaussfilt3(matrix,sigma);
我现在希望改变的是sigma值,分别在三个维度上取1、2和3,这样模糊效果在三个维度上就会有不同的强度。
我正在使用MATLAB R2017a。有人可以帮忙吗?
imfilter
。祝你好运! - Dev-iL