Я пытаюсь разработать алгоритм фокусировки изображения для некоторой работы по автоматизации тестирования. Я выбрал использовать AForge.net, поскольку он выглядит как хорошая зрелая .net-дружественная система.
К сожалению, я не могу найти информацию о создании алгоритмов автофокусировки с нуля, поэтому я дал ей все возможное:
возьмите изображение. примените фильтр обнаружения края привязки, который генерирует контур кромочного оттенка. генерировать гистограмму и сохранять стандартный dev. переместите камеру на один шаг ближе к теме и сделайте другое изображение. если стандартный разработчик меньше предыдущего, мы все больше фокусируемся. в противном случае мы прошли оптимальное расстояние для съемки.
есть ли лучший способ?
update: ОГРОМНАЯ ошибка в этом, кстати. по мере того, как я заканчиваю оптимальную точку фокусировки, значение "изображение в фокусе" продолжает расти. вы ожидаете, что функция параболического типа будет смотреть на расстояние/фокус-значение, но на самом деле вы получаете что-то более логарифмическое
update 2: хорошо, поэтому я вернулся к этому, и текущий метод, который мы изучаем, получил несколько известных ребер (хорошо, поэтому я точно знаю, что представляют собой объекты на картинке), я делаю ручную интенсивность пикселей сравнение. поскольку полученный граф становится более крутым, я получаю больше внимания. Я отправлю код после того, как основной алгоритм портируется из matlab в С# (да, matlab..: S)
update 3: окончательное обновление yay. снова вернулся к этому. окончательный код выглядит следующим образом:
шаг 1: получить изображение из списка изображений (я взял сто фотографий через сфокусированную точку)
Шаг 2: найдите ребро для объекта, на котором я фокусируюсь (в моем случае это прямоугольный объект, который всегда находится в одном и том же месте, поэтому я обрезаю прямоугольник HIGH и NARROW одного края)
Шаг 3: получите HorizontalIntensityStatistics (класс Aforge.net) для этого обрезанного изображения.
Шаг 4: получите гистограмму (серый, в моем случае)
Шаг 5: найдите производную от значений гистограммы
Шаг 6: когда ваш наклон является самым большим, это когда вы находитесь в наиболее сосредоточенной точке.