我们如何评估图像强度中的高斯?

时间:2017-05-28 23:34:51

标签: matlab

如果需要,您可以参考this article中的 4.3.1 部分。

enter image description here

如果pI是此图片上的任何像素/强度,并且dS是Hough Space中该行的(rho, theta),则以下语句的含义是什么吗

enter image description here

以下是正确的实施吗?

function val = gaussC(pI, sigma, dS)
    x = pI(1);
    y = pI(2);
    rho = dS(1);
    theta = dS(2);
    exponent = ((x-rho).^2 + (y-theta).^2)./(2*sigma);
    val = (exp(-exponent)); 
end

修改

我的第二个提案,

I = gray_imread('Scratch1.png');

dimesnsion = 5;
sigma = 1;
pI = [22, 114];
dS = [-108, -80];

J = get_matrix_from_image(I, pI, dimension);
var = normpdf(J(:), dS(2), sigma);

get_matrix_from_image.m

function mat = get_matrix_from_image(input_image, ctr_point, dimension)
    [height, width] = size(input_image);
    col_count = width;
    row_count = height;
    xxx = col_count;
    yyy = row_count;

    if(ctr_point(1) < 1 && ctr_point(2) < 1)
        mat = zeros(dimension, dimension);
    else    
        x = ctr_point(1);
        y = ctr_point(2);

        start_x = x - floor(dimension/2);
        end_x = start_x + dimension - 1;        

        start_y = y - floor(dimension/2);    
        end_y = start_y + dimension - 1;

        if(start_x > xxx || end_x>xxx || start_y > yyy || end_y>yyy || ...
           start_x < 1 || end_x<1 || start_y <1 || end_y<1)
             mat = zeros(dimension, dimension);
        else
            mat = input_image(start_x:end_x, start_y:end_y);
        end
    end
end

2 个答案:

答案 0 :(得分:16)

不完全。基本上你是从here手动编码公式(9)。然后:

    ...
    exponent = ((x-rho).^2 + (y-theta).^2)./(2*sigma^2); % sigma is also squared
    val = exp(-exponent); % superfluous bracket removed
    val = val./(2*pi*sigma^2); % you also forgot the denominator part
end

当然,你可以把整个事情写得更有效率。但除非你真的想在很多数据上使用这个公式,否则我会保持这样(它非常易读)。

如果您重视性能,只需使用内置函数:

val = normpdf(pI,dS,sigma)

对于这个问题的新读者:OP在重新编辑之后重新打开了这个问题,完全改变了问题的本质。因此,这个答案现在看起来有点过时了。

答案 1 :(得分:9)

您的代码是正态分发的PDF的错误实现。正态分布的PDF是:

IMO pIxy定义,pI(x,y)dSrho和{{1}定义},即theta,您不能简单地从dS(rho,theta)rhox减去theta。你必须将其中一个转换为另一个。在我的代码中,我已将y转换为dS(rho,theta),然后在PDF的公式中将其用作dS(x,y)

此外,我认为μ将是一个包含5行和2列(带有x和y值的5个像素)的矩阵,根据下图显示这一点,这是图6 链接研究:

现在来到声明,

  

g(p i ,d s )是一个高斯函数,经过评估   在p i 中,具有与检测到的对应的峰值   划痕方向d s 和恒定的标准偏差。

IMO该论文的作者建议采用5个像素,计算PDF并找出峰值的位置。

根据我的理解,其实施应该是:

pI

计算PDF后,找到峰值。