条形码完整度检测算法开发笔记01(08.31)
来源:互联网 发布:qq密码账号数据库泄露 编辑:程序博客网 时间:2024/06/05 03:22
博客已转移至个人网站(http://www.hust.site)
条形码完整度检测算法开发笔记01(08.31)
大体思路如下:
先用自适阈值化图像(要求光照基本均匀,无高亮反射斑,背景变化不剧烈),然后提取联通分量,用滤波法提取出一些特征点(或者焦点检测算子提取),这些特征点基本属于条码矩形上下交点,然后用霍夫变换的方法检测直线(角度不好时需要两条,如果是曲面上的也可以通过霍夫变换检测该曲线),这条直线垂直于条形码条纹,根据这条直线读出条形码内容,然后在每个Y上都读取一次,能读出一致内容就OK,否则就有缺陷,然后找出缺陷位置
这里重新定义了缺损、不完整等概念,完整并非完全一样,而是能识别及完整(事实上由于环境光、背景噪声、拍摄重复性的关系,即使是同一个条码也常常得不出一样的二值图像,所以按照工业需求能识别即可)
以后在此基础上深入研究环境光照和复杂背景
当前进度:
1.首先读入图像
2.然后阈值化
3.提取联通分量,得到条形码所在区域
4.画几条直线,扫描这几条直线,完成条形码解码
在如下文所示的代码中获取读取条码信息,暂时未进行解码,参见下文
5.再通过滤波法,检测条状的角点
6.通过霍夫变换找到垂直于条形码黑条的直线
7.由6所得直线的方向,通过逐行扫描的方法,对每一行进行解码
8.对比7与4的解码结果,判别完整性
9.对缺损进行分析,复原条形码
当前进度:
%Read data from diskf = imread('barcode.jpg');figure('Name','Source Image');imshow(f);g = im2bw(f);figure('Name','BW Image');imshow(g);%Get aimed area[L,num] = bwlabel(g,4);maxarea = 0;maxindex =0;for i = 1:num temp = length( find(L==i) ); if(temp > maxarea) maxarea = temp; maxindex = i; endendimg = (L == maxindex);figure('Name','Aimed Image');imshow(img);%Read the bar code ar = fix( size(img,1)/2 );j = 0;for i = 1:( size(img,2) - 1 ) if( img(ar,i) ~= img(ar,i+1) ) j = j+1; chg(j) = i; endendfor i = 1:(j-1) gap(i) = chg(i+1) - chg(i);endclear f g temp ar L chg i j maxarea maxindex num
完成条码初步读取,下一步进行条码的解码
0 0
- 条形码完整度检测算法开发笔记01(08.31)
- 条形码检测
- OpenCV_条形码检测
- opencv开发笔记(十五):特征检测十大方法之SURF算法
- 基于OpenCV的条形码区域检测(一)
- 基于OpenCV的条形码区域检测(二)
- 基于OpenCV的条形码区域检测(三)
- 基于OpenCV的条形码区域检测(四)
- 基于OpenCV的条形码区域检测(五)
- 条形码的检测与识别
- 二维条形码的检测,识别
- 目标检测经典算法笔记
- openCV学习笔记(2):Canny边缘检测算法应用
- 视觉算法笔记 - 边缘检测算法
- 快速开发条形码
- 玩转Android Camera开发(五):基于Google自带算法实时检测人脸并绘制人脸框(网络首发,附完整demo)
- 玩转Android Camera开发(五):基于Google自带算法实时检测人脸并绘制人脸框(网络首发,附完整demo)
- Android开发笔记(六十)网络的检测与连接
- 程序员生存定律-六个程序员的故事(1)
- html小知识点
- Android 发布应用到市场
- 语音识别基本原理介绍之gmm-hmm续
- 谋哥:App都应该做减法!
- 条形码完整度检测算法开发笔记01(08.31)
- 只要不是终点,就请微笑向前——学年总结
- 谋哥:玩移动互联网首先就是要活下去
- ubuntu14.04安装chromium不能播放电影
- C++设计模式之外观模式(二)
- Mysql常用函数
- poj1002
- java学习笔记之IO流
- shell笔记一:认识shell