visionhdl. LookupTable

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

Описание

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

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

Примечание

При запуске в R2016b, вместо того, чтобы использовать метод step, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Конструкция

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

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

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

tabledata

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

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

LUT

Системный объект visionhdl.LookupTable

Свойства

Table

Сопоставьте между значениями входного пикселя и значениями выходного пикселя.

  • Табличные данные являются вектором, строкой или столбцом, любого типа данных. Тип данных табличных данных определяет тип данных pixelOut. См. метод step.

  • Длина табличных данных должна равняться 2WordLength, где WordLength является размером, в битах, pixelIn. См. метод step.

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

Значение по умолчанию: uint8(0:1:255)

Методы

шагСопоставьте входной пиксель с выходным пикселем на основе табличного содержимого
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

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

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

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

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

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

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

Сериализируйте тестовое изображение. 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)] = inverter(pixIn(p),ctrlIn(p));
end

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

Алгоритмы

Этот объект реализует алгоритмы, описанные на странице с описанием блока Lookup Table.

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