отобразите вычисление фокуса

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

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

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

существует ли лучший путь?

обновление: ОГРОМНЫЙ дефект в этом, между прочим. поскольку я заканчиваю оптимальный фокус, мое "изображение в фокусе" значение продолжает расти. Вы ожидали бы функцию параболического выхода, смотрящую distance/focus-value, но в действительности Вы получаете что-то, что это более логарифмически

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

обновление 3: обновление финала yay. возвратился к этому снова. заключительный код похож на это:

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

шаг 2: найдите край для объекта, который я фокусирую (В моем случае, это - прямоугольный объект, это всегда находится в том же месте, таким образом, я обрезаю ВЫСОКИЙ и УЗКИЙ прямоугольник одного края),

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

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

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

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

18
задан Oren Mazor 27 April 2010 в 17:05
поделиться

5 ответов

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

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

5
ответ дан 30 November 2019 в 08:52
поделиться

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

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

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

3
ответ дан 30 November 2019 в 08:52
поделиться

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

0
ответ дан 30 November 2019 в 08:52
поделиться

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

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

3
ответ дан 30 November 2019 в 08:52
поделиться

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

1
ответ дан 30 November 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: