做旅游项目用哪家网站好,wordpress 链接新窗口打开,网站建立计划书,网站开发需要的技术人才背景#xff1a;
项目中需要实现数据的高斯拟合#xff0c;进而提取数据中标准差#xff0c;手头只有opencv库#xff0c;经过资料查找验证#xff0c;总结该方法。
基础知识#xff1a;
1、opencv中solve可以实现对矩阵参数的求解#xff1b; 2、线的拟合就是对多项…背景
项目中需要实现数据的高斯拟合进而提取数据中标准差手头只有opencv库经过资料查找验证总结该方法。
基础知识
1、opencv中solve可以实现对矩阵参数的求解 2、线的拟合就是对多项式参数求解的过程多项式可表示为矩阵形式 3、高斯公式中的指数幂可以通过取对数的方式转变成多项式的形式 求解思路 高斯公式-多项式公式-矩阵参数-调用solve求解
实现过程及代码
1、确定所选的高斯公式形式
G(x)a*exp(-((x-b)/c)^2);
2、对于给定的输入x1 ~ xn,有对输出y1 ~ yn。可以形成如下等式 对等式左右两边取对数并进行变换可形成如下形式 这里就形成了AX^2BXCY的形式其中 用A,B,C替换后后原等式可写作 此时我们只需要计算出A,B,C的值再通过ABC与abc的关系即可得到abc的值。(请读者自行推导abc的公式或见代码部分)
得到如上的多项式的形式后直接构造参数矩阵调用cv::solve(X,Y,A‘)接口即可得到参数矩阵A’其中即含有A,BC的值。
上代码
基础定义
typedef struct StructMultinomialParamt
{double dB0;//多项式拟合的参数,数字表示幂次double dB1;double dB2;
}S_MULTNMNL_PARAMT;
typedef struct StructGaussParamT
{double dA;//指定的高斯参数double dB;//中心点double dC;//标准差
}S_GAUS_PARAMT;
void Gauss(S_GAUS_PARAMT sGsParamm, cv::Mat mX, cv::Mat mY)
{cv::Mat mRslt Mat::zeros(mX.size(), mX.type());double dx 0;for (double i 0.; i mX.cols; i){for (double j 0.; j mX.rows; j){dx mX.atdouble(j, i);mRslt.atdouble(j, i) sGsParamm.dA * exp(-(pow((dx - sGsParamm.dB) / sGsParamm.dC, 2)));}}mY mRslt;return;
}高斯参数求解函数
void GaussFitT(cv::Mat mX, cv::Mat mY, S_GAUS_PARAMT* psGsParamm)
{//step1 构造参数矩阵mx与mycv::Mat X Mat::zeros(mX.rows, 3, CV_64FC1);for (size_t i 0; i mX.rows; i){for (size_t J 0; J 3; J){X.atdouble(i, J) pow(mX.atdouble(i, 0), 2 - J);}}cv::log(mY, mY);//对结果取对数//step2 多项式拟合cv::Mat A;//参数矩阵cv::solve(X, mY, A, cv::DECOMP_SVD);S_MULTNMNL_PARAMT sBparam;sBparam.dB2 A.atdouble(0);sBparam.dB1 A.atdouble(1);sBparam.dB0 A.atdouble(2);//step3 高斯参数计算ABC-》abcpsGsParamm-dA exp(sBparam.dB0 - pow(sBparam.dB1, 2) / (4 * sBparam.dB2));psGsParamm-dB -sBparam.dB1 / (2 * sBparam.dB2);psGsParamm-dC sqrt(-1 / sBparam.dB2);return;
}# 测试代码
double dX[50];//输入数据X
double dY[50];//输入数据Y
std::vectorcv::Point pointsOri;for (int i 0; i 50; i)
{dX[i] double(i);dY[i] -0.5 * pow((dX[i] - 25), 2) 320 i;pointsOri.push_back(cv::Point(dX[i], dY[i]));
}
//转换成求解函数输入需要的数据格式
cv::Mat mGsInputX Mat::zeros(50, 1, CV_64FC1);
cv::Mat mGsInputY Mat::zeros(50, 1, CV_64FC1);
for (size_t i 0; i 50; i)
{mGsInputX.atdouble(i) dX[i];mGsInputY.atdouble(i) dY[i];
}S_GAUS_PARAMT sGsParamm;//求解结果
GaussFitT(mGsInputX, mGsInputY, sGsParamm);//结果对比
Mat mGsOutputY;
Gauss(sGsParamm, mGsInputX, mGsOutputY);
std::vectorcv::Point pointsNew;//拟合结果
for (int i 0; i 50; i)
{pointsNew.push_back(cv::Point(dX[i], mGsOutputY.atdouble(i)));
}
cv::Mat img(450, 60, CV_8UC3, cv::Scalar(0, 0, 0));
cv::polylines(img, std::vectorstd::vectorcv::Point{pointsOri}, false, cv::Scalar(0, 0, 255), 2);
cv::polylines(img, std::vectorstd::vectorcv::Point{pointsNew}, false, cv::Scalar(255, 255, 255), 0.5);// 显示图像
cv::imshow(Line Chart, img);
cv::waitKey(0);运行输出 红色的为原始数据分布白色的为拟合计算结果。 而我需要的标准差则为sGsParamm.dC。
参考:https://blog.csdn.net/guangjie2333/article/details/115629152 https://blog.csdn.net/KYJL888/article/details/103073956 https://blog.csdn.net/qq_35097289/article/details/103910984
后记
调用solve的接口求解时OPENCV提供了以下六种方式以对应不同的情况。对于多项式的求解也可以采用最小二乘法的逼近不再调用solve方法这块后面再填坑吧。
cv::DECOMP_LU 高斯消元法LU分解 cv::DECOMP_SVD 奇异值分解SVD cv::DECOMP_CHOLESKY 对于对称正定矩阵 cv::DECOMP_EIG 特征值分解只用于对称矩阵 cv::DECOMP_QR QR因式分解 cv::DECOMP_NORMAL 可选附加标志表示要求解标准方程 文章转载自: http://www.morning.mmsf.cn.gov.cn.mmsf.cn http://www.morning.lmrjn.cn.gov.cn.lmrjn.cn http://www.morning.xjnw.cn.gov.cn.xjnw.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn http://www.morning.bgqr.cn.gov.cn.bgqr.cn http://www.morning.pyncm.cn.gov.cn.pyncm.cn http://www.morning.tjcgl.cn.gov.cn.tjcgl.cn http://www.morning.qbtj.cn.gov.cn.qbtj.cn http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn http://www.morning.rzsxb.cn.gov.cn.rzsxb.cn http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn http://www.morning.pprxs.cn.gov.cn.pprxs.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.wnkbf.cn.gov.cn.wnkbf.cn http://www.morning.qglqb.cn.gov.cn.qglqb.cn http://www.morning.bwzzt.cn.gov.cn.bwzzt.cn http://www.morning.gqjzp.cn.gov.cn.gqjzp.cn http://www.morning.wgrm.cn.gov.cn.wgrm.cn http://www.morning.ljcf.cn.gov.cn.ljcf.cn http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn http://www.morning.pxlql.cn.gov.cn.pxlql.cn http://www.morning.sloxdub.cn.gov.cn.sloxdub.cn http://www.morning.tgczj.cn.gov.cn.tgczj.cn http://www.morning.xjnw.cn.gov.cn.xjnw.cn http://www.morning.yhgbd.cn.gov.cn.yhgbd.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.gyjld.cn.gov.cn.gyjld.cn http://www.morning.rjynd.cn.gov.cn.rjynd.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.rbkl.cn.gov.cn.rbkl.cn http://www.morning.krhkb.cn.gov.cn.krhkb.cn http://www.morning.mjytr.cn.gov.cn.mjytr.cn http://www.morning.nlysd.cn.gov.cn.nlysd.cn http://www.morning.dkmzr.cn.gov.cn.dkmzr.cn http://www.morning.jsmyw.cn.gov.cn.jsmyw.cn http://www.morning.kybpj.cn.gov.cn.kybpj.cn http://www.morning.rczrq.cn.gov.cn.rczrq.cn http://www.morning.syfty.cn.gov.cn.syfty.cn http://www.morning.wcgcm.cn.gov.cn.wcgcm.cn http://www.morning.xwbwm.cn.gov.cn.xwbwm.cn http://www.morning.rgqnt.cn.gov.cn.rgqnt.cn http://www.morning.fdhwh.cn.gov.cn.fdhwh.cn http://www.morning.kzhxy.cn.gov.cn.kzhxy.cn http://www.morning.zymgs.cn.gov.cn.zymgs.cn http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn http://www.morning.cttti.com.gov.cn.cttti.com http://www.morning.msgcj.cn.gov.cn.msgcj.cn http://www.morning.wqcz.cn.gov.cn.wqcz.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.kqnwy.cn.gov.cn.kqnwy.cn http://www.morning.lrdzb.cn.gov.cn.lrdzb.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.hwhnx.cn.gov.cn.hwhnx.cn http://www.morning.qsswb.cn.gov.cn.qsswb.cn http://www.morning.mhfbf.cn.gov.cn.mhfbf.cn http://www.morning.khpx.cn.gov.cn.khpx.cn http://www.morning.knswz.cn.gov.cn.knswz.cn http://www.morning.hmktd.cn.gov.cn.hmktd.cn http://www.morning.rbmnq.cn.gov.cn.rbmnq.cn http://www.morning.gqflj.cn.gov.cn.gqflj.cn http://www.morning.pqhgn.cn.gov.cn.pqhgn.cn http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.kqqk.cn.gov.cn.kqqk.cn http://www.morning.drwpn.cn.gov.cn.drwpn.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.rqdx.cn.gov.cn.rqdx.cn http://www.morning.nmqdk.cn.gov.cn.nmqdk.cn http://www.morning.kfmlf.cn.gov.cn.kfmlf.cn http://www.morning.tkgxg.cn.gov.cn.tkgxg.cn http://www.morning.ujianji.com.gov.cn.ujianji.com http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn http://www.morning.srckl.cn.gov.cn.srckl.cn http://www.morning.zbmcz.cn.gov.cn.zbmcz.cn http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.phwmj.cn.gov.cn.phwmj.cn http://www.morning.qhtlq.cn.gov.cn.qhtlq.cn http://www.morning.nrxsl.cn.gov.cn.nrxsl.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn