实验用的仓库,用来瞎玩尝试提取蜂窝煤的位置
先利用蓝色的模块与后背板来提取ROI,再结合颜色与形态学处理分割出横杆,再用霍夫变换得到一堆线段,用KMeans分成两类,取平均得到两条直线的斜率与截距
- 由于背景干扰很多,但目标的蓝色特征很明显,所以采用粗提取ROI来减少干扰。然后放大ROI,便于处理。
- 由于有蓝色的后背板,识别模块本身很困难,所以改为识别两条横杆。采用形态学运算与图像相减分割出横杆。用霍夫变换提取直线。
- 霍夫变换提取的直线是比较多的,而且是线段,故先计算直线的k与b。
- 图中有两条杆,考虑到它们的b有显著差异,故按照b用KMeans把直线分成两类,再求平均最终得到横杆的斜率与截距
- 把两条直线的知识转回到原图中
- 通过把图像缩放到合适的大小有奇效,有助于减少形态学处理中核大小固定带来的影响。
- 背景光照影响一个好的颜色阈值的选取,可能要做图像重建
- 考虑在ROI过小时不执行横杆分离(误差太大,没有意义,靠近一点)
- 自适应的颜色阈值参数(难,考虑图像重建技术)
- 自适应的霍夫变换参数(考虑按比例配置参数,图像缩放可能解决了这个问题)
- 如何把知识还原到原图中
- 横杆提取会不会提取到上方干扰的横杆
- 横杆不是近似水平的情况下,形态学提取可能无效
- 数值安全(斜率为0)
- 应对异常情况(得不到直线)
- 运动模糊(可能会采用光学防抖)
- 鱼眼镜头(采用某些专用镜头校正即可)
- 调整角度的问题(如何从横杆中了解到角度问题)
- 仿真怎么做
目前最优的是trackbar5.cpp的方案,实现了基本思路。
12-22a/12-22w,在光照理想的情况下直接提取无背板的模块轮廓,表现非常好。 详见note12-22.md
12-17试图用前后面积差拒绝异常的提取,详见note12-17.md