识别地图上的地名-- 笔记一

不记得是几月份了,king总接了一个私活,就是要求从地图查询的那些网站上获取到地图下来,然后识别出地图中的地名。需求很简单的目标也很明确。king总貌似用了一个星期左右的时间就完成了。在此佩服一下。

在此前我已经对图像很有兴趣,但是一直没有机会练手,现在就king总上面的需求,我也来试试识别地图上的地名。

大概的思路如下:

把彩色的地图图像变换成灰度图像,对灰度图像进行二值化,去掉一些噪点,然后分割出单独的地名块,把地名块分割成单个中文字,得到这些中文字之后,利用BP神经网络进行训练以及后续的识别。关于神经网络的相关资料可以参考我的《人工神经网络(Artificial Neural Netwroks)笔记 》。

当然,因为常用的汉字就那么几千个,完全可以利用图像的相似度来识别图像中的文字,准确率也挺高的,但是面对未知的文字也就无能为力了。。。当然这里应用的神经网络面对完全未知的样本也是只能无能为力,但是单纯利用图像的相似度的话,速度太慢了,毕竟每一个待识别的文字都需要遍历一次样本集。神经网络一下子就出来了。(识别的时候,两层的BP神经网络的时间复杂度是多少呢?和什么有关呢?)

好了,下面是看看效果

原始图像
1.bmp

灰度图像
2.jpg


二值化图像
3.jpg


从二值化图像中可以看到,球场还有一些马路都没有了,看来这二值化的效果相当不错嘛。我采用的是阀值二值化算法。
对于剩下的一些干扰,我打算采用图像连通图的方式去掉,就是判断某一个像素点八邻接像素点的情况。判断图像是否连通。从而把一些大的干扰图像去掉。对于小的干扰点 腐蚀一下就完了。或者继续计算八邻接像素点也是可行的方式。然后就是切割文字,对于倾斜的文字暂时不考虑。具体如何操作会在接下来的文章介绍了。




By T.t.T!Ck.
From 夏天的广州
 

posted @ 2008-08-21 01:29  T.t.T!Ck.¢#  阅读(3239)  评论(18编辑  收藏  举报