Фурье-распознавание символов в Matlab - PullRequest
3 голосов
/ 03 марта 2011

У меня есть исходный код, который может распознать положение символа на изображении. но есть строка кода, которую я не могу понять, ПОЧЕМУ?

[r c]=size(mainImage);

% Why rotate 90 degree? why multyply? why??? :-??
splash = real(ifft2(fft2(mainImage) .* fft2(rot90(object, 2), r, c)));

thresh = max(splash(:))-10;
for i=1:r
    for j=1:c
        if splash(i,j)>=thresh 
            splash(i,j)=1;
        else
           splash(i,j)=0;
        end
    end
end

1 Ответ

5 голосов
/ 03 марта 2011

Мои знания о БПФ немного устарели, но я думаю это, по сути, вычисление взаимной корреляции .

Умножение в частотной области эквивалентно свертке в пространственно-временной области. И кросс-корреляция эквивалентна свертке с инвертированным сигналом - это то, что пытается сделать поворот на 180 °. Сверху моей слегка пьяной головы я не могу сказать, должна ли эта конкретная реализация работать.

Matlab имеет функции для непосредственного расчета взаимных корреляций, но они могут находиться в наборах инструментов, которые не были доступны автору (или ожидаемым пользователям) этого кода.

...