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 так, чтобы гистограмма серого компонента индексируемого изображения (Xnewmap ) приблизительно совпадает с целевой гистограммой 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
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 является совокупной гистограммой входного изображения I, и 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