Карта посещений

Счетчики

Реклама Google

 

Статистика

Материал из CompVision

Перейти к: навигация, поиск

Содержание

cvCountNonZero

Считает ненулевые элементы матрицы (изображения). Для IplImage поддерживается ROI И COI (область интереса и канал интереса)

LaTeX: \sum\limits_{I}{(arr(I)\ne 0)}

int cvCountNonZero(const CvArr* arr);

arr - входная матрица или изображение.

cvSum

Возвращает сумму элементов для каждого канала входной матрицы по отдельности. Если определен канал интереса (COI) то обрабатывается именно этот канал, а результат возвращается в первом элементе типа CvScalar.

LaTeX: \sum\limits_{I}{(arr{{(I)}_{C}})}

CvScalar cvSum(const CvArr* arr);

arr - входная матрица или изображение.

cvAvg

Возвращает среднее значение элементов для каждого канала входной матрицы по отдельности. Если определен канал интереса (COI) то обрабатывается именно этот канал, а результат возвращается в первом элементе типа CvScalar.

LaTeX: \begin{align}
</p>
<pre> & N=\sum\limits_{I}{(mask(I)\ne 0)} \\ 
& {{M}_{C}}=\frac{\sum\limits_{I,mask(I)\ne 0}{arr{{(I)}_{C}}}}{N} \\ 
</pre>
<p>\end{align}


CvScalar cvAvg(const CvArr* arr, const CvArr* mask=NULL);

arr - входная матрица или изображение.

mask – маска операции (необязательная) (операция проводится над элементами, которым соответствует ненулевое значение элемента маски)

cvAvgSdv

Возвращает среднее значение и среднеквадратическое отклонение для каждого канала входной матрицы по отдельности. Если определен канал интереса (COI) то обрабатывается именно этот канал, а результат возвращается в первом элементе типа CvScalar.

LaTeX: \begin{align}
</p>
<pre> & N=\sum\limits_{I}{(mask(I)\ne 0)} \\ 
& mea{{n}_{C}}=\frac{\sum\limits_{I,mask(I)\ne 0}{arr{{(I)}_{C}}}}{N} \\ 
& std\_de{{v}_{C}}=\sqrt{\frac{1}{N}\sum\limits_{I,mask(I)\ne 0}{{{(arr{{(I)}_{C}}-mea{{n}_{C}})}^{2}}}} \\ 
</pre>
<p>\end{align}


void cvAvgSdv(const CvArr* arr, CvScalar* mean, CvScalar* std_dev, const CvArr* mask=NULL);

arr - входная матрица или изображение.

mask – маска операции (необязательная) (операция проводится над элементами, которым соответствует ненулевое значение элемента маски)

mean – указатель на вектор средних значений, может принимать значение NULL если не задействовано.

std_dev – указатель на вектор значений среднеквадратических отклонений для каждого канала.

cvMinMaxLoc

Находит глобальный максисум матрицы или подматрицы. Есть поддержка области интереса (ROI).

void cvMinMaxLoc(const CvArr* arr, double* min_val, double* max_val, CvPoint* min_loc=NULL, CvPoint* max_loc=NULL, const CvArr* mask=NULL)

arr – исходная матрица, одноканальная или многоканальная с заданным каналом интереса.

min_val – указатель на результат (минимальное значение)

max_val – указатель на результат (максимальное значение)

min_loc – указатель на результат (координаты минимального значения)

max_loc – указатель на результат (координаты максимального значения)

mask – маска операции (необязательная) (операция проводится над элементами, которым соответствует ненулевое значение элемента маски)

В случае многомерных матриц (кол-во измерений больше двух), min_loc->x и max_loc->x будут содержать адреса ячеек экстремумов от начала данных (линейная адресация).

cvNorm

Находит абсолютную норму матрицы, абсолютную дифференциальную норму, или относительную дифференциальную норму.

double cvNorm(const CvArr* arr1, const CvArr* arr2=NULL, int norm_type=CV_L2, const CvArr* mask=NULL);

