Эквализация гистограммы изображения алгоритм. Базовые операции обработки изображений

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

Среди дефектов цифрового изображения можно выделить следующие виды:

  • Цифровой шум
  • Цветовые дефекты (недостаточные или избыточные яркость и контраст, неправильный цветовой тон)
  • Размытость (расфокусировка)

Методы предварительной обработки изображений зависят от задач исследований и могут включать следующие виды работ:

Фильтрация зашумленных изображений

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

Линейное усреднение точек по соседям - самый простой вид алгоритмов удаления шума. Основная идея их в том чтобы брать среднее арифметическое значение точек в некоторой окрестности в качестве нового значения точки.

Физически такая фильтрация реализуется с помощью обхода пикселей изображения матрицей свертки, имеющей такой вид:

Пример:

div – это коэффициент нормирования, для того чтобы средняя интенсивность оставалась не изменой. Он равен сумме коэффициентов матрицы, в примере div = 6.

Размытие по Гауссу (разновидность линейного свертывания) реализуется с помощью обхода пикселей изображения матрицей свертки, имеющей такой вид:

Матрица 5×5 заполняется по нормальному (гауссовому закону). Ниже приведена та же матрица, где коэффициенты уже являются нормированными, так что div для этой матрицы равен одному.

От размера матрицы зависит сила размытия.

У верхнего левого пикселя не существует «соседей» слева и сверху, следовательно, нам не на что умножать коэффициенты матрицы!

Для решения этой проблемы требуется создание промежуточного изображения. Идея в том, чтобы создавать временное изображение с размерами

width + 2 gap / 2, height + 2 gap / 2, где

width и height – ширина и высота фильтруемого изображения,

gap – размерность матрицы свертки.

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

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

Пиксели, которые «попадают» в окно, сортируются в порядке возрастания и выбирается то значение, которое находится посредине отсортированного списка.

Медианный фильтр обычно используется для уменьшения шума или «сглаживания» изображения.

Для улучшения четкости изображения используется следующий фильтр (div=1):

Морфологические преобразования

Морфологическая фильтрация используется для расширения (дилактации) или сужения (эрозии) элементов бинарного изображения.

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

Бинарное изображение – упорядоченный набор (упорядоченного множества) черно-белых точек (пикселей). Максимум интенсивности пикселей изображения равен единице, а минимум – нулю.

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

Эрозия (морфологическое сужение) – операция, обратная дилатации. Действие эрозии подобно дилатации, разница лишь в том, что используется оператор поиска локального минимума. Если минимум равен 0, то точка, в которой находится анкор шаблона, будет черная. На рисунке справа серым цветом отмечены пиксели, которые станут черными в результате эрозии.

Операция «Дилатация » – аналог логического «или», операция «Эрозия » – аналог логического «и».

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

  • Шумоподавление.
  • Выделение границ объекта.
  • Выделение скелета объекта.

Коррекция яркости и контраста изображений

Яркость представляет собой характеристику, определяющую то, на сколько сильно цвета пикселей отличаются от чёрного цвета. Например, если оцифрованная фотография сделана в солнечную погоду, то ее яркость будет значительной. С другой стороны, если фотография сделана вечером или ночью, то её яркость будет невелика.

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

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

Определение вероятностных характеристик изображений, прошедших нелинейную обработку, является прямой задачей анализа. При решении практических задач обработки изображений может быть поставлена обратная задача: по известному виду плотности вероятности p f (f ) и желаемому виду p g (g ) определить требуемое преобразование g = ϕ(f ), которому следует подвергнуть исходное изображение. В практике цифровой обработки изображений часто к полезному результату приводит преобразование изображения к равновероятному распределению. В этом случае

где g min и g max – минимальное и максимальное значения яркости преобразованного изображения. Определим характеристику преобразователя, решающего данную задачу. Пусть f и g связаны функцией g (n , m ) = j(f (n , m )), а P f (f ) и Pg (g ) – интегральные законы распределения входной и выходной яркостей. Учитывая (6.1), находим:

Подставляя это выражение в условие вероятностной эквивалентности

после простых преобразований получаем соотношение

представляющее собой характеристику g (n , m ) = j(f (n , m )) в решаемой задаче. Согласно (6.2) исходное изображение проходит нелинейное преобразование, характеристика которого P f (f ) определяется интегральным законом распределения исходного изображения. После этого результат приводится к заданному динамическому диапазону при помощи операции линейного контрастирования.

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



На первом этапе измеряется гистограмма исходного изображения. Для цифрового изображения, шкала яркостей которого, например, принадлежит целочисленному диапазону , гистограмма представляет собой таблицу из 256 чисел. Каждое из них показывает количество точек в изображении (кадре), имеющих данную яркость. Разделив все числа этой таблицы на общий размер выборки, равный числу отсчетов в изображении, получают оценку распределения вероятностей яркости изображения. Обозначим эту оценку qp f (f q ), 0 ≤ f q ≤ 255. Тогда оценка интегрального распределения получается по формуле:

