opencv最小二乘法算法及相关函数
背景
对opencv的学习,对最小二乘法拟合圆算法的学习记录
相关函数
在实现最小二乘法的时候,用到的一些opencv的函数,做个记录
1.cv::copyMakeBorder
卷积操作时,图像边界可以填充或者不填充,如果我们需要填充呢?opencv提供了copyMakeBorder函数,可以实现边界填充功能。
头文件声明
1 | #include <opencv2/core.hpp> |
函数原型
1 | CV_EXPORTS_W void copyMakeBorder(InputArray src, OutputArray dst, |
参数解析
1 | src:原图 |
2.cv::HoughCircles
霍夫变换找圆,需要注意的是,使用此函数可以很容易地检测出圆的圆心,但是它可能找不到合适的圆半径。
函数原型
1 | void HoughCircles(InputArray image,OutputArray circles, int method, double dp, double minDist, double param1=100,double param2=100, int minRadius=0, int maxRadius=0 ) |
参数解析
1 | image:输入图像,即源图像,需为8位的灰度单通道图像。 |
最小二乘法拟合圆的原理
最小二乘法(least squares analysis)是一种数学优化技术,它通过最小化误差的平方和找到一组数据的最佳函数匹配。最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小来寻找一组数据的最佳匹配函数的计算方法,最小二乘法通常用于曲线拟合 (least squares fitting) 。
最小二乘圆拟合方法是一种基于统计的检测方法,即便是图像中圆形目标受光照强度不均等因素的影响而产生边缘缺失,也不会影响圆心的定位和半径的检测,若边缘定位精确轮廓清晰,最小二乘法可实现亚像素级别的精确拟合定位。
下面是拟合圆曲线的公式推导过程
参考链接
https://zj-image-processing.readthedocs.io/zh_CN/latest/opencv/code/[copyMakeBorder]%E6%B7%BB%E5%8A%A0%E8%BE%B9%E7%95%8C/
https://blog.csdn.net/cqltbe131421/article/details/60870756
https://blog.csdn.net/Jacky_Ponder/article/details/70314919