MATLAB中根据self-snake模型生成边沿停止参数

Generation of edge stop parameter according to self-snake model in MATLAB

我想根据G.Sapiro 的self snake 模型生成一个edge stop 参数来去除乘法噪声。函数是 g(r) = 1/(1+(r/k)^2),其中 r 是 ∇u 的大小。 u 是实际图像。我的代码如下

[GradientX,GradientY] = gradient(double(originimg));
Gr = sqrt((GradientX.*GradientX)+(GradientY.*GradientY));
[X1, Y1]=size(Gr);
for i=1:X1
    for j=1:Y1
        r = mean(Gr(i,:));
    end
end
stParam = 1 / (1 + ((r / gradTP)^2));

gradTP 的值=1。

但我没有得到预期的结果。 实际上它给出了一个矩阵作为结果,但根据我正在关注的论文,参数必须是一个标量。请提出一些出路。提前致谢。

根据你的评论,你说你想找到整个图像的渐变。我假设您的意思是为整个图像计算一个幅度值。一种方法可能是找到平均幅度值。这可以通过简单地找到 Gr 的总体平均值来完成。然后您可以使用它来插入您的公式以获得结果。

因此,尝试这样的事情:

[GradientX,GradientY] = gradient(double(originimg));
Gr = sqrt((GradientX.*GradientX)+(GradientY.*GradientY));

%// Change
r = mean(Gr(:));

stParam = 1 / (1 + ((r / gradTP)^2));