我的博客中前面已经写了两种方法来实现车牌区域的提取了,大家可以参看下面这篇博文:
利用颜色和形态学两种方法进行车牌区域提取的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 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
//代码请搜索公众号"qxsf321",关注后获取作者QQ号然后添加好友获取!
//代码请搜索公众号"qxsf321",关注后获取作者QQ号然后添加好友获取!
//代码请搜索公众号"qxsf321",关注后获取作者QQ号然后添加好友获取!
运行结果如下图所示:
值得注意的是,在进行形态学闭操作时,一定要根据具体的图像来调整矩形窗的大小,比如下面这幅图,就需要把窗的大小由(1,20)调整到(1,30)才能检测出结果,相关运行截图如下: