【发布时间】:2018-11-13 00:09:19
【问题描述】:
我尝试创建一个高斯噪声掩码,它应该覆盖在我的图像上,尺寸为 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 循环。出于某种原因,它不想运行。谁能向我解释我做错了什么?
这是我的输出图像:
.
【问题讨论】:
-
“不想工作”是什么意思?它导致了错误?它没有显示正确的结果?怎么了?显示预期和当前的输出以帮助...
-
无论我如何更改参数(std、A、图像大小等),我都会得到一个零乘零矩阵...
-
std是要更改的参数。但是你想做什么?高斯模糊是通过卷积高斯核实现的,而不是通过覆盖它。 -
是的,这是正确的,但这是我检查它是否有效的方式。通过叠加我的意思是我想要一个位于在 sizeX/2 和 sizeY/2 的中间。抱歉,它可能有点“草率”;-)
标签: image matlab image-processing gaussian