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