В этом примере показано несколько подходов к улучшению изображений. Три функции особенно подходят для улучшения контрастности: imadjust
, histeq
, и adapthisteq
. Этот пример сравнивает их использование для улучшения изображений в полутоне и труколоре.
Используя настройки по умолчанию, сравните эффективность следующих трех методов:
imadjust
увеличивает контрастность изображения путем отображения значений изображения интенсивности входа на новые значения, так что по умолчанию 1% данных насыщается при низкой и высокой интенсивности входных данных.
histeq
выполняет гистограмму эквализации. Это усиливает контрастность изображений путем преобразования значений в изображении интенсивности так, чтобы гистограмма выходного изображения приблизительно совпадала с заданной гистограммой (равномерное распределение по умолчанию).
adapthisteq
выполняет ограниченную контрастностью адаптивную гистограмму эквализации. В отличие от histeq
он работает с небольшими областями данных (плитками), а не со всем изображением. Контрастность каждой плитки усиливается так, чтобы гистограмма каждой выходной области приблизительно совпадала с заданной гистограммой (равномерное распределение по умолчанию). Улучшение контрастности может быть ограничено в порядок, чтобы избежать усиления шума, который может присутствовать в изображении.
Считайте полутоновое изображение в рабочую область. Улучшите изображение с помощью трех методов контрастной регулировки.
pout = imread('pout.tif');
pout_imadjust = imadjust(pout);
pout_histeq = histeq(pout);
pout_adapthisteq = adapthisteq(pout);
Отобразите оригинальное изображение и три скорректированные по контрасту изображения в виде монтажа.
montage({pout,pout_imadjust,pout_histeq,pout_adapthisteq},'Size',[1 4]) title("Original Image and Enhanced Images using imadjust, histeq, and adapthisteq")
Прочтите второе полутоновое изображение в рабочую область и улучшите изображение с помощью трех методов контрастной регулировки.
tire = imread('tire.tif');
tire_imadjust = imadjust(tire);
tire_histeq = histeq(tire);
tire_adapthisteq = adapthisteq(tire);
Отобразите оригинальное изображение и три скорректированные по контрасту изображения в виде монтажа.
montage({tire,tire_imadjust,tire_histeq,tire_adapthisteq},'Size',[1 4]) title("Original Image and Enhanced Images using imadjust, histeq, and adapthisteq")
Заметьте, что imadjust
мало влиял на изображение шины, но это вызвало резкое изменение в случае поута. Построение графиков гистограмм pout.tif
и tire.tif
показывает, что большинство пикселей в первом изображении сосредоточены в центре гистограммы, в то время как в случае tire.tif
значения уже распределены между минимумом 0 и максимумом 255, таким образом предотвращая imadjust
от эффективного в регулировании контрастности изображения.
figure subplot(1,2,1) imhist(pout) title('Histogram of pout.tif') subplot(1,2,2) imhist(tire) title('Histogram of tire.tif');
Гистограмма эквализации, с другой стороны, существенно изменяет оба изображения. Многие из ранее скрытых функций являются открытыми, особенно частицы мусора на шине. К сожалению, в то же время увеличение избыточно насыщает несколько областей обоих изображений. Заметьте, как помылся центр шины, часть лица ребенка и пиджак.
Концентрируясь на изображении шины, было бы предпочтительно, чтобы центр колеса держался примерно на той же яркости, увеличивая при этом контрастность в других областях изображения. В порядок, чтобы это произошло, другое преобразование должно быть применено к различным фрагментам изображения. Метод Эквализации адаптивной гистограммы с ограниченной контрастностью, реализованный в adapthisteq
, может достичь этого. Алгоритм анализирует фрагменты изображения и вычисляет соответствующие преобразования. Может быть также установлен предел уровня усиления контрастности, таким образом предотвращая избыточное насыщение, вызванное основным методом эквализации histeq
. Это самый сложный метод в этом примере.
Улучшение контрастности цветных изображений обычно осуществляется путем преобразования изображения в цветовое пространство, которое имеет светимость изображения в качестве одного из его компонентов, таких как цветовое пространство L * a * b *. Корректировка контраста выполняется только на слое светимости 'L *', и затем изображение преобразуется назад в цветовое пространство RGB. Манипуляция светимостью влияет на интенсивность пикселей, сохраняя при этом исходные цвета.
Чтение изображения в рабочую область. The 'shadow.tif'
изображение является индексированным изображением, поэтому преобразуйте изображение в изображение truecolor (RGB). Затем преобразуйте изображение из цветового пространства RGB в цветовое пространство L * a * b *.
[X,map] = imread('shadow.tif');
shadow = ind2rgb(X,map);
shadow_lab = rgb2lab(shadow);
Значения диапазона светимости варьируются от 0 до 100. Масштабируйте значения в область значений [0 1], который является ожидаемой областью значений изображений с типом данных double
.
max_luminosity = 100; L = shadow_lab(:,:,1)/max_luminosity;
Выполните три типа регулировки контраста в канале светимости и оставьте каналы a * и b * неизменными. Преобразуйте изображения обратно в цветовое пространство RGB.
shadow_imadjust = shadow_lab; shadow_imadjust(:,:,1) = imadjust(L)*max_luminosity; shadow_imadjust = lab2rgb(shadow_imadjust); shadow_histeq = shadow_lab; shadow_histeq(:,:,1) = histeq(L)*max_luminosity; shadow_histeq = lab2rgb(shadow_histeq); shadow_adapthisteq = shadow_lab; shadow_adapthisteq(:,:,1) = adapthisteq(L)*max_luminosity; shadow_adapthisteq = lab2rgb(shadow_adapthisteq);
Отобразите оригинальное изображение и три скорректированные по контрасту изображения в виде монтажа.
figure montage({shadow,shadow_imadjust,shadow_histeq,shadow_adapthisteq},'Size',[1 4]) title("Original Image and Enhanced Images using imadjust, histeq, and adapthisteq")
adapthisteq
| histeq
| imadjust