visionhdl. ChromaResampler

Субдискретизируйте или сверхдискретизируйте компонент цветности

Описание

visionhdl.ChromaResampler субдискретизирует или сверхдискретизировал пиксельный поток.

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

  • Повышающая дискретизация восстанавливает сигнал к своему исходному уровню. Можно использовать интерполяцию или репликацию, чтобы вычислить дополнительную выборку.

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

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

Примечание

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

Конструкция

CR = visionhdl.ChromaResampler возвращает Системный объект, CR, который субдискретизирует от 4:4:4 до 4:2:2 и применяет фильтр сглаживания по умолчанию.

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

Свойства

Resampling

Передискретизация формата.

  • 4:4:4 to 4:2:2 (значение по умолчанию) — Выполняет операцию субдискретизации.

  • 4:2:2 to 4:4:4 — Выполните операцию повышающей дискретизации.

AntialiasingFilterSource

Lowpass фильтруют, чтобы сопровождать субдискретизировать операцию.

  • Auto (значение по умолчанию) — Встроенный фильтр lowpass.

  • Свойство Фильтр с помощью коэффициентов в свойстве HorizontalFilterCoefficients.

  • 'none' Никакая фильтрация входного сигнала.

Это свойство применяется, когда вы устанавливаете Resampling на 4:4:4 to 4:2:2.

HorizontalFilterCoefficients

Коэффициенты для фильтра сглаживания.

Введите коэффициенты как вектор. Это свойство применяется, когда вы устанавливаете Resampling на 4:4:4 to 4:2:2 и Antialiasing filter к Property.

Значение по умолчанию: [0.2,0.6,0.2]

InterpolationFilter

Метод интерполяции для сверхдискретизировать операции.

  • Linear (значение по умолчанию) — Линейная интерполяция, чтобы вычислить отсутствующие значения.

  • Pixel replication — Повторите значение цветности предыдущего пикселя, чтобы создать недостающий пиксель.

Это свойство применяется, когда вы устанавливаете Resampling на 4:2:2 to 4:4:4.

RoundingMethod

Режим Rounding используется для операций фиксированной точки.

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

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

OverflowAction

Действие переполнения используется для операций фиксированной точки.

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

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

CustomCoefficientsDataType

Тип данных для коэффициентов фильтра сглаживания.

Задайте пользовательский тип данных как вектор символов. Этот параметр применяется, когда вы устанавливаете Antialiasing filter на Property или Auto.

Значение по умолчанию: 'fixdt(1,16,0)'

Методы

шагВычислите следующий пиксель в сверхдискретизированном или субдискретизируемом пиксельном потоке
Характерный для всех системных объектов
release

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

Примеры

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

Передискретизируйте 4:4:4 изображение Y'CbCr к 4:2:2. Пример также показывает, как преобразовать R'G'B' входное изображение в цветовое пространство Y'CbCr.

Подготовьте тестовое изображение путем выбора фрагмента файла изображения.

frmActivePixels = 64;
frmActiveLines = 48;
frmOrig = imread('fabric.png');
frmInput = frmOrig(1:frmActiveLines,1:frmActivePixels,:);

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

frm2pix = visionhdl.FrameToPixels(...
      'NumComponents',3,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines,...
      'TotalPixelsPerLine',frmActivePixels+40,...
      'TotalVideoLines',frmActiveLines+10,...
      'StartingActiveLine',6,...     
      'FrontPorch',5);

Создайте конвертер цветового пространства и resampler, с помощью значений свойств по умолчанию. Преобразование по умолчанию является 'RGB к YCbCr'. Режим передискретизации значения по умолчанию '4:4:4 к 4:2:2'. Фильтр сглаживания по умолчанию является фильтром lowpass с 29 касаниями. Это дает объекту задержку 30 циклов.

convert2ycbcr = visionhdl.ColorSpaceConverter();
downsampler = visionhdl.ChromaResampler();

Сериализируйте тестовое изображение с помощью объекта сериализатора. pixIn является numPixelsPerFrame-by-3 матрица. ctrlIn является вектором структур управляющего сигнала. Предварительно выделите векторы для выходных сигналов.

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

[pixIn,ctrlIn] = frm2pix(frmInput);

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
pix444 = zeros(numPixelsPerFrame,3,'uint8');
ctrl444  = repmat(pixelcontrolstruct,numPixelsPerFrame,1);
pix422 = zeros(numPixelsPerFrame,3,'uint8');
ctrl422 = repmat(pixelcontrolstruct,numPixelsPerFrame,1);

Для каждого пикселя в потоке преобразуйте в YCbCr, затем субдискретизируйте.

for p = 1:numPixelsPerFrame  
    [pix444(p,:),ctrl444(p)] = convert2ycbcr(pixIn(p,:),ctrlIn(p));
    [pix422(p,:),ctrl422(p)] = downsampler(pix444(p,:),ctrl444(p));
end

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

pix2frm444 = visionhdl.PixelsToFrame(...
      'NumComponents',3,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines);

pix2frm422 = visionhdl.PixelsToFrame(...
     'NumComponents',3,...
     'VideoFormat','custom',...
     'ActivePixelsPerLine',frmActivePixels,...
     'ActiveVideoLines',frmActiveLines);

[frm444,frmValid] = pix2frm444(pix444,ctrl444);
[frm422,frmValid] = pix2frm422(pix422,ctrl422);

Существует то же количество пикселей в 4:2:2 и 4:4:4 пиксельные потоки и кадры. Чтобы исследовать передискретизируемые данные, перегруппируйте пиксельные данные для первых 8 пикселей первой строки. Первая строка является элементами Y пикселей, вторая строка является элементами Cb, и третья строка является элементами Cr. Заметьте, что, в 4:2:2 данные, элементы Cb и Cr изменяют только каждую вторую выборку.

YCbCr444 = [frm444(1,1:8,1); frm444(1,1:8,2); frm444(1,1:8,3)]
YCbCr444 = 3x8 uint8 matrix

   132   134   129   124   125   122   118   119
   116   118   119   122   122   121   123   123
   135   131   125   121   119   116   118   118

YCbCr422 = [frm422(1,1:8,1); frm422(1,1:8,2); frm422(1,1:8,3)]
YCbCr422 = 3x8 uint8 matrix

   132   134   129   124   125   122   118   119
   116   116   120   120   122   122   123   123
   135   135   126   126   119   119   118   118


figure
imshow(frm422,'InitialMagnification',300)
title '4:2:2'

figure
imshow(frm444,'InitialMagnification',300)
title '4:4:4'

Алгоритмы

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

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