首页 > 根据曲线上的采样点拟合直线

根据曲线上的采样点拟合直线

//@Func lineFit
//@para points:曲线上的所有采样点
//@para a,b,c: 直线ax+by+c=0的三个参数
void lineFit(vector<cv::Point2f> points, float &a, float &b, float &c)
{ int size = points.size();float x_mean = 0;float y_mean = 0;for (int i = 0; i < size; i++){ x_mean += points[i].x;y_mean += points[i].y;}x_mean /= size;y_mean /= size; //至此,计算出了 x y 的均值float Dxx = 0, Dxy = 0, Dyy = 0;for (int i = 0; i < size; i++){ Dxx += (points[i].x - x_mean) * (points[i].x - x_mean);Dxy += (points[i].x - x_mean) * (points[i].y - y_mean);Dyy += (points[i].y - y_mean) * (points[i].y - y_mean);}float lambda = ((Dxx + Dyy) - sqrt((Dxx - Dyy) * (Dxx - Dyy) + 4 * Dxy * Dxy)) / 2.0;float den = sqrt(Dxy * Dxy + (lambda - Dxx) * (lambda - Dxx));a = Dxy / den;b = (lambda - Dxx) / den;c = -a * x_mean - b * y_mean;
}

更多相关:

  • meanStdDev: 计算矩阵的均值和标准偏差。 C++: void meanStdDev(InputArray src,OutputArray mean, OutputArray stddev, InputArray mask=noArray()) Python: cv2.meanStdDev(src[,mean[, std...

  • union { float data[4]; struct { float x; float y; float z; }; };...

  • 在立方体贴图空间内发射光线(视线),计算球面光线(视线)会击中哪个面的哪个像素的像素值,最终生成Equirectangular全景图。 InitSceneTexture():先获取Cubemaps并将其绑定在GPU中 void InitSceneTexture() {char* path = "./Cubemaps";myEnvi...

  • 对于同一场景的2D全景图,如果想改变其视野中心位置,比如下图,初始情况下视野的中心位置是蓝框,如果想让红框的灯位于中心位置该怎么做呢? #include "opencv2/highgui/highgui.hpp" #include "opencv2/opencv.hpp" #include

  • 常量内存是NVIDIA提供的一个64KB大小的内存空间,它的处理方式和普通的全局内存和共享内存都不一样,是有cuda专门提供的。 线程束的概念:线程束是指一个包含32个线程的集合,在程序中的每一行,线程束中的每个线程都将在不同的数据上执行相同的指令。 因此,常量内存的作用是,能够将单次内存的读取操作广播到每个半线程束(即16个线程...

  •         1、初始化,设置背景色          void glClear(int mask)    清除缓存          实參含义:GL10.GL_COLOR_BUFFER_BIT 清除颜色缓存                        GL10.GL_DEPTH_BUFFER_BIT  清除深度缓存      ...