Я попытался создать маску гауссовского шума, которая должна быть наложена на мое изображение с размером 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. По какой-то причине он не хочет функционировать, хотя. Кто-нибудь может объяснить мне, что я сделал не так?
Вот мое выходное изображение:
.