visionhdl.GammaCorrector

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Описание

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

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

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

пример

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

Свойства

развернуть все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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 сигналы типа данных. Сигналы описывают валидность пикселя и местоположение пикселя в системе координат. Для получения дополнительной информации смотрите Пиксельную Управляющую структуру.

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

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

развернуть все

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

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

Типы данных: 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'

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

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

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

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

Алгоритмы

развернуть все

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

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

Представленный в R2015a