На втором этапе выполняется само нелинейное преобразование (6.2), обеспечивающее необходимые свойства выходного изображения. При этом вместо неизвестного истинного интегрального распределения используется его оценка, основанная на гистограмме. С учетом этого все методы поэлементного преобразования изображений, целью которых является видоизменение законов распределения, получили название гистограммных методов. В частности, преобразование, при котором выходное изображение имеет равномерное распределение, называется эквализацией (выравниванием) гистограммы.

Отметим, что процедуры преобразования гистограмм могут применяться как к изображению в целом, так и к отдельным его фрагментам. Последнее может быть полезным при обработке нестационарных изображений, характеристики которых существенно различаются в различных областях. В этом случае лучшего эффекта можно добиться, применяя гистограммную обработку к отдельным участкам – областям интереса. Правда, при этом изменятся значения отсчетов и всех других областей. На рисунке 6.1 приведен пример эквализации, выполненной в соответствии с изложенной методикой.

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

Рисунок 6.1 – Пример эквализации гистграммы изображения: а) исходное изображение и его гистограмма в); б) преобразованное изображение и его гистограмма г)

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

Существует три основных метода повышения контраста изображения:

  • линейная растяжка гистограммы (линейное контрастирование),
  • нормализация гистограммы,
  • выравнивание (линеаризация или эквализация, equalization) гистограммы.

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

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

Выравнивание гистограмм – это один из наиболее распространенных способов. Цель выравнивания состоит в том, чтобы все уровни яркости имели бы одинаковую частоту, а гистограмма соответствовала равномерному закону распределения. Допустим, что задано изображение в оттенках серого, которое имеет разрешение пикселей. Количество уровней квантования яркости пикселей (число бинов) составляет . Тогда в среднем на каждый уровень яркости должно выпадать пикселей. Базовая математика лежит в сопоставлении двух распределений. Пусть – случайные величины, описывающие изменение интенсивности пикселей на изображениях, – плотность распределения интенсивности на исходном изображении, – желаемая плотность распределения. Необходимо найти преобразование плотностей распределения , которое позволило бы получить желаемую плотность:

Обозначим через и интегральные законы распределения случайных величин и . Из условия вероятностной эквивалентности следует, что . Распишем интегральный закон распределения по определению:

Отсюда получаем, что

Осталось выяснить, как оценить интегральный закон распределения . Для этого необходимо сначала построить гистограмму исходного изображения, затем нормализовать полученную гистограмму, разделив величину каждого бина на общее количество пикселей . Значения бинов можно рассматривать как приближенное значение функции плотности распределения . Таким образом, значение интегральной функции распределения можно представить как сумму следующего вида:

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

В библиотеке OpenCV реализована функция equalizeHist , которая обеспечивает повышение контрастности изображения посредством выравнивания гистограммы [ , ]. Прототип функции показан ниже.

void equalizeHist(const Mat& src, Mat& dst)

Функция работает в четыре этапа:

Далее приведем пример программы, обеспечивающей выравнивание гистограммы. Приложение принимает в качестве аргумента командной строки название исходного изображения. После выполнения операции выравнивания гистограммы выполняется отображение исходного изображения 1 Использовано изображение, входящее в состав базы PASACL VOC 2007. , переведенного в оттенки серого (рис. 7.11 , слева), и изображения с выровненной гистограммой (рис. 7.11 , справа).

#include #include using namespace cv; const char helper = "Sample_equalizeHist.exe \n\ \t - image file name\n"; int main(int argc, char* argv) { const char *initialWinName = "Initial Image", *equalizedWinName = "Equalized Image"; Mat img, grayImg, equalizedImg; if (argc < 2) { printf("%s", helper); return 1; } // загрузка изображения img = imread(argv, 1); // преобразование в оттенки серого cvtColor(img, grayImg, CV_RGB2GRAY); // выравнивание гистограммы equalizeHist(grayImg, equalizedImg); // отображение исходного изображения и гистограмм namedWindow(initialWinName, CV_WINDOW_AUTOSIZE); namedWindow(equalizedWinName, CV_WINDOW_AUTOSIZE); imshow(initialWinName, grayImg); imshow(equalizedWinName, equalizedImg); waitKey(); // закрытие окон destroyAllWindows(); // осовобождение памяти img.release(); grayImg.release(); equalizedImg.release(); return 0; }


Рис. 7.11.

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

Для простоты начнём рассмотрение с монохромных изображений (т.е. изображений содержащих информацию только о яркости, но не о цвете пикселей). Гистограммой изображения будем называть дискретную функцию H, определённую на множестве значений , где bpp – количество бит, отводимое для кодирования яркости одного пиксела. Хоть это и не является обязательным, но гистограммы часто нормируют в диапазон , выполняя деление каждого значения функции H[i] на общее количество пикселов изображения. В Табл. 1 представлены примеры тестовых изображений и гистограмм, построенных на их основе:
Табл. 1. Изображения и их гистограммы

