Алгоритм измерения евклидова расстояния между пикселями в изображении

У меня есть несколько изображений, где я знаю фокусное расстояние, количество пикселей, размеры и положение (из GPS). Все они в большой косой манере, снятые на месте коммерчески доступными камерами.

http://desmond.yfrog.com/Himg411/scaled.php?tn=0&server=411&filename=mjbm.jpg&xsize=640&ysize=640

Каков будет лучший метод для расчета евклидовых расстояний между определенными пикселями в изображении? Если это действительно возможно.

1 ответ

Решение

Если вы ищете не полное ландшафтное моделирование, а простое приближение, то это не должно быть слишком сложным. В основном, первое приближение вашего изображения сводится к камере с известным фокусным расстоянием, смотрящей вдоль плоскости. Таким образом, мы можем очень легко создать модель системы в 3D - это не так уж далеко от классического наблюдателя, просматривающего демонстрацию шахматной доски.

Обычно нашей графической проблемой было бы проецировать 3D-модель в 2D, чтобы мы могли визуализировать изображение. Хотя в настоящее время большинство программ используют API (например, OpenGL), для этого уравнения не являются особенно сложными или трудными для понимания. Я написал свой первый код, используя примеры из 3D Graphics In Pascal, который является хорошим ясным трактатом, но будет много других подобных источников (хотя, вероятно, в настоящее время их не так много, поскольку аппаратный API неизменно используется).

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

Таким образом, пара подходов предлагает: либо написать код, чтобы выполнить вышеописанное самостоятельно, либо, возможно, более просто использовать OpenGL (для этого я бы порекомендовал набор инструментов GLUT). Если ваша математика хороша и манипулирование матрицами не вызывает у вас проблем, то я бы порекомендовал первое, так как решение будет более трудным и интересным, в противном случае воспользуйтесь подходом OpenGL. Вы, вероятно, захотите довольно рано превратить приближение камеры / плоскости в камеру / сферу.

Если этого недостаточно для ваших нужд, то теоретически можно перейти к реальному моделированию ландшафта. Данные SRTM находятся в свободном доступе (хотя и не в самых дружелюбных формах), поэтому в сочетании с вашим положением GPS должна быть возможность создать модель сетки, в которой вы применяете те же алгоритмы, что и выше.

Другие вопросы по тегам