Соотношение между углом, представленным объектом, и количеством пикселей - PullRequest
2 голосов
/ 21 декабря 2011

Я делаю приложение на базе камеры для Android. Моя проблема заключается в том, чтобы найти реальный угол, под которым объект находится на изображении в камере, когда у меня есть:

1. Длина этого объекта на изображении, в пикселях,

2. Вертикальный угол обзора камеры,

3. Длина изображения в пикселях.

Будучи новичком в обработке изображений, у меня есть это (вероятно, основное) сомнение. Существует ли линейная зависимость между углом, который объект наталкивается на камеру, и количеством пикселей на изображении объекта, снятого камерой? Угол обзора: соедините самую верхнюю точку объекта с камерой, затем соедините самую нижнюю точку объекта с камерой. Угол, сформированный у камеры, представляет собой угол, обозначенный. Например: рассмотрим изображение по вертикали, 200 пикселей в высоту. Угол обзора камеры по вертикали составляет 20 градусов. Итак, я могу сказать, что эти 20 градусов покрывают 200 пикселей изображения. Теперь есть часть изображения (объект) высотой 10 пикселей. Я хочу найти угол, под которым этот объект находится на камере, в физическом мире. Буду ли я прав, говоря, что, поскольку 200 пикселей покрыты на 20 градусов, 10 пикселей будут покрыты на 1 градус? То есть этот объект выдвигает угол 1 градус на камеру?

enter image description here

Как показано на этой диаграмме, мне известны значения L (изображения), P (объекта на изображении), x (вертикального угла зрения камеры), и я хочу найти y, угол, который представляет объект на камеру. Мое предположение (y / P) = (x / L), что прямо пропорционально. Будет ли это предположение правильным?

1 Ответ

2 голосов
/ 21 декабря 2011

Нарисуйте горизонтальную линию.Длина D - это расстояние до объекта.

D * tg (X / 2) = L / 2

и

D * tg (Y / 2) = P /2

так

Y = 2 * Arctg (тг (X / 2) * P / L)

(При малых углах они (грубые) прямо пропорциональны)

Дополнение: случай нецентрированного объекта.

enter image description here

P0, P1 - пиксельные координаты концов объекта относительно центральной точки D

расстояние Dx = | OD |= L * ctg (X / 2)

координата D = (Dx, 0)

Y = угол ( OP1, OP0 ) =ArcCos (( OP1 x OP0 ) / (| OP1 | * | OP0 |)), где x означает скалярное произведение

Y = ArcCos ((Dx * Dx + P1 * P0) / Sqrt ((Dx * Dx + P1 * P1) (Dx Dx + P0 * P0)))

Пример: L = L1-L0 = 768 пикселей

X = 42 градуса

Dx = 1000 (шероховатый)

Положение P = 100 пикселей

Позиция P0 = -50 пикселей

Y = ArcCos ((1000 * 1000-100 * 50) / (Sqrt ((1000 * 1000 + 100 * 100) * (1000 * 1000 + 50 * 50))))) = 7 градусов (грубо)

...