我正在尝试使用需要使用图像处理工具箱功能fspecial()
的MATLAB脚本。
我没有图像处理工具箱,但确实有信号处理工具箱,其中包含用于创建过滤器的工具套件。遗憾的是,我对过滤器创建基本上一无所知,我希望看看能否使用信号处理工具箱中的过滤器创建工具来确定是否可以复制以下代码行:
fspecial('gaussian', [5 1], 0.75)
答案 0 :(得分:1)
fspecial()
创建一组用户指定的二维过滤函数,并提供一组默认值。
以下函数将产生等效的2D高斯函数。当使用选项fspecial
'gaussian'.
中的实现
您可以通过h = gaussian2D([5 1], 0.75);
为您举例说明。
%% 2D Gaussian filter
function h = gaussian2D(siz, std)
% create the grid of (x,y) values
siz = (siz-1)./2;
[x,y] = meshgrid(-siz(2):siz(2),-siz(1):siz(1));
% analytic function
h = exp(-(x.*x + y.*y)/(2*std*std));
% truncate very small values to zero
h(h<eps*max(h(:))) = 0;
% normalize filter to unit L1 energy
sumh = sum(h(:));
if sumh ~= 0
h = h/sumh;
end