visionhdl.GammaCorrector

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

Описание

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

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

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

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

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

Создайте объект 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

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

Алгоритмы

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

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

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

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

Блоки

Объекты

Функции

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