visionhdl.Histogram

Частотное распределение

Описание

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

Чтобы вычислить частотное распределение значений пикселей в видеопотоке:

  1. Создайте visionhdl.Histogram Объекту и установите его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

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

пример

histo = visionhdl.Histogram(Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в одинарные кавычки.

Свойства

расширить все

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

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

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

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

Типы данных: char | string

Тип данных значений гистограммы, заданный как 'Unsigned fixed point', 'double', или 'single'.

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

Типы данных: char | string

Интервал гистограммы размера слова, заданная как положительное целое число. Если интервал переполнен, счетчик насыщается, и объект показывает предупреждение.

Зависимости

Чтобы включить это свойство, установите OutputDataType свойство к 'Unsigned fixed point'.

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

Описание

пример

histo(~,~,~,~) выполняет начальную фазу сброса перед обработкой входных данных. После создания или сброса объекта вызовите объект с фиктивными аргументами для NumBins циклы перед применением данных. Вам не нужно устанавливать binReset аргумент в 1 (true) на этой фазе.

пример

[dataOut,readRdy,validOut] = histo(pixelIn,ctrlIn,~,0) добавляет входа пиксель, pixelIn, на внутреннюю гистограмму, когда входные управляющие сигналы, ctrl указать, что пиксель действителен. Вызовите объект с этим синтаксисом для каждого пикселя в системе координат. Объект возвращается readRdy установлено на 1 (true), когда гистограмма для системы координат завершена. Для этого синтаксиса объект возвращает dataOut установлено на 0 и validOut установлено на 0 (false).

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

пример

[dataOut,readRdy,validOut] = histo(~,~,binAddr,0) считывает интервал гистограммы, заданную как binAddr. Используйте этот синтаксис после того, как объект вернется readRdy установлено на 1 (true). Вызовите объект с этим синтаксисом для каждого интервала гистограммы. После двух дальнейших вызовов объекта (входные параметры могут измениться), объект возвращается dataOut установите значение интервала в binAddr и validOut установлено на 1 (true).

пример

[dataOut,readRdy,validOut] = histo(~,~,binAddr,binReset) сбрасывает значения гистограммы при binReset является 1(true). Можно инициировать сброс, задавая также binAddr читать. Прежде чем применять больше видео данных, завершите последовательность сброса, вызвав объект с фиктивными аргументами для NumBins циклы.

Чтобы визуализировать последовательность операций, смотрите временные диаграммы в разделе Алгоритмы Histogram блочной страницы.

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

расширить все

Один пиксель изображения, заданный как беззнаковый скаляр.

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

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

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

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

Число интервала для чтения значений гистограммы, заданное в виде неотрицательного целого числа. Объект ожидает этот вход после того, как он вернется readRdy установлено на 1 (true). Тип данных должен быть fixdt (0, log2 (NumBins),0).

Типы данных: fixdt(0,N,0)

Сбросьте значения интервала гистограммы, заданные как 1 (true) или 0 (false). A binReset значение 1 (true) запускает последовательность инициализации ОЗУ, которая сбрасывает значения интервала гистограммы. Это занимает NumBins вызывает объект, чтобы удалить все местоположения и игнорирует входные параметры в течение этого интервала.

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

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

расширить все

Индикация того, что интервалы гистограммы доступны для чтения, возвращается как 1 (true) или 0 (false). Когда объект устанавливает readRdy на 1 (true), интервалы гистограммы готовы к чтению. Объект возвращается readRdy как 1 (true) два цикла после последнего пикселя системы координат.

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

Значение интервала гистограммы, которое соответствует запрошенному адресу, binAddr, возвращается как неотрицательное целое число. The OutputDataType свойство задает тип данных для этого значения.

Индикация того, что значение гистограммы верно, возвращается следующим 1 (true) или 0 (false). Когда объект возвращается validOut как 1 (true), значение интервала гистограммы, dataOut, действителен.

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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

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

Создайте сериализатор System object™ и задайте неактивные пиксельные области. Затем создайте гистограмму системного объекта. Настройкой по умолчанию является 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);

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

[pixelIn,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 как 1 (true) два цикла после завершения активной системы координат.

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

После завершения системы координат, как обозначено readRdy, считайте значения интервала. Адреса интервалов 0:bins-1. Объект возвращает каждое значение интервала после двух циклов задержки, поэтому вызывайте объект bins+2 времени.

if readRdy(numPixelsPerFrame) 
  for p = 1:bins+2
     if (p < bins) 
        % Read a normal bin
        [dataOut(p),~,validOut(p)] = histo(uint8(0),noOpCtrl,uint8(p-1),noReset);
     elseif (p == bins)
        % Read the final bin value and initiate binReset
        [dataOut(p),~,validOut(p)] = histo(uint8(0),noOpCtrl,uint8(p-1),true);
     elseif (p > bins) 
        % Flush final bin values with two 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')

Figure contains an axes. The axes with title Histogram of Input Image contains an object of type bar.

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

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

Алгоритмы

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

См. также

| | (Image Processing Toolbox)

Введенный в R2015a