[C++]opencv 裏計算多項式用的算式...
阿新 • • 發佈:2018-10-27
spa sin enc cout ble str 別了 沒有 esp
初看OpenCV寫多項式的算式有點晦澀難懂,形如(((z3y2 + z2)y2+z1)*y2)來表示一個二次到六次的偶次多項式,這樣的算式究竟快在哪裏?今天正好比較閑,就拿來跑一跑,供大家參考(但其實意義不大),代碼如下所示:
#include<iostream> #include<time.h> using namespace std; int main(){ clock_t t1,t2; t1 = clock(); double x = 1.2,y = 1.2, x2, y2, k1, k2; double z1 = 0.98345,z2 = 0.32355,z3 = 0.22234; for(int i = 0;i < 10000000;i++,x+=1.0){ x2 = x*x; k1 = 1 + (z1*x2 + z2*x2*x2 + z3*x2*x2*x2); //k1 = 1 + (((x2 + 1)*x2+1)*x2); } t2 = clock(); cout<<(int)(t2-t1)<<endl; t1 = clock(); for(int i = 0; i < 10000000;i++,y+=1.0){ y2 = y*y; //k2 = 1 + (y2 + y2*y2 + y2*y2*y2);//如果沒有系數,這個會更快 k2 = 1 + (((z3*y2 + z2)*y2+z1)*y2);// to compute polynomial } t2 = clock(); //cout<<(int)t2<<endl; cout<<(int)(t2-t1)<<endl; }
結果分別如下所示,單位是 clock
265
234
並且,如果沒有系數,會比正常計算還要慢。而且這以經是一千萬級別了,一半圖像大小基本也是這個級數的,才快三十個時鐘,基本上要幾千張圖才有微小的加速感知...好吧,確實是快了,佩服佩服。
[C++]opencv 裏計算多項式用的算式...