histeq

Улучшите контраст с помощью эквализации гистограммы

Описание

пример

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

Опционально можно выполнить эквализацию гистограммы полутоновых изображений с помощью графического процессора (требует Parallel Computing Toolbox™).

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

[J,T] = histeq(I) возвращает полутоновое преобразование T это сопоставляет уровни серого в изображении I к уровням серого в J.

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

Этот синтаксис не поддержан на графическом процессоре.

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

Этот синтаксис не поддержан на графическом процессоре.

[newmap,T] = histeq(X,___) возвращает полутоновое преобразование T это сопоставляет серый компонент map к серому компоненту newmap.

Этот синтаксис не поддержан на графическом процессоре.

Примеры

свернуть все

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

I = imread('tire.tif');

Улучшите контраст изображения интенсивности с помощью эквализации гистограммы.

J = histeq(I);

Отобразите оригинальное изображение и откорректированное изображение.

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

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

figure
imhist(I,64)

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

figure
imhist(J,64)

Загрузите 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')

Входные параметры

свернуть все

Введите полутоновое изображение, заданное как числовой массив любой размерности.

Типы данных: 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-by-3 числовая матрица со значениями в области значений [0, 1]. Каждой строкой является трехэлементный триплет RGB, который задает красные, зеленые, и синие компоненты одного цвета палитры.

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

Алгоритмы

Когда вы предоставляете желаемую гистограмму hgram, histeq выбирает полутоновое преобразование T, чтобы минимизировать

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

где c0 является совокупной гистограммой A, c1 является совокупной суммой hgram для всей интенсивности k. Эта минимизация подвергается ограничениям, что T должен быть монотонным, и c1 (T (a)) не может промахнуться по c0 (a) больше чем половиной расстояния между количествами гистограммы в a. histeq использует преобразование b = T (a), чтобы сопоставить уровни серого в X (или палитра) к их новым значениям.

Если вы не задаете hgram, затем histeq создает плоский hgram,

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

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

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

Смотрите также

| |

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