Перейти к содержимому
Калькуляторы

Поймать фокус на кадре оффтопик

К сожалению, не знаю, к кому обратиться. Прошу помощь зала =)

Есть кадр в любом мыслимом формате. Вообще-то он в RAW/color. ПРЕДПОЛАГАЕТСЯ, что он снят в фокусе, но источник этой информации часто врёт и мы ему не верим. Есть ли быстрый, желательно реализуемый аппаратно, способ выяснить, был ли ДАННЫЙ КОНКРЕТНЫЙ КАДР снят в фокусе? Мы можем рассчитывать, что где-то в кадре есть какое-то количество контрастных границ.

 

Проблема осложняется тем, что задачку надо решать примерно 120 раз в секунду при размере кадра VGA (640*480). В идеале устройство должно на входе получать эти кадры, анализировать, и отбрасывать те, которые "недостаточно в фокусе", а те, которые "в фокусе", выдавать на выход в первоначальном виде. То есть этакий фильтр для отбраковки того, что не получилось.

 

Вопрос чисто теоретический. То есть допустимо использовать не только FPGA, но и, если необходимо, любые программно-аппаратные решения вплоть до заказных DSP. Ценой пока можно пренебречь, - вопрос именно теоретический: это вообще возможно или вообще нереализуемо?

 

Предположение: если в пределах 2-3 пикселей на протяжении одной произвольной линии по кадру один монотонный (5+ пикселей) цвет поменялся на другой монотонный (5+ пикселей) цвет, - и так более трёх раз по разным линиям по кадру, - то картинка в фокусе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ищи литературу по автофокусу у производителей фотоаппаратов и видеокамер. Они решают эту задачу как в статике, так и в динамике, причем на очень больших скоростях съемки движущихся объектов при слежении за объектами и автонаводке. Методов два - контрастный и фазовый. Осуществляется по записанной программе, так как прошивки меняются регулярно. Посему - ничего невозможного нет. Какая разница в источнике изображения - матрица или готовая картинка...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Стандартная обработка по "контрастному" методу, как Алекс выше написал может помочь, но есть один нюанс: все алгоритмы автофокуса - это алгоритмы оптимизации, т.е. "максимальная четкость в зоне датчика", с их помощью можно из 100 кадров выделить "самый резкий", но нельзя сделать вывод о том, был ли фокус при съемке оптимален для данной конкретной сцены.

 

Вообще-то не может быть универсального алгоритма для неограниченного набора сцен. "Ежик в тумане" всегда будет нерезким ;) Хотя это хороший, годный кадр. Поэтому либо выборка лучших по этому критерию из ряда либо заданный принудительно пороги контрастности, которые не всегда будут работать так, как надо.

 

Чего ты там такое изобретаешь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попытка решить задачку в лоб показала, что фото-видео-камеры при автофокусе возят объективом, то есть они решают совсем другую задачу: настроить объектив. В нашем случае возить нечем, - объектив нам неподвластен, более того, он жёстко зафиксирован по фокусному расстоянию. Поток кадров представляет из себя снятую по разным внешним критериям одну и ту же сцену, в которой может появиться табличка с текстом или символами. Появиться она может в любой части кадра и иметь любые цвета, - но мы можем рассчитывать, что она достаточного размера, чтобы, если её удалось сфотографировать, - то потом умный алгоритм распознавания её как-то распознал. Но кроме таблички там могут появляться всякие другие бесполезные объекты, поэтому нужны только кадры, на которых есть что-то похожее на табличку. "Эталонного образца" таблички, к сожалению, нет, - таблички могут быть разными.

 

