visionhdl.ChromaResampler

Понижающий или повышающий коэффициент компонента цветности

Описание

visionhdl.ChromaResampler понижает или увеличивает пиксельный поток.

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

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

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

Объект принимает компоненты luma и chrominance. Объект не изменяет компонент яркости и применяет задержку для выравнивания с повторно дискретизированными выходами цветности. Скорость выходного компонента яркости совпадает с входом.

Примечание

Начиная с 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) возвращает Системный объект красителя цветности, CR, с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Name является именем свойства и Value - соответствующее значение. Name должны находиться внутри одинарных кавычек (''). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN. Не заданные свойства сохраняют значения по умолчанию.

Свойства

Resampling

Формат повторной дискретизации.

  • 4:4:4 to 4:2:2 (по умолчанию) - выполните операцию понижающей дискретизации.

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

AntialiasingFilterSource

Lowpass фильтр для сопровождения операции downsample.

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

  • Property - Фильтрация с использованием коэффициентов в 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

Метод интерполяции для операции upsample.

  • Linear (по умолчанию) - Линейная интерполяция для вычисления отсутствующих значений.

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

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

RoundingMethod

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

Объект использует арифметику с фиксированной точкой для внутренних вычислений, когда вход является любым целым числом или типом данных с фиксированной точкой. Эта опция не применяется, когда тип входных данных 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);

Создайте преобразователь цветового пространства и ресамплер, используя значения свойств по умолчанию. Преобразование по умолчанию является 'RGB в YCbCr'. Режим повторной дискретизации по умолчанию является '4:4:4 - 4:2:2'. Сглаживающим фильтром по умолчанию является 29-таповый lowpass фильтр. Это придает объекту задержку в 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

Создайте десериализаторы с форматом, соответствующим формату сериализатора. Преобразуйте пиксельные потоки 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 contains an axes. The axes with title 4:2:2 contains an object of type image.

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

Figure contains an axes. The axes with title 4:4:4 contains an object of type image.

Алгоритмы

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

См. также

| | (Computer Vision Toolbox)

Введенный в R2015a