exponenta event banner

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

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

Описание

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

Для вычисления частотного распределения значений пикселей в видеопотоке:

  1. Создать visionhdl.Histogram и задайте его свойства.

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

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

Создание

Описание

histo = visionhdl.Histogram возвращает объект System, 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

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

Зависимости

Чтобы включить это свойство, установите значение 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 циклов.

Для визуализации последовательности операций см. временные диаграммы в разделе Алгоритмы на странице Блок гистограммы.

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

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

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

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

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

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

Типы данных: 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, возвращается как неотрицательное целое число. OutputDataType указывает тип данных для этого значения.

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Задайте размеры тестового изображения и загрузите исходное изображение. Выберите часть изображения, соответствующую требуемому размеру теста.

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.

Создайте системный object™ сериализатора и определите неактивные пиксельные области. Затем создайте объект histogram System. По умолчанию установлено 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. Объект возвращает каждое значение bin после двух циклов задержки, поэтому вызовите объект 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

Алгоритмы

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

См. также

| | (Панель инструментов обработки изображений)

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