Сравнение неправильных форм

Я пытаюсь придумать систему подсчета баллов для некоторых исследований в области поведенческой психологии.

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

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

Я пишу в MATLAB, но любая концептуальная помощь была бы признательна. Я пробовал суммировать минимальное расстояние между всеми нарисованными пикселями, но это дает хорошие (низкие) оценки хорошо расположенным одиночным точкам.

Должно быть, это уже делалось, но мне не везет с поиском. Любая помощь будет очень признательна!

--- Частичное решение с использованием метода, предложенного @Bill ниже. Не работает, так как градиент bwdist слишком крутой. Вместо красивого второго изображения, которое показывает Билл, оно больше похоже на оригинал.

%% Letter to image 
im = zeros(1080,1920,3); % The screen (possible pixel locations) 
% A small square a bit like the letter 'a', a couple of pixels wide. 
pixthick = 5; 
im(450:450+pixthick,[900:1100],:) = 1; 
im(550:550+pixthick,[900:1100],:) = 1; 
im([450:550],900:900+pixthick,:) = 1; 
im([450:570],1100:1100+pixthick,:) = 1;
subplot(2,1,1); imagesc(im); %% atransbw = bwdist(im(:,:,1)<0.5); subplot(2,1,2); 
imagesc(atransbw);
5
задан dgmp88 6 February 2012 в 22:48
поделиться