Математические функции
Материал из 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)):
Погрешность функции около 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 координаты векторов заданных в поллярной системе координат
:
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:
если power - целое, или
Если показатель степени не целое число то используются абсолютные значения входного массива. Однако, существует возможность получить правильные значения для отрицательных элементов массива, путем проведения дополнительных действий, в примере, приведенном ниже показано вычисление значений кубического корня для каждого элемента массива:
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) для каждого элемента массива:
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-х элементный вектор:
Если coeffs 3-х элементный вектор:
Функция возвращает (void?) количество найденных корней.
