visionhdl. Гистограмма

Плотность распределения

Описание

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

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

Примечание

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

Конструкция

H = visionhdl.Histogram возвращает Системный объект, H, который вычисляет гистограммы изображений более чем 256 интервалов с размером интервала 16 битов.

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

Свойства

NumBins

Количество интервалов для гистограммы.

Выберите количество интервалов в зависимости от входного размера слова (WL). Если количество интервалов является меньше, чем 2WL, объект обрезает младшие значащие биты каждого пикселя. Если количество интервалов больше, чем 2WL, объект предупреждает о неэффективном использовании аппаратных ресурсов.

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

OutputDataType

Тип данных значений гистограммы.

  • double

  • single

  • Unsigned fixed point (значение по умолчанию)

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

OutputWordLength

Размер слова значения интервала гистограммы, когда OutputDataType является Unsigned fixed point. Если интервал переполняется, количество насыщает, и объект показывает предупреждение.

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

Методы

шагСортировка входного пикселя в интервал гистограммы, или читают интервал гистограммы
Характерный для всех системных объектов
release

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

Примеры

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

Установите размерности тестового изображения и загрузите исходное изображение. Выберите фрагмент изображения, совпадающего с желаемым тестовым размером.

frmActivePixels = 64;
frmActiveLines = 48;
frmOrig = imread('rice.png');
frmInput = frmOrig(1:frmActiveLines,1:frmActivePixels);
figure
imshow(frmInput,'InitialMagnification',300)
title 'Input Image'

Создайте сериализатор, возражают и задают неактивные пиксельные области. Затем создайте объект гистограммы. Настройка по умолчанию является 256 интервалами.

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

histo = visionhdl.Histogram();
bins = str2double(histo.NumBins);

Сериализируйте тестовое изображение. pixIn является вектором значений интенсивности, и ctrlIn является вектором структур управляющего сигнала. Инициализируйте выходные сигналы для результатов гистограммы.

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

[pixIn,ctrlIn] = frm2pix(frmInput);

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
readRdy = false(numPixelsPerFrame,1);
dataOut = zeros(bins-1,1,'uint8');
validOut  = false(bins-1,1);
noOpCtrl = pixelcontrolstruct(0,0,0,0,0);
noAddr = uint8(0);
noReset = false;

Вызовите объект с фиктивным входом, чтобы инициализировать память интервала.

for p = 1:bins  
    histo(uint8(0),noOpCtrl,noAddr,noReset);
end

Для каждого пикселя в заполненном кадре отсортируйте пиксель в интервал. readRdy является возвращенными циклами true 2 после того, как активный кадр будет завершен.

for p = 1:numPixelsPerFrame  
   [~,readRdy(p),~] = histo(pixIn(p),ctrlIn(p),noAddr,noReset);
end

Если кадр завершен, как обозначено readRdy, считайте значения интервала.

if readRdy(numPixelsPerFrame) 
  for p = 1:bins+1
     if (p < bins-1) 
        % Read a normal bin
        % Bin addresses are 0:bins-1
        [dataOut(p),~,validOut(p)] = histo(uint8(0),noOpCtrl,uint8(p-1),noReset);
     elseif (p == bins-1)
        % Read the final bin value and initiate binReset
        [dataOut(p),~,validOut(p)] = histo(uint8(0),noOpCtrl,uint8(bins-1),true);
     elseif (p >= bins) 
        % Flush final bin values with 2 more calls
        [dataOut(p),~,validOut(p)] = histo(uint8(0),noOpCtrl,noAddr,noReset);        
     end
  end  
end

Изобразите значения интервала в виде графика.

dataOut = dataOut(validOut==1);
figure
bar(dataOut)
title('Histogram of Input Image')

Вызовите объект с фиктивным входом, чтобы очистить память интервала.

for p = 1:bins-2  
    histo(uint8(0),noOpCtrl,noAddr,noReset);
end

Алгоритмы

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

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