Внимательно изучив соответствующую гистограмму можно сделать некоторые выводы и о самом исходном изображении. Например, гистограммы очень тёмных изображений характеризуются тем, что ненулевые значения гистограммы сконцентрированы около нулевых уровней яркости, а для очень светлых изображений наоборот – все ненулевые значения сконцентрированы в правой части гистограммы.
Интуитивно можно сделать вывод, что наиболее удобным для восприятия человеком будет изображение, у которого гистограмма близка к равномерному распределению. Т.е. для улучшения визуального качества к изображению надо применить такое преобразование, чтобы гистограмма результата содержала все возможные значения яркости и при этом в примерно одинаковом количестве. Такое преобразование называется эквализацией гистограммы и может быть выполнено с помощью кода, приведённого в Листинг 1.
Листинг 1. Реализация процедуры эквализации гистограммы

  1. procedure TCGrayscaleImage. HistogramEqualization ;
  2. const
  3. k = 255 ;
  4. h: array [ 0 .. k ] of double ;
  5. i, j: word ;
  6. begin
  7. for i : = 0 to k do
  8. h[ i] : = 0 ;
  9. h[ round (k * self . Pixels [ i, j] ) ] : = h[ round (k * self . Pixels [ i, j] ) ] + 1 ;
  10. for i : = 0 to k do
  11. h[ i] : = h[ i] / (self . Height * self . Width ) ;
  12. for i : = 1 to k do
  13. h[ i] : = h[ i - 1 ] + h[ i] ;
  14. for i : = 0 to self . Height - 1 do
  15. for j : = 0 to self . Width - 1 do
  16. self . Pixels [ i, j] : = h[ round (k * self . Pixels [ i, j] ) ] ;
  17. end ;

В результате эквализации гистограммы в большинстве случаев существенно расширяется динамический диапазон изображения, что позволяет отобразить ранее не замеченные детали. Особенно сильно этот эффект проявляется на тёмных изображениях, что показано в Табл. 2. Кроме того, стоит отметить ещё одну важную особенность процедуры эквализации: в отличие от большинства фильтров и градационных преобразований, требующих настройки параметров (апертуры и констант градационных преобразований) эквализация гистограммы может выполняться в полностью автоматическом режиме без участия оператора.
Табл. 2. Изображения и их гистограммы после эквализации


Легко можно заметить, что гистограммы после эквализации имеют своеобразные заметные разрывы. Это связано с тем, что динамический диапазон выходного изображения шире диапазона исходного. Очевидно, что в этом случае рассмотренное в Листинг 1 отображение не может обеспечить ненулевые значения во всех карманах гистограммы. Если всё-таки необходимо добиться более естественного вида выходной гистограммы, можно использовать случайное распределение значений i-ого кармана гистограммы в некоторой его окрестности.
Очевидно, что эквализация гистограмм позволяет легко повышать качество монохромных изображений. Естественно хочется применить подобный механизм и к цветным изображениям.
Большинство не очень опытных разработчиков представляют изображение в виде трёх цветовых каналов RGB и пытаются применить процедуру эквализации гистограммы к каждому цветовому в отдельности. В некоторых редких случаях это позволяет добиться успеха, но в большинстве случаев результат так себе (цвета получаются неестественными и холодными). Это связано с тем, что модель RGB неточно отображает цветовосприятие человека.
Вспомним о другом цветовом пространстве – HSI. Эта цветовая модель (и другие родственные ей) очень широко используются иллюстраторами и дизайнерам так как позволяют оперировать более привычными для человека понятиями цветового тона, насыщенности и интенсивности.
Если рассмотреть проекцию RGB-куба в направлении диагонали белый-чёрный, то получится шестиугольник, углы которого соответствуют первичным и вторичным цветам, а все серые оттенки (лежащие на диагонали куба) при этом проецируются в центральную точку шестиугольника (см. Рис. 1):

Рис. 1. Проекция цветового куба
Чтобы с помощью этой модели можно было закодировать все цвета, доступные в RGB-модели, необходимо добавить вертикальную ось светлоты (или интенсивности) (I). В итоге получается шестигранный конус (Рис. 2, Рис. 3):


Рис. 2. Пирамида HSI (вершины)
В этой модели цветовой тон (H) задаётся углом относительно оси красного цвета, насыщенность (S) характеризует чистоту цвета (1 означает совершенно чистый цвет, а 0 соответствует оттенку серого). При нулевом значении насыщенности тон не имеет смысла и не определен.


Рис. 3. Пирамида HSI
В Табл. 3 показано разложение изображения по компонентам HSI (белые пикселы в канале тона соответствуют нулевой насыщенности):
Табл. 3. Цветовое пространство HSI


Считается, что для повышения качества цветных изображений наиболее эффективно применять процедуру эквализации к каналу интенсивности. Именно это и продемострировано в Табл. 4
Табл. 4. Эквализация различных цветовых каналов


Надеюсь, этот материал показался вам как минимум интересным, как максимум полезным. Спасибо.