visionhdl.DemosaicInterpolator

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

Описание

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

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

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

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

  1. Создайте visionhdl.DemosaicInterpolator объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

bayerInterpolator = visionhdl.DemosaicInterpolator создает Системный объект, который интерполирует данные о RGB из пиксельного потока шаблона Байера.

пример

bayerInterpolator = visionhdl.DemosaicInterpolator(Name,Value) свойства наборов с помощью одних или нескольких аргументов name-value. Например, 'SensorAlignment','RGGB' задает шаблон пикселей RGB во входном потоке.

Свойства

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

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release функция разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

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

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

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

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

Размер буфера памяти линии в виде положительного целого числа. Выберите степень двойки, которая вмещает количество активных пикселей в горизонтальной линии. Если вы задаете значение, которое не является степенью двойки, буфер использует следующую самую большую степень двойки.

  • Когда вы устанавливаете InterpolationAlgorithm свойство к 'Bilinear', объект выделяет 2 LineBufferSize ячейки памяти.

  • Когда вы устанавливаете InterpolationAlgorithm свойство к 'Gradient-corrected linear', объект выделяет 4 LineBufferSize ячейки памяти.

Использование

Описание

пример

[pixelout,ctrlout] = bayerInterpolator(pixelin,ctrlin) интерполирует значения отсутствующего цвета потока входного пикселя шаблона Байера и возвращает следующее пиксельное значение, pixelout, как вектор из значений RGB. pixelin представляет один пиксель в изображении шаблона Байера.

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

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

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

Один входной пиксель в виде скалярного целого числа без знака. Изображения в формате Байера имеют один компонент цвета для каждого пиксельного местоположения. Выберите последовательность R, G, и пиксели B при помощи SensorAlignment свойство.

Можно симулировать Системные объекты с мультипиксельным интерфейсом потоковой передачи, но Системные объекты, которые используют мультипиксельные потоки, не поддерживаются для генерации HDL-кода. Используйте эквивалентные блоки, чтобы сгенерировать HDL-код для мультипиксельных алгоритмов.

double и single типы данных поддерживаются для симуляции, но не для генерации HDL-кода.

Типы данных: single | double | uint8 | uint16 | uint32 | uint64 | fi(0,N,0)

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

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

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

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

Один выходной пиксель, возвращенный как трехэлементный вектор из значений в цветовом пространстве RGB.

Тип данных pixelout совпадает с типом данных pixelin.

Типы данных: single | double | uint8 | uint16 | uint32 | uint64 | fi(0,N,0)

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

В этом примере показано, как создать полные пиксельные данные 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 object. The axes object 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 вектор из структур управляющего сигнала.

[pixIn,ctrlIn] = frm2pix(frmInput);

Настройте переменные, и затем сгенерируйте триплет RGB для каждого пикселя в потоке. Этот пример распечатывает сообщение о ходе выполнения каждые 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

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

Алгоритмы

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

Расширенные возможности

Смотрите также

Блоки

Функции

Объекты

Представленный в R2015a
Для просмотра документации необходимо авторизоваться на сайте