В чём проблема: алгоритму распознавания лучше получить RAW картинку, но поток этих кадров, блин, жирный. В похожей задачке у коллег одна камера выдаёт поток в полтора гигабита/сек, из которых около 95-98% кадров просто не нужны, но которые именно не нужны? И куда этот поток вливать? Пока его жмут видеосжатием, в итоге потом распознавалка тратит силы на разбор артефактов сжатия. В итоге либо ставить распознавалку (а она дорогая и нежная) около камеры (так делают на стационарных сортировочных центрах), либо около камеры этот поток сортировать, выбрасывая ненужный мусор до начала передачи в ЦОД. К тому же банально жаба душит в распознавалку вливать столько постороннего шума. Вот если бы получилось скармливать ей только те кадры, на которых хотя бы предположительно есть что-то полезное... А в идеале - вообще ненужное от камеры не получать, сеть не загружать, - тогда распознавалки можно собрать в ЦОДе в идеальных для них условиях, - если поток полезных кадров будет иметь разумные размеры, а не сотни терабит/сек ;-(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А есть возможность освещать объект съемки попеременно прожекторами с цветными стеклами? Потом получать серию одноцветных изображений, так их будет проще сравнивать между собой для задачи определения резкости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть ли быстрый, желательно реализуемый аппаратно, способ выяснить, был ли ДАННЫЙ КОНКРЕТНЫЙ КАДР снят в фокусе?

если в кадре один объект - то да. Если несколько, то алгоритму необходим hint в какой области кадра искать объект.

т.е. если сделать структуру типа матрица -> L1-обработка(FPGA) -> L2-обработка(проц) -> hinting feedback to L1 то вполне можно получить то что надо.

 

городите конкурента Стрелке-СТ? тогда 120 кадров в секунду - это мало ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Зачем? Ты и так из цветного изображения можешь выделить составляющие любой цветности.

Ответ: нет. В створе (фокусе) камеры объекты могут появляться и двигаться, последовательные снимки дадут разные картинки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"Эталонного образца" таблички, к сожалению, нет, - таблички могут быть разными.

Насколько разными? если есть заметные ограничения по размеру текста, шрифту, ракурсу - это одна задача, если вообще что угодно - совсем другая.

 

В чём проблема: алгоритму распознавания лучше получить RAW картинку, но поток этих кадров, блин, жирный. В похожей задачке у коллег одна камера выдаёт поток в полтора гигабита/сек, из которых около 95-98% кадров просто не нужны, но которые именно не нужны?

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

 

В общем случае придется обрабатывать всё.

Изменено пользователем Gull

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну хинты нужны полюбому.. Камера смотрящая в окно снимает 2 дерева рядом с окном, десяток деревьев в 100 метрах и дом напротив метрах в 300.. Наведение на что будет называться "оптимальая резкость" особенно при низкой глубине?. Только если гиперфокус, но там другие тараканы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Номера считываешь?

 

Таблички с текстом? Контрастные? Если так, то по критерию максимальной контрастности - максимальная дельта яркости между пикселами. Считается на потоке просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попытка решить задачку в лоб показала, что фото-видео-камеры при автофокусе возят объективом, то есть они решают совсем другую задачу: настроить объектив. В нашем случае возить нечем, - объектив нам неподвластен, более того, он жёстко зафиксирован по фокусному расстоянию. Поток кадров представляет из себя снятую по разным внешним критериям одну и ту же сцену, в которой может появиться табличка с текстом или символами. Появиться она может в любой части кадра и иметь любые цвета, - но мы можем рассчитывать, что она достаточного размера, чтобы, если её удалось сфотографировать, - то потом умный алгоритм распознавания её как-то распознал. Но кроме таблички там могут появляться всякие другие бесполезные объекты, поэтому нужны только кадры, на которых есть что-то похожее на табличку. "Эталонного образца" таблички, к сожалению, нет, - таблички могут быть разными.

 

Задачу то на уровне ТЗ сформулировать можно?

Если объектив жестко зафиксирован и обладает глубиной резкости - то все, что попало в расстояние от - до резкое по законам оптики.

Объъект движется в плоскости объектива или навстречу объективу?

Тебе что распознавать то нужно? Буквы и цифры? Или нечто другое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.