Параметры:

  • arr1 – первая исходная матрица
  • arr2 – вторая исходная матрица. Если она равна NULL, вычисляется абсолютная норма arr1 , иначе вычисляется абсолютная или относительная норма arr1-arr2.
  • normType – Тип нормы
  • mask – необязательная маска операции

Если arr2 - NULL, тогда считается так:

LaTeX: norm=\left\{ \begin{align}
</p>
<pre> & {{\left\| arr1 \right\|}_{C}}={{\max }_{I}}\left| arr1(I) \right|\text{ if }normType=CV\_C \\ 
& {{\left\| arr1 \right\|}_{L1}}=\sum\limits_{I}{\left| arr1(I) \right|\text{ }}\text{if }normType=CV\_L1 \\ 
& {{\left\| arr1 \right\|}_{L2}}=\sqrt{\sum\limits_{I}{arr1{{(I)}^{2}}\text{ }}}\text{if }normType=CV\_L2 \\ 
</pre>
<p>\end{align} \right.

Если arr2 не NULL, то так:


LaTeX: norm=\left\{ \begin{align}
</p>
<pre> & {{\left\| arr1-arr2 \right\|}_{C}}={{\max }_{I}}\left| arr1(I)-arr2(I) \right|\text{ if }normType=CV\_C \\ 
& {{\left\| arr1-arr2 \right\|}_{L1}}=\sum\limits_{I}{\left| arr1(I)-arr2(I) \right|\text{ }}\text{if }normType=CV\_L1 \\ 
& {{\left\| arr1-arr2 \right\|}_{L2}}=\sqrt{\sum\limits_{I}{{{(arr1(I)-arr2(I))}^{2}}\text{ }}}\text{if }normType=CV\_L2 \\ 
</pre>
<p>\end{align} \right.

или так:

LaTeX: norm=\left\{ \begin{align}
</p>
<pre> & \frac{{{\left\| arr1-arr2 \right\|}_{C}}}{{{\left\| arr2 \right\|}_{C}}}\text{ if }normType=CV\_RELATIVE\_C \\ 
& \frac{{{\left\| arr1-arr2 \right\|}_{L1}}}{{{\left\| arr2 \right\|}_{L1}}}\text{if }normType=CV\_RELATIVE\_L1 \\ 
& \frac{{{\left\| arr1-arr2 \right\|}_{L2}}}{{{\left\| arr2 \right\|}_{L2}}}\text{if }normType=CV\_RELATIVE\_L2 \\ 
</pre>
<p>\end{align} \right.

Многоканальная матрица обрабатывается как одноканальная.

Reduce

Преобразует матрицу в вектор по заданному правилу.

void cvReduce(const CvArr* src, CvArr* dst, int dim = -1, int op=CV_REDUCE_SUM)

Параметры:

  • src – входная матрица.
  • dst – результирующий вектор-столбец/вектор-строка.
  • dim – Индекс измерения матрицы к которому будет применено преобразование. 0 означает что из матрицы будет получен вектор-строка, 1 - будет получен вектор-столбец и -1 означает автоматический выбор измерения, на основе анализа формы результирующего вектора dst.
  • op –

Операция редукции может принимать следующие значения:

  • CV_REDUCE_SUM - выход - сумма строк/столбцов матрицы.
  • CV_REDUCE_AVG - выход - среднее значение строк/столбцов матрицы.
  • CV_REDUCE_MAX - выход - максимальные значения по столбцам/строкам матрицы.
  • CV_REDUCE_MIN - выход - минимальные значения по столбцам/строкам матрицы.

Функция cvReduce() производит преобразование матрицы в вектор по заданным правилам. Матрица представляется как набор (вектор) векторов-столбцов/строк, к которым и применяются заданные операции. Например, функция может быть использована для получения горизонтальной или вертикальной проекции растрового изображения. В случае CV_REDUCE_SUM и CV_REDUCE_AVG результат может иметь бОльшую битовую глубину чем входные параметры, для предотвращения потери точности. Многоканальные матрицы также поддерживаются в этих двух режимах (CV_REDUCE_SUM и CV_REDUCE_AVG).

 
Последние посты форума