Matlab - Расчет импульса изображения - PullRequest
1 голос
/ 29 июля 2011

Есть ли функция или набор инструментов, который позволяет вычислять момент изображения?

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

И я хочу применить моменты изображения к данным этого типа. Есть ли оптимальная реализация Matlab для этого типа данных?

1 Ответ

6 голосов
/ 29 июля 2011

В моем предыдущем ответе я написал реализацию для подмножества функции 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

Код соответствует уравнениям из статьи Википедии, поэтому никаких дополнительных объяснений не требуется ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...