ORB - объект должен быть очень близко к камере

У меня есть программа, которая берет видеопоток из RSTP и проверяет наличие объекта. Единственная проблема заключается в том, что объект должен находиться на расстоянии около 6 дюймов от камеры, но когда я использую проводную веб-камеру, объект может находиться на расстоянии нескольких футов. Обе камеры передают с одинаковым разрешением, в чем причина этой проблемы?

Характеристики передачи камеры:

    Resolution: 640 * 480 
    FPS: 20 
    Bitrate: 500000
    Focal Length: 2.8mm

РЕДАКТИРОВАТЬ: Алгоритм, который я использую, - это алгоритм OpenCV ORB, но я также видел такое поведение, когда ранее использовал метод классификатора Хаара в OpenCV.

Ниже указан предел, при котором веб-камера больше не может обнаруживать объект. (прибл. 66 пикселей) Ограничение изображения с веб-камеры

Ниже приведен предел, при котором Glass больше не может обнаруживать объект. (прибл. 68 пикселей) Предел изображения стекла

Глядя на изображение, кажется, что расстояние одинаковое, но расстояние как минимум вдвое больше, чем на изображении с веб-камеры, что мне кажется, что это свойство камеры вызывает эту проблему? если да, то какая часть камеры будет нести ответственность за это?


person Colin747    schedule 04.03.2015    source источник
comment
шум? настройки яркости? свойства камеры/объектива? вероятно, некоторые хитрые/пороговые/другие вещи не работают для одной из обеих настроек. невозможно угадать, не зная алгоритма или камер! Может быть, дайте 2 образца изображений, по одному для каждой камеры с диапазоном, который просто не работает.   -  person Micka    schedule 04.03.2015
comment
Я получу образцы изображений завтра, когда буду в офисе, алгоритм в алгоритме OpenCV ORB. Сцена/объект и окружающий свет одинаковы для обоих тестов.   -  person Colin747    schedule 04.03.2015
comment
Я добавил дополнительную информацию и изображения в исходный пост.   -  person Colin747    schedule 05.03.2015
comment
это оптическая иллюзия или размер листа бумаги, измеренный в пикселях, почти одинаков на обоих изображениях?? так что вполне разумно, что они терпят неудачу для того же размера пикселя??!?   -  person Micka    schedule 05.03.2015
comment
Это то, что я имел в виду в своем последнем блоке текста под изображениями, но я не уверен, что речь идет о характеристиках камеры. это означает, что изображение имеет тот же размер в пикселях, несмотря на большее расстояние.   -  person Colin747    schedule 05.03.2015
comment
фокусное расстояние (или объектив объектива) в сочетании с размером сенсора. см. bobatkins.com/photography/tutorials/cropped_sensor_view/   -  person Micka    schedule 05.03.2015
comment
Спасибо, а изменение алгоритма вообще повлияет на это? Или увеличение размера объекта, который нужно обнаружить, увеличит расстояние?   -  person Colin747    schedule 05.03.2015
comment
часто алгоритмы обнаружения имеют минимальный размер пикселя в зависимости от обучающих данных. Увеличение размера изображения МОЖЕТ работать (действительно зависит от используемого метода обнаружения). Но увеличение размера изображения обычно также увеличивает стоимость вычислений!   -  person Micka    schedule 05.03.2015
comment
возможно, если у вас есть доступ к внутренним параметрам камеры и данным о неискажении, вы могли бы вычислить соотношение для изменения размера изображения, чтобы оно соответствовало тем же условиям (и обрезать второе изображение, чтобы не увеличивать общий размер изображения).   -  person Micka    schedule 05.03.2015
comment
Хорошо, большое спасибо за вашу помощь. Есть ли у вас какие-либо ресурсы для вычисления соотношения для изменения размера изображения? Если вы хотите собрать все ваши комментарии в ответ, я буду рад принять.   -  person Colin747    schedule 05.03.2015


Ответы (1)


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

Разница в расстоянии между обеими камерами (для одного и того же размера объекта) обусловлена ​​внутренними параметрами камеры, такими как фокусное расстояние (исходя из объектива объектива) и размером сенсорного чипа.

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

Масштабирование изображения подходит для многих детекторов, у которых есть некоторый минимальный размер объекта, непосредственно полученный из обучающих данных или размера обучающего окна. Апскейлинг может привести к дополнительному (резкому) увеличению скорости.

Если известны внутренние параметры обеих камер и изображения уже неискажены, вы можете вычислить масштабный коэффициент между обоими изображениями, который равен:

ratioX = fx1/fx2
ratioY = fy1/fy2

если вы хотите масштабировать второе изображение, а fx1,fy1 — это значения фокусного расстояния первого изображения. Впоследствии вы можете обрезать увеличенное изображение, центрируя его вокруг главной точки. После этого обе области изображения должны хорошо совпадать.

Надеюсь, что это помогает и удачи.

edit: вы можете использовать функцию cv::undistort, чтобы изображение выглядело так, как будто оно имеет другую матрицу камеры, для тестирования.

person Micka    schedule 05.03.2015