visionhdl. GammaCorrector

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

Описание

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

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

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

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

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

Создание

Синтаксис

corrector = visionhdl.GammaCorrector
corrector = visionhdl.GammaCorrector(Name,Value)
corrector = visionhdl.GammaCorrector(operation,gammaValue,Name,Value)

Описание

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.

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

[pixelOut,ctrlOut] = corrector(pixelIn,ctrlIn)

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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

Алгоритмы

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

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

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

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