Наш Jabber

Прямые адреса сервера:
  • jabber-l4.1gb.ru
  • jabber1-allports.1gb.ru

Формат адреса:
ваш_ник@compvision.ru


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

Locations of visitors to this page

Счетчики

  • Rambler's Top100

Математические функции

Материал из CompVision

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

Содержание

cvRound

Функция возвращает ближайшее к значению аргумента целое.

int cvRound(double value );

На некоторых архитектурах функция работает намного быстрее чем стандартные операции приведения в C. Если абсолютная величина параметра больше чем 2E31, результат не определен. Специальные значения infty и NAN не обрабатываются.

cvFloor

Функция возвращает максимальное целое значение не большее чем аргумент (отбрасывает дробную часть).

int cvFloor(double value );

На некоторых архитектурах функция работает намного быстрее чем стандартные операции приведения в C. Если абсолютная величина параметра больше чем 2E31, результат не определен. Специальные значения infty и NAN не обрабатываются.

cvCeil

Функция возвращает минимальное целое значение не меньшее чем аргумент (отбрасывает дробную часть и прибавляет 1).

int cvFloor(double value );

На некоторых архитектурах функция работает намного быстрее чем стандартные операции приведения в C. Если абсолютная величина параметра больше чем 2E31, результат не определен. Специальные значения infty и NAN не обрабатываются.

cvSqrt

Квадратный корень.

float cvSqrt(float value);

Если аргумент отрицательный - результат не определен.

cvInvSqrt

Возвращает значение равное 1/sqrt(value). Если аргумент меньше или равен 0 - результат не определен.Специальные значения infty и NAN не обрабатываются. Работает быстрее чем непосредственное вычисление 1/sqrt(value).

float cvInvSqrt(float value)


cvCbrt

Функция cvCbrt() возвращает кубический корень аргумента, обычно выполняется быстрее чем pow(value,1./3). Корректно обрабатывает отрицательные значения аргумента. Специальные значения infty и NAN не обрабатываются.

float cvCbrt(float value)

Параметр:

value – значение с плавающей точкой

cvFastArctan

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

float cvFastArctan(float y, float x);

Параметры:

  • x – x-координата двумерного вектора
  • y – y-координата двумерного вектора

Функция cvFastArctan() возвращает угол наклона входного вектора в диапазоне 0-360 градусов. Погрешность функции около 0.1 градуса.

cvIsNaN

Определяет является ли значение аргумента равным специальному значениюю NaN - не число (Not A Number).

int cvIsNaN(double value);

Параметр:

value – входное значение

Функция cvIsNaN() возвращает 1 если аргумент равен Not A Number (как определено в стандарте IEEE754), иначе возвращается 0.

cvIsInf

Определяет является ли значение аргумента равным специальному значениюю NaN - не число (Not A Number).

int cvIsInf(double value);

Параметр:

value – входное значение

Функция cvIsInf() возвращает 1 если аргумент равен +-бесконечность (Inf) (как определено в стандарте IEEE754), иначе возвращается 0.


cvCartToPolar

Возвращает магнитуды (длины) и/или углы наклона двумерных векторов.

void cvCartToPolar(const CvArr* x, const CvArr* y, CvArr* magnitude, CvArr* angle=NULL, int angle_in_degrees=0);

Параметры:

   * x – Массив x-координат
   * y – Массив y-координат
   * magnitude – Выходной массив куда будут записаны значения длин. Может быть равен NULL если не нужен.
   * angle – Выходной массив куда будут записаны значения углов. Может быть равен NULL если не нужен. Углы могут измеряться в градусах, или в радианах. Диапазон - полный оборот.
   * angle_in_degrees – флаг,при значении отличном от нуля, указывающий что углы будут возвращены в градусах. Значение по умолчанию 0.

Функция cvCartToPolar() вычисляет длину и угол для каждого вектора (x(I),y(I)):

