Итак, мне дали «меру сходства», но никакой информации. Мера подобия называется евклидовым расстоянием в квадрате или суммой квадратов расстояний, и у меня есть одна формула:
D2 = Σ(I(x,y) – I’(x,y))^2
Википедия говорит мне это:
d(p,q) = (p1 − q1)^2 + (p2 − q2)^2 + ... + (pi − qi)^2 + ... + (pn − qn)^2
У меня есть пара стереоизображений, то есть два изображения одного и того же объекта, одно с левого глаза, одно с правого глаза. Я могу извлечь информацию о пикселях из соответствующих координат на левой и правой картинках:
private double euclidDistSquared(BufferedImage leftRegion, BufferedImage rightRegion) {
double temp = 0;
double ssd = 0;
Raster left = leftRegion.getData();
Raster right = rightRegion.getData();
for(int x = 0; x < leftRegion.getWidth(); x++) {
for(int y = 0; y < leftRegion.getHeight(); y++) {
temp = left.getSampleDouble(x,y,0) - right.getSampleDouble(x,y,0);
temp *= temp;
ssd += temp;
}
}
ssd = 1/ssd;
return ssd;
}
Что я делаю потом правильно? Эта первая временная строка - это извлечение и вычитание значений пикселей в соответствующих координатах, но кое-что из того, что я видел в Интернете, предполагает, что я хочу вычесть свои значения x и y отдельно (как бы я это сделал? !). Кроме того, значение, которое я получаю для ssd, в конце концов, очень мало, например 3.792346286724133E-6, имеет ли это смысл?
отредактировано для получения дополнительной информации.