在图像上创建居中的高斯模糊蒙版

时间:2018-11-12 14:57:43

标签: image matlab image-processing gaussian

我尝试创建一个高斯噪声蒙版,该蒙版应以大小sizeX,sizeY覆盖在我的图像上。我已经找到了一种通过使用meshgrid函数执行此操作的方法,并且效果很好:

function gaussian = GetGaussNoiseImage(sizeX, sizeY, A, std) 
indicator = -floor(sizeX/2) : floor(sizeY/2);
[X Y] = meshgrid(indicator, indicator);
h = exp(-(X.^2 + Y.^2) / (2*std^2));
mesh(h);

我的第一种方法是:

function gaussian = GetGaussNoiseImage(sizeX, sizeY, A, std)
[sizeX sizeY] = size(I)
centerX = sizeX/2;
centerY = sizeY/2;
gaussian = zeros(sizeX, sizeY); 

for i = 1:sizeX
    for j = 1:sizeY
        gaussian(i, j) = A.*exp(- ((i - centerX).^2 + (j - centerY).^2 )/2*std^2);
    end
end
mesh(gaussian);

对我来说,这是完全一样的方法,只是包含两个for循环。由于某种原因,它不想运行。有人可以向我解释我做错了什么吗?

这是我的输出图像:

output

1 个答案:

答案 0 :(得分:0)

您在高斯方程中有一个错误。您写道:

gaussian(i, j) = A.*exp(- ((i - centerX).^2 + (j - centerY).^2 )/2*std^2);

但是您应该改为:

gaussian(i, j) = A.*exp(- ((i - centerX).^2 + (j - centerY).^2 )/ ( 2*std^2 ) );
                                                                  ^         ^

请注意添加的括号!您在第一个代码段中包含了这些,但是在第二个代码段中却忘记了它们。