opencv aruco参数分析
2017-01-10 20:19
316 查看
aruco.cpp
在287行有一个DetectInitialCandidatesParallel
在这里面有并行操作,用于对图像进行二值化,之后检测二值化后的图像中是否存在marker。
其循环次数直接和adaptiveThreshWinSizeMin adaptiveThreshWinSizeMax adaptiveThreshWinSizeStep相关。默认情况下分别是3 23 10,也就是会循环三次分别用3 13 23的二值化系数,其中数字越大,二值化以后的边缘越粗。实测认为23太大,循环为为3 6 9 即可。
至于adaptiveThreshConstant暂时觉得没有什么贡献,这个数值越高,二值化以后的图中孤立的噪声点越少,默认是7,可调为20。
adaptiveThreshWinSize参数没有用到,删了。
函数传入了Range就是adaptiveThreshWinSizeMin adaptiveThreshWinSizeMax 之间循环的次数。
minMarkerPerimeterRate是限制了图像中marker的最小边长尺寸,将这个修改为0.5会发现很多小的marker检测不出来。
程序通过findContours查找闭合边缘,然后先
根据min/maxMarkerPerimeterRate挑选出适合长度的区域
检查矩形以及凸型 使用approxPolyDP函数 输入一组点,输出该该点集的拟合图形,其中拟合偏差度由accuracyRate决定,其越小,拟合的越精确。默认是0.05,如果改为0.01则找出的区域在边角跳动很剧烈,因为阈值太严格,每张图像多多少少有噪声,这些噪声会直接影响结果。所以保持默认的0.05.
通过检查拟合出来的点集的size是否为4来筛选出矩形。通过isContourConvex来判断是否是凸集。
minCornerDistance没有用,取代的是minCornerDistanceRate。他表示approxPolyDP输出的四个点,两两之间计算图像上的距离,寻找最小的那个距离,之后这个距离必须大于findContours找到的闭合边缘的百分比,理所应当的是这个参数要小于0.25,默认是0.05,我改为0.15可以消除很多斜视的情况!
minDistanceToBorder是值找出来的图形距离图像边缘的阈值,默认是3,其实和adaptiveThreshWinSizeMin 有关,这里就用默认值3
至此_detectInitialCandidates函数任务完成。输出了一批候选marker
之后是 _identifyCandidates 要计算出marker的id号。
markerBorderBits在生成marker是就决定了,这里是1
之后是_filterTooCloseCandidates,将特别靠近的marker去除掉。minMarkerDistance参数没有用删除,minMarkerDistanceRate保持默认值。
doCornerRefinement是使用亚像素级角点检测,可以不使用。
至此检测所有的marker结束之后就是位姿估计。
在287行有一个DetectInitialCandidatesParallel
在这里面有并行操作,用于对图像进行二值化,之后检测二值化后的图像中是否存在marker。
其循环次数直接和adaptiveThreshWinSizeMin adaptiveThreshWinSizeMax adaptiveThreshWinSizeStep相关。默认情况下分别是3 23 10,也就是会循环三次分别用3 13 23的二值化系数,其中数字越大,二值化以后的边缘越粗。实测认为23太大,循环为为3 6 9 即可。
至于adaptiveThreshConstant暂时觉得没有什么贡献,这个数值越高,二值化以后的图中孤立的噪声点越少,默认是7,可调为20。
adaptiveThreshWinSize参数没有用到,删了。
函数传入了Range就是adaptiveThreshWinSizeMin adaptiveThreshWinSizeMax 之间循环的次数。
minMarkerPerimeterRate是限制了图像中marker的最小边长尺寸,将这个修改为0.5会发现很多小的marker检测不出来。
程序通过findContours查找闭合边缘,然后先
根据min/maxMarkerPerimeterRate挑选出适合长度的区域
检查矩形以及凸型 使用approxPolyDP函数 输入一组点,输出该该点集的拟合图形,其中拟合偏差度由accuracyRate决定,其越小,拟合的越精确。默认是0.05,如果改为0.01则找出的区域在边角跳动很剧烈,因为阈值太严格,每张图像多多少少有噪声,这些噪声会直接影响结果。所以保持默认的0.05.
通过检查拟合出来的点集的size是否为4来筛选出矩形。通过isContourConvex来判断是否是凸集。
minCornerDistance没有用,取代的是minCornerDistanceRate。他表示approxPolyDP输出的四个点,两两之间计算图像上的距离,寻找最小的那个距离,之后这个距离必须大于findContours找到的闭合边缘的百分比,理所应当的是这个参数要小于0.25,默认是0.05,我改为0.15可以消除很多斜视的情况!
minDistanceToBorder是值找出来的图形距离图像边缘的阈值,默认是3,其实和adaptiveThreshWinSizeMin 有关,这里就用默认值3
至此_detectInitialCandidates函数任务完成。输出了一批候选marker
之后是 _identifyCandidates 要计算出marker的id号。
markerBorderBits在生成marker是就决定了,这里是1
之后是_filterTooCloseCandidates,将特别靠近的marker去除掉。minMarkerDistance参数没有用删除,minMarkerDistanceRate保持默认值。
doCornerRefinement是使用亚像素级角点检测,可以不使用。
至此检测所有的marker结束之后就是位姿估计。
相关文章推荐
- opencv 训练【转载,关于Haar特征训练源代码参数的分析】
- Opencv2.4.9源码分析(相机参数评估)
- 分析以及测试PCTFREE和PCTUSED参数是如何协调工作的(下)
- 用 C# 分析 URL 中的参数信息
- 学习-ip dhcp 与参数分析
- i++和++i作为参数时的编译器处理方式分析~
- jsp/servlet取参数乱码问题分析
- 分析以及测试PCTFREE和PCTUSED参数是如何协调工作的
- SQL Server性能分析参数
- uClinux2.6(bf561)的NorFlash驱动实现分析(1): 基本参数
- 数据库的初始化参数文件分析
- 用 C# 分析 URL 中的参数信息
- SQL Server性能分析参数
- Loadrunner中参数设置详细分析
- jsp/servlet取参数乱码问题再分析
- SQL Server性能分析参数
- USB设备参数分析
- VSTS有Bug,分析数据库的维度和维度属性使用中文命名时候,作为报表参数会出错。虽然有解决办法但是头大。
- SQL Server性能分析参数
- 润乾报表分析1-通过url将参数传达给报表