exponenta event banner

visionhdl. GammaCorrector

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

Описание

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

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

  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, свойство Gamma имеет значение 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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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.

Алгоритмы

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

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

Для экономии аппаратных ресурсов объект реализует уравнение гамма-коррекции в виде таблицы поиска. Таблица поиска отображает каждое входное значение пикселя в скорректированное выходное значение.

См. также

Блоки

Объекты

Функции

  • (Панель инструментов обработки изображений)
Представлен в R2015a