Можно автоматически настроить значения интенсивности пикселей изображения с помощью гистограммы эквализации. Гистограмма эквализации включает преобразование значений интенсивности так, чтобы гистограмма выходного изображения приблизительно совпадала с заданной гистограммой. По умолчанию функция гистограммы эквализации, histeq
, пытается соответствовать плоской гистограмме с 64 интервалами, но можно вместо этого задать другую гистограмму.
В этом примере показано, как использовать гистограмму эквализации, чтобы настроить контрастность полутонового изображения. Оригинальное изображение имеет низкую контрастность, большинство пиксельных значений находятся в середине области значений интенсивности. histeq
формирует выходное изображение с пиксельными значениями, равномерно распределенными по области значений.
Чтение изображения в рабочую область.
I = imread('pout.tif');
Отобразите изображение и его гистограмму.
figure subplot(1,2,1) imshow(I) subplot(1,2,2) imhist(I,64)
Настройте контраст с помощью гистограммы эквализации. В этом примере функция гистограммы эквализации, histeq
, пытается соответствовать плоской гистограмме с 64 интервалами, что является поведением по умолчанию. Вместо этого можно задать другую гистограмму.
J = histeq(I);
Отобразите скорректированное на контраст изображение и его новую гистограмму.
figure subplot(1,2,1) imshow(J) subplot(1,2,2) imhist(J,64)
Этот пример показывает, как построить график кривой преобразования для гистограммы эквализации. histeq
может вернуть вектор 1 на 256, который показывает, для каждого возможного входного значения, полученное выходное значение. (Значения в этом векторе находятся в области значений [0,1], независимо от класса входного изображения.) Можно построить график этих данных, чтобы получить кривую преобразования.
Чтение изображения в рабочую область.
I = imread('pout.tif');
Настройте контраст с помощью гистограммы эквализации, используя histeq
функция. Задайте возвращаемое значение преобразования серой шкалы, T
, который является вектором, который отображает градации серого в изображении интенсивности I
до серых уровней в J
.
[J,T] = histeq(I);
Постройте график кривой преобразования. Заметьте, как эта кривая отражает гистограммы на предыдущем рисунке, с входными значениями в основном между 0,3 и 0,6, в то время как выходные значения распределены равномерно между 0 и 1.
figure plot((0:255)/255,T);