您的位置:首页 > 编程语言

利用MSER算法提取图像区域(车牌区域)的OpenCV代码~

2016-07-28 11:08 537 查看
本文参考了《OpenCV图像处理编程实例》

我的博客中前面已经写了两种方法来实现车牌区域的提取了,大家可以参看下面这篇博文:

利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

MSER的全称是maximally stable extremal region,翻译过来为“最稳定极值区域”,extremal 意思的极值的意思。

下面说下这种方法的大致思路,如果要学习具体的原理,可以参考论文J.Matas. “Robust Wide Baseline Stereo from Maximally Stable Extremal Regions”,BMVC2002。

MSER提取过程

1.使用一系列灰度阈值对图像进行二值化处理

2.对于每个阈值得到的二值图像,得到相应的黑色区域与白色区域

3.在比较宽的灰度阈值范围内保持形状稳定的区域就是MSER,判断标准为dA/dt
David Nister等人于2008年在论文“Linera Time Maximally Stable Extermal Regions”对J.Matas提出的MSER算法进行了改进,使其在时间复杂度方面比原算法要小得多,OpenCV中提供的MSER模块算法就是利用该算法实现的。David Nister等人提出的算法思路如下(下面所列的每一步具体是怎么回事,请参看原论文):

①像素点排序→②极值区域生成→③稳定区域判定→④区域拟合→⑤区域归一化

下面分享利用MSER算法提取车牌区域的OpenCV代码~希望对大家有帮助,代码先使用MSER算法提取出图像的区域,然后对这些区域进行形态学闭操作,使其成较为完整的区域,再对这些区域求外接矩形,根据外接矩形的参数去判断是否是车牌区域。

代码如下(代码中用到的图像下载链接分别为 http://pan.baidu.com/s/1c2cBnFE  href="http://pan.baidu.com/s/1eRSxLbs" target=_blank>http://pan.baidu.com/s/1eRSxLbs):

注意:OpenCV版本我从3.0.0换到了2.4.13,原因是因为最近我在实现SIFT算法时,发现3.0.0中没有nonfree模块!而SIFT和SURT都是包含在nonfree模块中的!

//OpenCV版本opencv2.4.13
//交流QQ2487872782

2016-8-4注:很报歉,此代码目前不能公开发表在博客上,已经删除,希望大家能理解!


运行结果如下图所示:



值得注意的是,在进行形态学闭操作时,一定要根据具体的图像来调整矩形窗的大小,比如下面这幅图,就需要把窗的大小由(1,20)调整到(1,30)才能检测出结果,相关运行截图如下:







-------------------------------------------

欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: