Подтвердить что ты не робот

Расчет фокуса изображения

Я пытаюсь разработать алгоритм фокусировки изображения для некоторой работы по автоматизации тестирования. Я выбрал использовать AForge.net, поскольку он выглядит как хорошая зрелая .net-дружественная система.

К сожалению, я не могу найти информацию о создании алгоритмов автофокусировки с нуля, поэтому я дал ей все возможное:

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

есть ли лучший способ?

update: ОГРОМНАЯ ошибка в этом, кстати. по мере того, как я заканчиваю оптимальную точку фокусировки, значение "изображение в фокусе" продолжает расти. вы ожидаете, что функция параболического типа будет смотреть на расстояние/фокус-значение, но на самом деле вы получаете что-то более логарифмическое

update 2: хорошо, поэтому я вернулся к этому, и текущий метод, который мы изучаем, получил несколько известных ребер (хорошо, поэтому я точно знаю, что представляют собой объекты на картинке), я делаю ручную интенсивность пикселей сравнение. поскольку полученный граф становится более крутым, я получаю больше внимания. Я отправлю код после того, как основной алгоритм портируется из matlab в С# (да, matlab..: S)

update 3: окончательное обновление yay. снова вернулся к этому. окончательный код выглядит следующим образом:

шаг 1: получить изображение из списка изображений (я взял сто фотографий через сфокусированную точку)

Шаг 2: найдите ребро для объекта, на котором я фокусируюсь (в моем случае это прямоугольный объект, который всегда находится в одном и том же месте, поэтому я обрезаю прямоугольник HIGH и NARROW одного края)

Шаг 3: получите HorizontalIntensityStatistics (класс Aforge.net) для этого обрезанного изображения.

Шаг 4: получите гистограмму (серый, в моем случае)

Шаг 5: найдите производную от значений гистограммы

Шаг 6: когда ваш наклон является самым большим, это когда вы находитесь в наиболее сосредоточенной точке.

4b9b3361

Ответ 1

Это может быть немного упрощенным для ваших нужд, но у меня были хорошие результаты с помощью простого алгоритма, который рассматривает разницу с соседними пикселями. Сумма разницы в пикселях в 2 раза кажется разумной мерой контраста изображения. Я не мог найти оригинальную бумагу Бреннера в 70, но упоминается в http://www2.die.upm.es/im/papers/Autofocus.pdf

Другая проблема заключается в том, что изображение крайне не в фокусе, информация о фокусе очень мало, поэтому трудно сказать, какой путь "приближается" или избегать локального максимума.

Ответ 2

Вы можете взглянуть на технику, используемую в NASA Curiosity Mars Rover.

Техника описана в этой статье

EDGETT, Kenneth S., et al. Curiositys Mars Hand Lens Imager (MAHLI) Исследование. Исследования космической науки, 2012, 170.1-4: 259-317.

который доступен как PDF здесь.

Цитата из статьи:

7.2.2 Автофокус

Предполагается, что автофокус будет основным методом, с помощью которого MAHLI сосредоточены на Марсе. Команда автофокусировки указывает, что камера переместится на заданную начальную позицию счета двигателя и собирать изображение, перемещать указать количество шагов и собрать другое изображение и продолжать делать это пока не достигнет заданного общего количества изображений, каждый из которых разделен заданное количество оборотов двигателя. Каждое из этих изображений JPEG (Joint Photographic Experts Group, см. CCITT (1993)) с применяется тот же коэффициент качества сжатия. Размер файла каждого сжатое изображение является мерой детализации сцены, которая, в свою очередь, является функция фокуса (изображение в фокусе показывает больше деталей, чем размытость, вне фокуса одной и той же сцены). Как показано на фиг .23, камера определяет соотношение между размером файла JPEG и двигателем подсчитывает и сопоставляет параболу с тремя соседними максимальными размерами файлов. Вершина параболы дает оценку наилучшего фокуса положение счета двигателя. Сделав это определение, MAHLI перемещает фокусную группу объектива до оптимальной позиции двигателя и приобретает изображение; это изображение сохраняется, более ранние изображения, используемые для определения положение автофокуса не сохраняется.

Автофокусировка может выполняться над полное поле зрения MAHLI, или оно может быть выполнено на подкадре, который соответствует части сцены, которая включает в себя объект изучаться. В зависимости от характера предмета и знаний неопределенности в позиционировании робота MAHLI, пользователи могут выбрать для получения централизованного подкадра автофокуса, или они могут выбрать внекадровый подкадр автофокусировки, если знание местоположения чтобы определить, где должен находиться подрамник. Использование подкадры для выполнения автофокуса настоятельно рекомендуется, поскольку это обычно приводит к тому, что объект находится в лучшем фокусе, чем в случае когда автофокусировка применяется к полной ПЗС; далее, в результате как правило, рассчитывается позиция счетчика двигателя из автофокуса с использованием подкадра в более точном определении рабочего расстояния от шкалы пикселей.

Ниже показано изображение на рисунке 23:

Автофокус в NASA Curiosity Mars Rover

Эта идея была предложена и в этом ответе: fooobar.com/questions/215119/...

Ответ 3

Это может быть полезно. Это как работает система автофокусировки камеры - Пассивная автофокусировка

Измерение контрастности

Измерение контрастности достигается за счет измерение контраста в датчике поле, через объектив. Интенсивность разница между соседними пикселями датчик естественно увеличивается с правильный фокус изображения. Оптический таким образом, можно обнаружен максимальный контраст. В этот метод, AF не включает фактическое измерение расстояния на всех и как правило, медленнее, чем фаза системы обнаружения, особенно когда работающих под тусклым светом. Как это делает не использовать отдельный датчик, однако, автофокусировка с контрастным обнаружением может быть больше гибкой (как она реализована в программного обеспечения) и потенциально более точный. Это общий метод в видеокамеры и потребительского уровня цифровые камеры, в которых нет жалюзи и зеркало заднего вида. Некоторые DSLR (включая Olympus E-420, Panasonic L10, Nikon D90, Nikon D5000, Nikon D300 в штативе Режим, Canon EOS 5D Mark II, Canon EOS 50D) используют этот метод при фокусировке их режимы живого просмотра. Новый сменный объектив, Micro Четыре трети, исключительно использует контраст измерение автофокуса, и говорят предлагают производительность, сравнимую с фазой системы обнаружения.

Ответ 4

Я сам не построил, но сначала я подумал, что нужно сделать 2D DFT на части изображения. Когда из фокуса высокие частоты автоматически исчезнут.

Для ленивого прототипа вы можете попытаться сжать область изображения с помощью JPEG (высокое качество) и посмотреть размер выходного потока. Большой файл означает много деталей, что, в свою очередь, подразумевает, что изображение находится в фокусе. Помните, что камера не должна быть слишком шумной, и вы не можете сравнивать размеры файлов в разных сценах, конечно.

Ответ 5

В то время как sobel - достойный выбор, я, вероятно, предпочту сделать вычисление краевой величины на проекциях по направлениям x и y по нескольким небольшим представительным регионам. Другим выбором .NET на основе OpenCV является @http://www.emgu.com/wiki/index.php/Main_Page.

Ответ 6

Интересно, является ли стандартное отклонение лучшим выбором: если изображение становится более резким, изображение фильтра для sobel будет содержать более яркие пиксели по краям, но в то же время меньше ярких пикселей, потому что края становятся тоньше. Возможно, вы могли бы попытаться использовать среднее значение 1% наивысшего значения пикселей в изображении sobel?

Ответ 7

Другим вкусом для метрики фокусировки может быть:

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