Эквализация гистограммы

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

Настройте значения интенсивности Используя эквализацию гистограммы

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

Считайте изображение в рабочую область.

I = imread('pout.tif');

Отобразите изображение и его гистограмму.

figure
subplot(1,2,1)
imshow(I)
subplot(1,2,2)
imhist(I,64)

Figure contains 3 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line. Axes object 3 contains an object of type image.

Настройте контраст с помощью эквализации гистограммы. В этом примере, функции эквализации гистограммы, histeq, попытки совпадать с плоской гистограммой 64 интервалам, которая является поведением по умолчанию. Можно задать различную гистограмму вместо этого.

J = histeq(I);

Отобразите контрастное откорректированное изображение и его новую гистограмму.

figure
subplot(1,2,1)
imshow(J)
subplot(1,2,2)
imhist(J,64)

Figure contains 3 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line. Axes object 3 contains an object of type image.

Постройте кривую преобразования для эквализации гистограммы

В этом примере показано, как построить кривую преобразования для эквализации гистограммы. histeq может возвратиться 1 256 вектор, который показывает, для каждого возможного входного значения, получившегося выходного значения. (Значения в этом векторе находятся в области значений [0,1], независимо от класса входного изображения.) Можно отобразить эти данные на графике, чтобы получить кривую преобразования.

Считайте изображение в рабочую область.

I = imread('pout.tif');

Настройте контраст с помощью эквализации гистограммы, с помощью histeq функция. Задайте полутоновое возвращаемое значение преобразования, T, который является вектором, который сопоставляет graylevels в изображении интенсивности I к уровням серого в J.

[J,T] = histeq(I);

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

figure
plot((0:255)/255,T);

Figure contains an axes object. The axes object contains an object of type line.