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

Create centered gaussian blur mask on image

我试图创建一个高斯噪声蒙版,它应该覆盖在我的图像上,尺寸为 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 循环。出于某种原因,它不想运行。谁能向我解释我做错了什么?

这是我的输出图像:

.

你的高斯方程有误。你写:

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 ) );
                                                                  ^         ^

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