Я пытаюсь придумать систему оценки для некоторых исследований в области поведенческой психологии.
Я прошу людей нарисовать букву, а затем обвести ее, как на графическом планшете. Я хочу оценить точность этой трассировки. Итак, вы рисуете любую букву («а»), затем делаете это снова, затем я оцениваю ее в зависимости от того, насколько она была похожа на первую, когда вы ее нарисовали. Рисунки хранятся в виде пиксельных местоположений.
Точность оценивается как близость к исходному письму. Этот метод не требует изменения масштаба, поворота или положения. Концептуально это похоже на область между двумя линиями, только линии очень неправильные, поэтому интегралы (насколько мне известно) не работают.
Я пишу в 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);