Какова максимальная разница ориентации между двумя локальными характерными точками? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь рассчитать максимальную разницу между двумя ранее определенными точками локальных объектов. Моя ключевая точка определяется как x, y, масштаб, ориентация и собственный вектор, и я использую библиотеку OpenImaj в Java в качестве основы. (http://openimaj.org/apidocs/org/openimaj/image/feature/local/keypoints/Keypoint.html)

Игнорируя масштаб, чтобы рассчитать максимальную разницу между двумя ключевыми точками на изображении, я использую следующее.

private double maxDiff(int width, int height) {
        Keypoint p1 = new Keypoint(0, 0, 0, 0, null);
        Keypoint p2 = new Keypoint(width, height, (float) (Math.PI * 2), 0, null);//scale neglected
        return calculateDiff(new Pair<>(p1, p2));
    }
private double calculateDiff(Pair<Keypoint> pair) {
        Keypoint p1 = pair.getFirstObject();
        Keypoint p2 = pair.getSecondObject();
        return Math.sqrt(Math.pow((p1.x - p2.x), 2) + Math.pow((p1.y - p2.y), 2)
                + Math.pow((p1.scale - p2.scale), 2) + Math.pow((p1.ori - p2.ori), 2));
    }

Это предполагает две точки, расположенные в противоположных углах изображений и имеющие максимальную ориентацию. Я буду рассчитывать евклидово расстояние по этим двум точкам.

В приведенном выше алгоритме я использую Math.PI * 2 в качестве максимальной ориентации. Я делаю это правильно или фактическая максимальная ориентация только Math.PI?

...