Наш Jabber

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

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


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

Locations of visitors to this page

Партнеры сайта

Счетчики

  • Rambler's Top100

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

Материал из CompVision

Версия от 10:31, 29 ноября 2009; Smorodov (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

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?) количество найденных корней.

 
Активные темы форума
Форум Название поста Пользователь Просмотров Ответов
OpenCV Problem with W7 and VS2010 Smorodov 180 26
OpenCV Реальна ли автоматизация фильтров определения границ? FingerScan 36 2
Вопросы по нейросетям и ИИ Использование нейросетевой библиотеки FANN Nuzhny 816 5
OpenCV Как прикрутить OpenCV к билдеру? Smorodov 5559 51
OpenCV Работа с камерами Nuzhny 1622 53
OpenCV Ошибка при обработке большого видеофайла IKM 72 4
OpenCV Распознавание номерного знака, расп. текста. FingerScan 1897 24
OpenCV Поиск цветного фрагмента на полутоновом изображении FingerScan 253 17
OpenCV Находим скелет (супер :)) Smorodov 1040 5
OpenCV Как нарисовать CvBox2D FingerScan 240 6
 
Последние правки Wiki
Когда Кем Что Подробнее
14:13 07/09/2010 LoGin Зарегистрирован
14:35 03/09/2010 I`m Beginner Зарегистрирован
11:49 31/08/2010 FreeGOD Зарегистрирован
05:14 20/08/2010 Krob Зарегистрирован
19:45 16/08/2010 Chainik Зарегистрирован