exponenta event banner

visionhdl. DemosaicInterpolator

Создание полных данных пикселя RGB из пикселей шаблона Bayer

Описание

visionhdl.DemosaicInterpolator обеспечивает фильтр интерполяции шаблона Байера для потоковой передачи видеоданных. Можно выбрать билинейную интерполяцию низкой сложности или билинейную интерполяцию с поправкой на градиент умеренной сложности. Объект реализует вычисления, используя аппаратно-эффективные алгоритмы формирования кода ЛПВП.

  • Объект выполняет билинейную интерполяцию на окне 3 × 3 пикселей, используя только дополнения и битовые сдвиги.

  • Объект выполняет градиентную коррекцию в окне 5 × 5 пикселей. Объект реализует вычисление, используя битовый сдвиг, сложение и приумножение Canonical Signed Digit (CSD) низкого порядка.

Примечание

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

Строительство

D = visionhdl.DemosaicInterpolator возвращает объект System, D, которая интерполирует данные R 'G' B' из потока пикселей шаблона Байера.

D = visionhdl.DemosaicInterpolator(Name,Value) возвращает объект System, D, с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары. Name является именем свойства и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN. Не указанные свойства сохраняют значения по умолчанию.

Свойства

InterpolationAlgorithm

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

  • Bilinear - Среднее значение пикселя в окружающей окрестности 3 × 3.

  • Gradient-corrected linear (по умолчанию) - билинейное среднее, скорректированное на градиент интенсивности.

SensorAlignment

Цветовая последовательность пикселей во входном потоке.

Укажите последовательность пикселей R, G и B, соответствующих блоку 2 на 2 пикселей в левом верхнем углу входного изображения. Укажите последовательность в порядке слева направо, сверху вниз. Например, значение по умолчанию, RGGB, представляет изображение с этим образцом.

LineBufferSize

Укажите степень два, которая соответствует количеству активных пикселов в одной горизонтальной строке.

Выберите степень 2, которая соответствует количеству активных пикселей в горизонтальной линии. Если задано значение, которое не является степенью два, объект использует следующую наибольшую степень два. При установке InterpolationAlgorithm кому Bilinear, объект выделяет 2-by-LineBufferSize ячейки памяти. При установке InterpolationAlgorithm кому Gradient-corrected linear, объект выделяет 4-by-LineBufferSize ячейки памяти.

По умолчанию: 2048

Методы

шагДемонстрационный видеопоток шаблона Байера
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

В этом примере создаются полные пиксельные данные RGB из миниатюрного изображения шаблона Байера.

Задайте размеры тестового изображения. Загрузите исходный файл изображения. Это изображение в образце Байера: каждый пиксель представлен одним значением, чередующим зелёные значения с красными и синими. Затем выберите часть изображения, соответствующую требуемому размеру теста. Эти смещения выбирают лицо женщины на изображении.

frmActivePixels = 256;
frmActiveLines = 192;
frmOrig = imread('mandi.tif');
frmInput = frmOrig(900:899+frmActiveLines, 2350:2349+frmActivePixels);
figure
imshow(frmInput)
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);

Создайте объект интерполятора. Укажите последовательность значений цвета, соответствующих пикселям 2 на 2 в левом верхнем углу изображения.

BayerInterpolator = visionhdl.DemosaicInterpolator(...
   'SensorAlignment', 'RGGB');

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

Примечание.Этот синтаксис работает только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).

[pixIn,ctrlIn] = frm2pix(frmInput);

Настройте переменные и создайте тройку {R, G, B} для каждого пикселя в потоке. В этом примере каждые 32 строки печатается сообщение о ходе выполнения.

[pixels,lines,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
ctrlOut  = repmat(pixelcontrolstruct,numPixelsPerFrame,1);
pixOut = zeros(numPixelsPerFrame,3,'uint8');
lineCount = 1;
for p = 1:numPixelsPerFrame 
    if ctrlIn(p).hEnd
         lineCount = lineCount+1;
         if mod(lineCount,32)==0
              fprintf('Processing... line %d\n',lineCount)
         end
    end
    [pixOut(p,:),ctrlOut(p)] = BayerInterpolator(pixIn(p),ctrlIn(p));
end
Processing... line 32
Processing... line 64
Processing... line 96
Processing... line 128
Processing... line 160
Processing... line 192

Создайте объект десериализатора с форматом, соответствующим формату сериализатора. Преобразование потока пикселей в кадр изображения и отображение результата.

pix2frm = visionhdl.PixelsToFrame(...
      'NumComponents',3,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines);
[frmOutput,frmValid] = pix2frm(pixOut,ctrlOut);
if frmValid
    figure
    imshow(frmOutput)
    title 'Output Image'
end

Figure contains an axes. The axes with title Output Image contains an object of type image.

Алгоритмы

Этот объект реализует алгоритмы, описанные на странице ссылок блока «Демосаический интерполятор».

См. также

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

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