Методы повышения резкости изображения - PullRequest
6 голосов
/ 03 сентября 2011

Я делаю проект, в котором я буду использовать генетические алгоритмы для оптимизации набора фильтров и параметров, которые будут использоваться для повышения резкости изображения. В настоящее время я читаю книгу «Цифровая обработка изображений» Гонсалеса и исследую все, что могу, об обработке изображений, так как я несколько новичок в этой области.

Я искал список методов повышения резкости ... например, маски нерезкости, фильтр верхних частот, резкость по Лапласу и т. Д. Если вы знакомы с обработкой изображений, есть ли какие-либо фильтры, которые вы бы порекомендовали для повышения резкости изображений (содержащие параметры для "тюнинга")?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 04 сентября 2011

Как правило, повышение резкости увеличивает контраст между пикселями.Наивные реализации часто вводят «ореолы» вдоль краев, которые могут быть непривлекательными.Такие методы, как двусторонний фильтр, пытаются решить эту проблему.В последние годы появилось несколько интересных методов, хорошее резюме концепций вплоть до современных алгоритмов освещено Эндрю Адамсом в: http://www.stanford.edu/class/cs448f/lectures/2.1/Sharpening.pdf

В конце приведены некоторые подходы:

Двусторонний и трехсторонний фильтр

Сохраняющие края декомпозиции для мультимасштабной обработки тона и деталей

Слепая деконволюция (свертка без известного ядра)

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

Хорошая общая структурадля работы с изображениями и опробования некоторых методов повышения резкости используется OpenCV, для которого существует привязка Python.

1 голос
/ 13 мая 2017

Идея простого, очень быстрого и обычно эффективного алгоритма (понятия не имею, если кто-то еще думал об этом) заключается в следующем:

  • N будет представлять резкостьувеличение.Значение 0 оставит изображение без изменений, значение 1, вероятно, увеличит четкость примерно вдвое, а значение -1 сделает изображение очень размытым и странным.
  • Теперь для каждого цвета каждого пикселяна изображении сделайте это
    • . Вызовите текущее значение V , текущий цвет C , текущий столбец X и текущую строку. Y .
    • Установите X на наибольшую разницу между соседними пикселями, например, так:
      M = biggestAbsoluteValueBetween(
      X - (the <strong>C</strong>th color of the <strong>Y</strong>th row of the (<strong>X</strong> - 1)th column),
      X - (the <strong>C</strong>th color of the <strong>Y</strong>th row of the (<strong>X</strong> + 1)th column),
      X - (the <strong>C</strong>th color of the (<strong>Y</strong> - 1)th row of the <strong>X</strong>th column),
      X - (the <strong>C</strong>th color of the (<strong>Y</strong> + 1)th row of the <strong>X</strong>th column)
      )
    • Наконец, добавьте эту разницу в M , затемумножить N на значение текущего цвета текущего пикселя в новом более резком изображении, например:
      <strong>V</strong><sub>new</sub> = <strong>V</strong><sub>old</sub> + <strong>M</strong> * <strong>N</strong>

Добавление

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

...