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Значение парные аргументы. 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 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