我试图在Matlab中制作高斯滤波器而不使用imfilter()和fspecial().我试过这个,但结果不像我和imfilter和fspecial那样.
这是我的代码.
function Gaussian_filtered = Gauss(image_x, sigma)
% for single axis
% http://en.wikipedia.org/wiki/Gaussian_filter
Gaussian_filtered = exp(-image_x^2/(2*sigma^2)) / (sigma*sqrt(2*pi));
end
Run Code Online (Sandbox Code Playgroud)
对于2D高斯,
function h = Gaussian2D(hsize, sigma)
n1 = hsize;
n2 = hsize;
for i = 1 : n2
for j = 1 : n1
% size is 10;
% -5<center<5 area is covered.
c = [j-(n1+1)/2 i-(n2+1)/2]';
% A product of both axes is 2D Gaussian filtering
h(i,j) = Gauss(c(1), sigma)*Gauss(c(2), sigma);
end
end
end
Run Code Online (Sandbox Code Playgroud)
最后一个是
function …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MATLAB学习图像处理,我已阅读有关图像的过滤器.考虑这段代码:
gaussianFilter = fspecial('gaussian', [7, 7], 5) ,
Run Code Online (Sandbox Code Playgroud)
这构建了一个7行和7列的高斯滤波器矩阵,标准偏差为5.因此,滤波器矩阵的大小为7 x 7.
该矩阵的大小如何在过滤时有效?(这个矩阵有什么作用?)
我应该通过哪些措施在代码中设置滤镜矩阵的大小?
matlab filtering signal-processing image-processing gaussian