visionhdl.GammaCorrector

Применить или удалить гамма- коррекцию

Описание

visionhdl.GammaCorrector применяет или удаляет гамма- коррекцию в потоке пикселей. Гамма- коррекция корректирует линейные пиксельные значения так, чтобы измененные значения совпадали с кривой. Операция de-gamma выполняет противоположную операцию, чтобы получить линейные пиксельные значения.

Для применения или удаления гамма- коррекции:

  1. Создайте visionhdl.GammaCorrector Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

corrector = visionhdl.GammaCorrector возвращает системное object™, которое применяет гамма- коррекцию по умолчанию к потоку пикселей.

corrector = visionhdl.GammaCorrector(Name,Value) возвращает гамма- коррекцию Системного объекта, corrector, с набором свойств, использующим одну или несколько пары "имя-значение". Заключайте каждое имя свойства в одинарные кавычки.

Пример: corrector = visionhdl.GammaCorrector('LinearSegment',false) создает объект гамма- коррекции, который не использует линейный сегмент в гамма-кривой.

пример

corrector = visionhdl.GammaCorrector(operation,gammaValue,Name,Value) возвращает объект Системы гамма-коррекции со свойством Correction, установленным на operation, Гамма- набор свойств, чтобы gammaValueи дополнительные опции, заданные одной или несколькими парами "имя-значение".

Свойства

расширить все

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

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Направление корректировки кривой интенсивности, заданное как:

  • 'Gamma' - Применить гамма-коррекцию.

  • 'De-gamma' - Снять гамма-коррекцию.

Целевое или текущее значение гаммы, заданное как скалярное значение, больше или равное 1.

  • Когда вы устанавливаете Коррекцию на 'Gamma'установите это свойство в целевое значение гамма выходного видеопотока.

  • Когда вы устанавливаете Коррекцию на 'De-gamma'установите это свойство в значение гамма входного видеопотока.

Опция включения линейного сегмента в гамма-кривую, заданная как true или false. Когда вы устанавливаете это свойство на trueгамма-кривая имеет линейный фрагмент около источника.

Точка, где сходятся гамма-кривая и линейный сегмент, заданная как скалярное значение пикселя между 0 и 1, исключающее.

Зависимость

Чтобы включить это свойство, установите значение LinearSegment равным true.

Использование

Описание

[pixelOut,ctrlOut] = corrector(pixelIn,ctrlIn) возвращает значение интенсивности пикселя после гамма- коррекции и управляющие сигналы, сопоставленные с пикселем. Вход, pixelIn, и выход, pixelOut, являются скалярными значениями, представляющими один пиксель.

Этот объект использует интерфейс потокового пикселя со структурой для сигналов управления системой координат. Этот интерфейс позволяет объекту работать независимо от размера и формата изображения и соединяться с другими объектами Vision HDL Toolbox™. Объект принимает и возвращает скалярное значение пикселя и сигналы управления как структуру, содержащую пять сигналов. Сигналы управления указывают валидность каждого пикселя и его местоположение в системе координат. Чтобы преобразовать пиксельную матрицу в поток пикселей и сигналы управления, используйте visionhdl.FrameToPixels объект. Полное описание интерфейса см. в разделе Потоковый пиксельный интерфейс.

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

расширить все

Интенсивность одного пикселя, заданная как скалярное значение. Для типов данных с фиксированной точкой входа размера слова должны быть меньше или равны 16.

double и single типы данных поддерживаются для симуляции, но не для генерации HDL-кода.

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

Сигналы управления, сопровождающие входной поток пикселей, заданные как pixelcontrol структура, содержащая пять logical сигналы типа данных. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Structure.

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

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

расширить все

Гамма-скорректированная интенсивность одного пикселя, заданная в виде скалярного значения. Тип данных выходного пикселя совпадает с типом данных pixelIn.

Сигналы управления, сопровождающие вывод потока пикселей, возвращенные как pixelcontrol структура, содержащая пять logical сигналы типа данных. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Structure.

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

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Этот пример выполняет гамма- коррекцию на миниатюрном изображении.

Загрузите исходное изображение из файла. Выберите фрагмент изображения, совпадающую с желаемым размером теста.

frmOrig = imread('rice.png');
frmActivePixels = 64;
frmActiveLines = 48;
frmInput = frmOrig(1:frmActiveLines,1:frmActivePixels);
figure
imshow(frmInput,'InitialMagnification',300)
title 'Input Image'

Figure contains an axes. The axes with title Input Image contains an object of type image.

Создайте объект сериализатора и укажите размер неактивных пиксельных областей.

frm2pix = visionhdl.FrameToPixels(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines,...
      'TotalPixelsPerLine',frmActivePixels+10,...
      'TotalVideoLines',frmActiveLines+10,...
      'StartingActiveLine',6,...     
      'FrontPorch',5);

Создайте объект гамма-корректора.

 gammacorr = visionhdl.GammaCorrector(...
      'Gamma', 1.75);

Сериализуйте тестовое изображение путем вызова объекта сериализатора. pixIn является вектором значений интенсивности. ctrlIn является вектором структур управляющего сигнала.

Примечание.Синтаксис объекта выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов объекта на эквивалентный step синтаксис. Для примера замените myObject(x) с step(myObject,x).

[pixIn,ctrlIn] = frm2pix(frmInput);

Подготовьтесь к обработке пикселей путем предварительного выделения выходных векторов.

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
pixOut = zeros(numPixelsPerFrame,1,'uint8');
ctrlOut  = repmat(pixelcontrolstruct,numPixelsPerFrame,1);

Для каждого пикселя в потоке вычислите значение гамма-исправленного пикселя.

for p = 1:numPixelsPerFrame  
    [pixOut(p),ctrlOut(p)] = gammacorr(pixIn(p),ctrlIn(p));
end

Создайте объект десериализатора с форматом, соответствующим формату сериализатора. Преобразуйте поток пикселей в систему координат изображения путем вызова объекта десериализатора. Отобразите получившееся изображение.

pix2frm = visionhdl.PixelsToFrame(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines);  
[frmOutput,frmValid] = pix2frm(pixOut,ctrlOut);
if frmValid
    figure
    imshow(frmOutput, 'InitialMagnification',300)
    title 'Output Image'
end

Figure contains an axes. The axes with title Output Image contains an object of type image.

Алгоритмы

расширить все

Для уравнений, используемых для гамма- коррекции, смотрите Gamma Correction (Computer Vision Toolbox).

Чтобы сохранить оборудование ресурсы, объект реализует уравнение гамма-коррекции как интерполяционную таблицу. Интерполяционная таблица преобразует каждое входное значение пикселя в исправленное выходное значение.

См. также

Блоки

Объекты

Функции

  • (Набор Image Processing Toolbox)
Введенный в R2015a