visionhdl.ChromaResampler

Downsample или сверхдискретизировал компонент цветности

Описание

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

Свойства

Resampling

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

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

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

AntialiasingFilterSource

Фильтр lowpass, чтобы сопровождать прореживать операцию.

  • 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

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

  • 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 - 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