【发布时间】:2013-02-13 12:00:09
【问题描述】:
因此,我试图找出所附照片等图像中条纹线的旋转角度。 唯一的假设是这些线是平行的,并且它们的方向大约或多或少约为 90 度[例如 5 度公差]。 我必须确保结果图像中的条纹线垂直 %100。图像的质量以及它们的直方图/灰度值不同。所以基于非自适应阈值的方法对于我的案例已经失败了[如果我不能使其自适应,我对基于阈值的方法不感兴趣]。此外,条纹线顶部有时会出现一些随机的黑色簇。
到目前为止我做了什么: 1)当然,HoughLines 是第一个选项,但我无法让它适用于我的所有图像,尽管遵循了这篇很棒的文章,但我取得了部分成功: http://felix.abecassis.me/2011/09/opencv-detect-skew-angle/。 我理解失败的主要原因是,我需要为不同的图像微调参数。 Canny/BW/Morphological边缘检测等参数(如果需要) | minLinelength/maxLineGap/等的参数。当然有办法破解它并让它工作,但是,对我来说,这是一个脆弱的解决方案!
2) 我现在正在做的是将图像划分为顶部切片和底部切片,然后找到每个切片的峰和谷。然后基本上使用图像的宽度和峰的平移来找到角度。我目前正在寻找顶部切片的哪个峰值属于底部切片的哪个峰值,因为由于带状线顶部存在黑色/白色簇,我的计算中会出现一些误报峰值。
示例:切片的峰值位置: 顶部切片 = { 1, 33,67,90,110} BottomSlice = { 3, 14, 35,63,90,104}
在提取峰值时,我实际上得到了相似的向量。可以看出,向量的长度可能会有所不同,知道如何获得这样的组:
{{1,3},{33,35},{67,63},{90,90},{110,104}}
我对改进这些算法或全新方法的任何想法持开放态度。如果需要,我可以上传更多图片。
【问题讨论】:
-
只是想知道,这是微米级光栅吗?
-
你是对的,是的。
标签: algorithm matlab opencv image-processing