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. The 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 -на 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