visionhdl.Histogram

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

Описание

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

Вычислить плотность распределения пиксельных значений в видеопотоке:

  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 ложь).

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

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

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

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

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

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 ложь). binreset значение 1 (true) инициировал последовательность инициализации RAM, которая сбрасывает значения интервала гистограммы. Это берет NumBins вызовы объекта очистить все местоположения и игнорируют входные параметры во время этого интервала.

Типы данных: логический

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

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

Индикация, что интервалы гистограммы доступны для чтения, возвратилась как 1 TRUE) или 0 ложь). Когда объект устанавливает readrdy к 1 TRUE), интервалы гистограммы готовы читать. Объект возвращает readrdy как 1 TRUE) два цикла после итогового пикселя системы координат.

Типы данных: логический

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

Индикация, что значение гистограммы допустимо, возвратилась как 1 TRUE) или 0 ложь). Когда объект возвращает validout как 1 TRUE), значение интервала гистограммы, dataoutisvalid.

Типы данных: логический

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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 object. The axes object with title Input Image contains an object of type image.

Создайте Систему сериализатора 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 \times.

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 object. The axes object 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