声明:该方法由博主原创,希望能互相尊重劳动成果,转载请先征求博主的同意。
联系方式:tanyang1231@163.com
1、问题
最近解决了一个网格线检测问题:给定一系列网格点坐标,检测出对应的精确的网格线的方法。如下图:
2、想法
说到直线检测,大家可能第一反应就是采用霍夫变换(HT)。但HT在解决这个问题上却不是那么完美。
首先,HT的时间复杂度较高,比较费时。其次,因为图像中的每一个离散点经过HT后对应一条直线,然后经过投票环节,选出直线经过次数最多的某一点(或若干点),将该点变换回原图像即为所求直线(具体请参阅霍夫变换相关文档)。但在检测网格线问题中,格点是比较稀疏的,如果采用HT经过投票环节脱颖而出的直线并不具备明显的得票优势。以此图为例,限制条件严格会导致选不够理想的四条直线,放松限制条件又会导致选出的直线并非理想。
因此,霍夫变换并不适合解决此问题,主要原因在于网格点数量较少。其次是霍夫变换时间复杂度较高,不适用于实时性较高的场景。
3、思路
3.1尽可能得到接近于理想直线的四束直线
出于尝试的目的,我将所有网格点两两连线,得到了如下的结果: