Matlab - 图像动量计算

Sim*_*mon 1 matlab image-processing

是否有功能或工具箱允许计算图像矩?

http://en.wikipedia.org/wiki/Image_moment

我想要应用此函数的数据类型是二进制.它基本上是一个填充0和1的矩阵.

Data =

     1     0     0     0     0     0
     1     1     1     0     1     1
     0     1     1     1     1     0
     1     0     1     1     0     0
     0     1     1     0     0     0
     1     1     0     0     0     0
     0     0     0     0     0     0
     1     0     0     1     0     0
Run Code Online (Sandbox Code Playgroud)

我想在这类数据上应用图像时刻.是否有针对此类数据的最佳Matlab实现?

Amr*_*mro 6

在我之前的一个答案中,我已经为regionprops函数的一个子集编写了一个实现.目标是找到图像方向,这是从图像时刻得出的.以下是与您相关的部分:

function outmom = raw_moments(im,i,j)
    outmom = sum(sum( ((1:size(im,1))'.^j * (1:size(im,2)).^i) .* im ));
end

function cmom = central_moments(im,i,j)
    rawm00 = raw_moments(im,0,0);
    centroids = [raw_moments(im,1,0)/rawm00 , raw_moments(im,0,1)/rawm00];
    cmom = sum(sum( (([1:size(im,1)]-centroids(2))'.^j * ...
                     ([1:size(im,2)]-centroids(1)).^i) .* im ));
end
Run Code Online (Sandbox Code Playgroud)

该代码遵循维基百科文章中的等式,因此无需其他说明.