完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以前没用过图像识别。算法大致分为4个小算法,图像去躁,图像二值化,字符分隔,字符识别,本次需要借助matlab去计算一下。 第1步把车牌号从图像上切割掉,需要进行边缘检测。如果边沿是长方形,并且大小和车牌差不多的就是了。边缘检测对噪声敏感,所以需要进行滤波处理。边缘检测的资料很多就不多介绍了。FPGA的可用模块也有很多的,网上也是大把的,我也是从网上移植一下用的。 1. 彩色图片转灰度图像 使用公式Gray = (R*30 + G*59 + B*11 + 50) / 100, 其实这种计算速度有点慢,不如使用移位,但是项目时间比较紧,就暂时先用这个了。 其中R,G, B,直接用摄像头采集数据的 5, 6, 5位即可,应该是RGB565格式 高字节的后5位用来表示R(RED)2. 第2步是图像去躁的算法实现。 摄像头采集的图像,没手机那么高的质量,所以有一些奇怪的噪声点,有可能耽搁掉图像中的重要的细节信息。所以在图像二值化前要对图像进行去噪处理。 大致看了一下,常用的去噪声算法是中值滤波算法,,原理是把数字图像或数字序列中一点的值用该点的一个领域中各点值的中值代换,利用该方法可以将周围像素灰度值变化较大的像素值改成与周围像素值相近的值,有利于消除突出的噪声点。 要一张照片中的的某个像素做中值处理必须将这个像素周围的所有的像素,包括正在被处理的像素排序,找出出中值,并将该中值赋值给这个像素点。 P(x,y) = median[x-i, y-i] x, y就是像素的坐标 设3 X 3二维中值滤波窗口内的像素数据是P1,P2,P3,P4,P5,P6,P7,P8,P9算法实现需要找到这9个数的最大值,最小值,中间值 (1)先找出每行的 最大值、中间值和最小值 第一行像素的最大值为Max_ Row1=max[Pl,P2,P3]中间值为Med_ Row1=med[P1,P2,P3]最小值为Min_ Row1=min[Pl,P2,P3] (2)找出3行中的最大值、中间值和最小值 最大值组:Max= [Max_ Row1, Max_ Row2, Max_ Row3] 中间值组:Med = [Med_ Row1, Med_ Row2, Med_ Row3] 最小值组:Min = [Min_ Row1, Min_ Row2, Min_ Row3] (3)对所得的三组数据再分别并行处理,从最大值组中取得最小值Max_ min、中间值组中取得中间值Med_med,最小值组中取得最大值Min_ max,获得这三个值需要经过7次比较。 (4)从剩下的三个值:Max_ min, Med_ med和Min_ max中找到中间值Final_ med即为最终所要得到的结果,这一步需要经过3次比较。 这样通过19次比较便得到了滤波窗口的中值结果。 3. 图像二值化,就是将图像中的像素点的灰度值设为0或255,这样处理后的图像只显示黑白两色。经过二值化处理的图像,图像数据量变小,图像的计算得到简化,为后期的图像分析和识别奠定基础。图像的二值化的过程就是像素值与阈值进行比较的过程因此图像二值化的关键在于阈值D的选择与处理。这一次本次阈值D选择固定值120。在matlab中图像二值化的实现有固定的函数im2bw,可以借用 下面是转的: 【matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像。所谓二值图像, 一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种颜色的组合。 在matlab命令行中键入doc im2b或help im2bw即可获得该函数的帮助信息。 阈值变换 比如数组 a = [120, 254, 0, 200, 99]; 设定一个阈值125, 并对a进行阈值变换, 那么a中凡是大于125的, 则变为255, 小于等于125的则变为0】 4. 字符分隔就是把所有的字符分隔出来,查了网上很多的资料,比较常用的是投影技术。基于投影特征的字符分割算法,把二值化图像像素在水平和垂直方向进行投影,根据图像像素值的大小进行字符分割: (1)水平投影:纵坐标为图像的行数通过对每行像素值的统计得出图像中统计量最小的两个波谷。从而确定图像的上下边界。 (2)垂直投影:横坐标为图像的列数通过对每列像素值的统计得出每个字符 统计量最小的两个波谷。 其实因为在垂直投影的时候,2个数之间是没有数据的,所以这个地方就是分隔标志线了。从而确定字符的左右边界完成对字符的分割。 下面2张图片借用别人。下图就是1234567890的X轴投影数据,第2张图是Y轴投影的。通过2个维度基本可以检测出来数字。
median.zip
(2.41 KB, 下载次数: 10
)
附件是中值滤波的V文件 1. 先去把数据全部分开(根据垂直投影的分隔标志,上面有提到) 2. 然后把数据和上面的图标对比,先对比X轴,再对比Y轴,即可,这个是大致思路,明天给出算法,今天有点晚了。 (未完待续。。。。) |
|
相关推荐
|
|
1586 浏览 1 评论
1351 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1563 浏览 0 评论
930 浏览 0 评论
2361 浏览 0 评论
1471 浏览 37 评论
5681 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 20:05 , Processed in 1.023270 second(s), Total 72, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号