Когда вы получаете один результат, вы уверены, что это правильно? Если это так, вы можете сделать что-то вроде:
function pos = ChoosePosition(posGood, posA, posB)
%# posGood is the known good answer, posA and posB are candidates
if norm(posA - posGood) > norm(posB - posGood)
pos = posB;
else
pos = posA;
Если вы хотите автоматизировать все, вы можете собрать все измерения в матрицу Nx2 и сделать следующее:
function [dist, idx] = RankPositions(pos)
%# pos should be an Nx2 matrix of x,y candidate positions
dist = pos - repmat(mean(pos), length(pos), 1); %# this is for octave, matlab might handle pos - mean(pos)
dist = norm(dist, 'rows');
[dist, idx] = sort(dist);
%# one liner:
%# [dist, idx] = sort(norm(pos - repmat(mean(pos), length(pos), 1)), 'rows'));
Это даст вам ранжированный ассортимент расстояния каждой точки от среднего значения всех точек. Затем, поскольку вы знаете, что у вас есть (например) 10 изображений, но вы получили 14 (или что-то еще), вы можете просто взять 10 самых низких расстояний как истинные позиции:
realpos = pos(idx(1:10));