exponenta event banner

visionhdl. DemosaicInterpolator

Создайте полные пиксельные данные RGB из пикселей шаблона Байера

Описание

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

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

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

Примечание

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

Конструкция

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

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

Свойства

InterpolationAlgorithm

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

  • Bilinear — Среднее значение пиксельных значений в окружении 3×3 окружение.

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

SensorAlignment

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

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

LineBufferSize

Размер буфера памяти строки, заданного как целое число.

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

Значение по умолчанию: 2048

Методы

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

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

Примеры

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

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

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

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

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

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

Алгоритмы

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

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