exponenta event banner

Выравнивание гистограммы

Можно настроить значения интенсивности пикселов изображения автоматически с помощью выравнивания гистограммы. Выравнивание гистограммы включает преобразование значений интенсивности таким образом, чтобы гистограмма выходного изображения приблизительно соответствовала заданной гистограмме. По умолчанию функция выравнивания гистограммы, 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. Axes 1 contains an object of type stem. Axes 2 contains 2 objects of type image, line. Axes 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. Axes 1 contains an object of type stem. Axes 2 contains 2 objects of type image, line. Axes 3 contains an object of type image.

График кривой преобразования для выравнивания гистограммы

В этом примере показано, как построить график кривой преобразования для выравнивания гистограммы. 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);

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