visionhdl.LookupTable

Сопоставьте входной пиксель с выходным пикселем с помощью пользовательского правила

Описание

The visionhdl.LookupTable Системная object™ использует пользовательскую карту один к одному, чтобы преобразовать между входным значением пикселя и выходным значением пикселя.

Чтобы сопоставить значение входа пикселя с значением выхода пикселя:

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

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

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

Создание

Синтаксис

LUT = visionhdl.LookupTable(tabledata)

Описание

LUT = visionhdl.LookupTable(tabledata) возвращает интерполяционную таблицу Системный объект, который выполняет взаимно-однозначное отображение между пикселем входа и пикселем выхода. Отображение определяется свойством таблицы, которое устанавливается на значение tabledata.

Свойства

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

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

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

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

Сопоставьте между входом пикселем и выходом пикселем в виде строки или вектора-столбца любого типа данных. Тип данных данных таблицы определяет тип pixelOut. Это отображение определяет соответствие один к одному между входом pixelIn значение и выходной pixelOut значение.

  • Длина данных таблицы должна равняться 2WordLength, где WordLength - размер, в битах, pixelIn. Этот объект не выполняет интерполяцию. Каждое входное значение должно иметь соответствующее выходное значение в таблице.

  • Наименьшее представимое значение типа входные данные сопоставляется с первым элементом таблицы, второе наименьшее значение сопоставляется со вторым элементом и так далее. Для примера, если pixelIn имеет тип данных fixdt(0,3,1)значение входа 0 преобразуется в первый элемент таблицы, 0,5 преобразуется во второй элемент, 1 преобразуется в третий элемент и так далее.

Пример: uint8(linspace(255,0,256))

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

Синтаксис

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

Описание

[pixelOut,ctrlOut] = LUT(pixelIn,ctrlIn) возвращает значение пикселя, pixelOut, расположенный в таблице по адресу, заданному входным значением пикселя, pixelIn. Объект задерживает входные сигналы управления, ctrlIn, для выравнивания выходных управляющих сигналов, ctrlOut, с выходом данными.

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

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

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

Входной пиксель, заданный как скалярное значение интенсивности или вектор-строка из трех значений, представляющих один пиксель в цветовом пространстве R 'G' B 'или Y' CbCr. Для неподписанных типов данных с фиксированной точкой входа размера слова должно быть меньше или равно 16.

Можно симулировать Системные объекты с мультипиксельным потоковым интерфейсом, но Системные объекты, которые используют мультипиксельные потоки, не поддерживаются для генерации HDL-кода. Используйте эквивалентные блоки для генерации HDL-кода для мультипиксельных алгоритмов.

Типы данных: logical | uint8 | uint16 | fi

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

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

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

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

Выходной пиксель, возвращенный как скалярное значение интенсивности или вектор из трех значений, представляющих цветовое пространство R 'G' B 'или Y' CbCr. Тип данных выхода совпадает с типом данных записей, заданных в Table свойство.

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

frmActivePixels = 64;
frmActiveLines = 48;
frmOrig = imread('rice.png');
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);

Создайте объект интерполяционной таблицы. Тип входных данных пикселя uint8, поэтому отрицательное значение 255-pixel. Тип выходов пикселя совпадает с типом данных содержимого таблицы.

tabledata = uint8(linspace(255,0,256));
inverter = visionhdl.LookupTable(tabledata);

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

[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)] = inverter(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