Выравнивание гистограммы (эквализация)
Функция histeqулучшает контраст изображения с помощью преобразования значений пикселов исходного изображения таким образом, чтобы гистограмма яркостей пикселов результирующего изображения приблизительно соответствовала некоторой предопределенной гистограмме. В результате её применения диапазон значений интенсивностей растягивается на весь отрезок возможных значений. Таким образом, визуально светлые пикселы становятся ещё более светлыми, а темные – более темными. Аналогично команде hist, histeq применима только к чёрно-белому, полутоновому и индексированному изображениям.
Функция Id=histeq(Im, n) преобразует исходное полутоновое изображение Im таким образом, чтобы результирующее полутоновое изображение Id имело гистограмму яркостей пикселов, близкую к равномерной. Равномерная гистограмма hgram создается из n столбцов. Чем меньше n по сравнению с количеством градаций яркости в изображении Im, тем более равномерной получается гистограмма яркостей пикселов результирующего изображения. По умолчанию значение n равно 64, и данный параметр можно не указывать при вызове функции. Если используется изображение в индексированном формате, то команда histeq имеет вид: histeq(X, map, hgram).
Пример 7.1.Применить команду histeqк фотографии дорожного полотна на рис. 1.
>> Pic='C:\road.JPG';
>> I=imread(Pic);
% чтение исходного изображения и вывод его на экран.
>> imshow(I);
>> Is=histeq(I);
% выравнивание гистограммы яркостей исходного
% полутонового изображения
>> subplot(1,2,1), imshow(I);
% вывод исходного и полученного
>> subplot(1,2,2), imshow(Is);
% изображения в одно окно
>> subplot(1,2,1), imhist(I);
% вывод гистограммы яркостей исходного
>> subplot(1,2,2), imhist(Is);
% и полученного изображения в одно окно
Результат:
Рис.1. Изображение и соответствующая гистограмма слева – исходное, справа – после выполнения функции histeq
Пример 7.2. Использовать функцию histeq для получения гистограммы Рис.2, где текстура неразличима. Применить histeq:
Рис.2. Гистограмма изображения с неразличимой текстурой
Изменение интенсивности не заполняет весь отрезок от 0 до 250, что говорит о недостаточном контрасте изображения. Контрастность можно повысить одной из 3-х процедур histeq, imadjust и adapthisteq.
>> I2 = histeq(X);
>> figure, imshow(I2)
>> figure, imhist(I2)
Рис.3. Изображение и его гистограмма
Команда imwrite записывает изображение на диск в одном из поддерживаемых форматов.
imwrite(A,filename,fmt), где А – изображение, filename – название под которым изображение будет записано на диск, fmt – формат записи.
Пример 7.3. Записать изображение в графический файл и просмотреть информацию о файле.
>> imwrite (I2, 'F:\Grafika\111','jpg');
% Запись файла на диск
>> imfinfo('F:\Grafika\111','jpg')
% Просмотр информации о файле:
Filename: 'F:\Grafika\111'
FileModDate: '14-Mar-2007 11:38:32'
FileSize: 11708
Format: 'jpg'
FormatVersion: ''
Width: 154
Height: 131
BitDepth: 8
ColorType: 'grayscale'
FormatSignature: ''
NumberOfSamples: 1
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}