exponenta event banner

histeq

Усиление контрастности с помощью выравнивания гистограммы

Описание

пример

J = histeq(I,hgram) преобразует изображение в оттенках серого I чтобы гистограмма выходного изображения в градациях серого J с length(hgram) ячейки приблизительно соответствуют целевой гистограмме hgram.

J = histeq(I,n) преобразует изображение в оттенках серого I чтобы гистограмма выходного изображения в градациях серого J с n бункеры приблизительно плоские. Гистограмма J является более плоским, когда n намного меньше, чем количество дискретных уровней в I.

J = histeq(I) преобразует изображение в оттенках серого I чтобы гистограмма выходного изображения в градациях серого J имеет 64 бункера и является приблизительно плоским.

newmap = histeq(X,map) преобразует значения на карте цветов таким образом, чтобы гистограмма серой составляющей индексированного изображения X приблизительно плоская. Преобразованная карта цветов: newmap.

newmap = histeq(X,map,hgram) преобразует цветовую карту, связанную с индексированным изображением X так, чтобы гистограмма серой составляющей индексированного изображения (X,newmap) приблизительно соответствует целевой гистограмме hgram. histeq функция возвращает преобразованную цветовую карту в newmap. length(hgram) должно быть таким же, как size(map,1).

[___,T] = histeq(___) также возвращает преобразование T который сопоставляет серый компонент входного изображения в оттенках серого или цветовой карты с серым компонентом выходного изображения в оттенках серого или цветной карты.

Примеры

свернуть все

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

I = imread('tire.tif');

Повышение контрастности изображения интенсивности с помощью выравнивания гистограммы.

J = histeq(I);

Отображение исходного изображения и скорректированного изображения.

imshowpair(I,J,'montage')
axis off

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

Отображение гистограммы исходного изображения.

figure
imhist(I,64)

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

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

figure
imhist(J,64)

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

Загрузите набор данных 3-D.

load mristack

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

enhanced = histeq(mristack);

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

figure
subplot(1,2,1)
imshow(mristack(:,:,1))
title('Slice of Original Image')
subplot(1,2,2)
imshow(enhanced(:,:,1))
title('Slice of Enhanced Image')

Figure contains 2 axes. Axes 1 with title Slice of Original Image contains an object of type image. Axes 2 with title Slice of Enhanced Image contains an object of type image.

Входные аргументы

свернуть все

Изображение в градациях серого, указанное как числовой массив любого размера.

Типы данных: single | double | int16 | uint8 | uint16

Целевая гистограмма, заданная как числовой вектор. hgram имеет равноотстоящие ячейки со значениями интенсивности в соответствующем диапазоне:

  • [0, 1] для изображений класса double или single

  • [0, 255] для изображений класса uint8

  • [0, 65535] для изображений класса uint16

  • [-32768, 32767] для изображений класса int16

histeq автоматическое масштабирование hgram чтобы sum(hgram)=numel(I). Гистограмма J лучшие совпадения hgram когда length(hgram) намного меньше, чем количество дискретных уровней в I.

Типы данных: single | double

Количество дискретных уровней серого, указанных как положительное целое число.

Типы данных: single | double

Индексированное изображение, указанное как числовой массив любого измерения. Значения в X являются индексом в цветовой карте map.

Типы данных: single | double | uint8 | uint16

Цветовая карта, заданная в виде цифровой матрицы c-by-3 со значениями в диапазоне [0, 1]. Каждая строка представляет собой трехэлементный RGB-триплет, определяющий красный, зеленый и синий компоненты одного цвета карты цветов.

Типы данных: double

Выходные аргументы

свернуть все

Преобразованное изображение в оттенках серого, возвращаемое в виде числового массива того же размера и класса, что и входное изображение I.

Преобразование в градациях серого, возвращаемое в виде числового вектора. Преобразование T отображение уровней серого на изображении I до уровней серого в J.

Типы данных: double

Преобразованная цветовая карта, заданная в виде n-на-3 числовой матрицы со значениями в диапазоне [0, 1]. Каждая строка представляет собой трехэлементный RGB-триплет, определяющий красный, зеленый и синий компоненты одного цвета карты цветов.

Типы данных: double

Алгоритмы

При вводе требуемой гистограммы hgram, histeq выбирает преобразование в градациях серого T минимизировать

| c1 (T (k)) c0 (k) |,

c0 - кумулятивная гистограмма входного изображения I, и c1 - кумулятивная сумма hgram для всех интенсивностей k. Эта минимизация зависит от следующих ограничений:

  • T должен быть монотонным

  • c1 (T (a)) не может превысить c0 (a) более чем на половину расстояния между счетчиками гистограммы при

histeq использует преобразование b = T (a) для отображения уровней серого вX (или цветовой карты) к новым значениям.

Если не указать hgram, то histeq создает плоскую hgram,

hgram = ones(1,n)*prod(size(A))/n;

а затем применяет предыдущий алгоритм.

Расширенные возможности

.

См. также

| | |

Представлен до R2006a