【发布时间】:2012-02-06 14:56:37
【问题描述】:
我正在尝试为一些行为心理学研究提出一个评分系统。
我要求人们在绘图板上画一个字母,然后在它上面描摹。我想评估此跟踪的准确性。所以,你画任何一个字母('a'),然后你再画一次,然后我根据它与你第一次画它的相似程度来给它打分。绘图存储为像素位置。
准确性被评估为与原始字母的接近程度。该方法不需要允许缩放、旋转或位置改变。从概念上讲,它就像两条线之间的区域,只有两条线非常不规则,所以(据我所知)积分不起作用。
我正在用 MATLAB 编写代码,但我们将不胜感激任何概念性帮助。我尝试将绘制的所有像素之间的最小距离相加,但这会为放置良好的单点提供良好(低)分数。
这一定是以前做过的,但我的搜索没有任何运气。
--- 使用下面@Bill 建议的方法的部分解决方案。不起作用,因为 bwdist 梯度太陡了。与 Bill 展示的第二张漂亮的图片不同,它看起来更像原版。
%% 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);
【问题讨论】:
-
你已经描述的方法有什么问题? (最短距离之和)
-
一个点可以得分很高,因为只有一个值可以找到最短距离。例如。想象一个圆中心的点 - 最短距离的总和会很小,这意味着一个好分数,而实际上它是一个非常糟糕的轨迹。