LaTeX: \begin{align}
</p>
<pre> & magnitude(I)=\sqrt{x{{(I)}^{2}}+y{{(I)}^{2}}} \\ 
& angle=\arctan (y(I)/x(I)) \\ 
</pre>
<p>\end{align}

Погрешность функции около 0.1 градуса. Для точки (0,0), угол равен 0.

cvPolarToCart

Вычисляет прямоугольные координаты двумерных векторов, представленных в полярных координатах.

void cvPolarToCart(const CvArr* magnitude, const CvArr* angle, CvArr* x, CvArr* y, int angle_in_degrees=0);

Параметры:

  • magnitude – Массив длин. Если NULL, то все длины полагаются равными 1.
  • angle – массив углов, в радианах или в градусах, в зависимости от значения флага.
  • x – массив в который будут записаны x-координаты векторов. Может быть NULL, если не нужен.
  • y – массив в который будут записаны y-координаты векторов. Может быть NULL, если не нужен.
  • angle_in_degrees – флаг,при значении отличном от нуля, указывающий что углы будут возвращены в градусах. Значение по умолчанию 0.
   Функция cvPolarToCart() возвращает x и/или y координаты векторов заданных в поллярной системе координат 

LaTeX: magnitude(I)\cdot {{e}^{angle(I)\cdot j}},j=\sqrt{-1}:

x(I)=magnitude(I)*cos(angle(I)) y(I)=magnitude(I)*sin(angle(I))

cvPow

Возводит каждый элемент массива в степень.

void cvPow(const CvArr* src, CvArr* dst, double power);

Параметры:

  • src – исходный массив.
  • dst – массив, куда будет размещен результат, должен быть того же типа, что и исходный.
  • power – показатель степени

Функция cvPow() возводит каждый элемент массива в степень power:

LaTeX: dst(I)=src{{(I)}^{power}} если power - целое, или LaTeX: dst(I)=\left| src{{(I)}^{p}} \right|

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

CvSize size = cvGetSize(src);
CvMat* mask = cvCreateMat( size.height, size.width, CVg8UC1 );
cvCmpS( src, 0, mask, CVgCMPgLT ); /* Поиск отрицательных элементов */
cvPow( src, dst, 1./3 );
cvSubRS( dst, cvScalarAll(0), dst, mask ); /* изменение знака отрицательных элементов */
cvReleaseMat( &mask );

Для некоторых значений показателя степени, таких как целые значения, 0.5, и -0.5, используются более быстрые алгоритмы вычисления.

cvExp

Возводит e в степень src(I) для каждого элемента массива и размещает результат в dst/

void cvExp(const CvArr* src, CvArr* dst);

Параметры:

   * src – Исходный массив
   * dst – Результирующий массив, должен иметь тип элементов как у исходного или double.

Функция cvExp() вычисляет e в степени src(I) для каждого элемента массива:

LaTeX: dst[I]={{e}^{src(I)}}


cvLog

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

void cvLog(const CvArr* src, CvArr* dst);

Параметры:

   * src – Исходный массив
   * dst – Результирующий массив, должен иметь тип элементов как у исходного или double.

Если аргумент (значение элемента массива) не равно 0 то возвращает логарифм натуральный от модуля значения этой ячейки, иначе возвращается вольшое отрицательное число (-700 в данной реализации)

cvSolveCubic

Ищет действительные корни кубического уравнения.

void cvSolveCubic(const CvArr* coeffs, CvArr* roots);

Параметры:

   * coeffs – Коэффициенты уравнения - массив из 3 или 4 элементов.
   * roots – Выходной массив из 3-х элементов.

Если coeffs 4-х элементный вектор:

LaTeX: coeffs[0]\cdot {{x}^{3}}+coeffs[1]\cdot {{x}^{2}}+coeffs[2]\cdot x+coeffs[3]=0

Если coeffs 3-х элементный вектор:

LaTeX: {{x}^{3}}+coeffs[0]\cdot {{x}^{2}}+coeffs[1]\cdot x+coeffs[2]=0

Функция возвращает (void?) количество найденных корней.