exponenta event banner

visionhdl. LookupTable

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

Описание

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

Чтобы сопоставить входное значение пикселя с выходным значением пикселя, выполните следующие действия.

  1. Создать visionhdl.LookupTable и задайте его свойства.

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

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

Создание

Синтаксис

LUT = visionhdl.LookupTable(tabledata)

Описание

LUT = visionhdl.LookupTable(tabledata) возвращает таблицу поиска Системный объект, который выполняет сопоставление один к одному между входным пикселем и выходным пикселем. Сопоставление определяется свойством Table, которое имеет значение 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 сигналы типа данных. Сигналы описывают достоверность пикселя и его местоположение в кадре. Дополнительные сведения см. в разделе Структура пиксельного управления.

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте негатив изображения, просмотрев в таблице противоположные значения пикселов.

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

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