halcon车片识别和二维码识别大作业
更新时间:2024-05-16 06:03:01 阅读量: 综合文库 文档下载
数字图像处理
学 院:信息工程学院 专 业:软件工程 姓 名:谢磊金 学 号:2014124089 指导教师:丁爱玲
2014年12月3日
目录
前言 ........................................................................................................................................... 3
第一部分 基于halcon与VS2010的焊点图像处理实验 .................................................. 4 1.1实验概括 ......................................................................................................................... 4 1.2 halcon的实现过程(附代码附图介绍): ................................................................. 4 1.3 halcon与VS2010的结合 ............................................................................................. 13 附源代码(halcon代码请看上文,VS端代码太多请参考源程序): ........................ 15 第二部分 基于VC++的路面裂缝检测实验 .......................................... 错误!未定义书签。 1 总体方案设计 ................................................................................. 错误!未定义书签。 2 裂缝图像的预处理 ......................................................................... 错误!未定义书签。 3 算法总体测试结果与分析 ............................................................. 错误!未定义书签。 4 路面破损识别系统软件的使用 ..................................................... 错误!未定义书签。 第三部分 基于MATLAB的路面裂缝检测 ......................................... 错误!未定义书签。 1解题思路: ......................................................................................... 错误!未定义书签。 2算法设计: ......................................................................................... 错误!未定义书签。 3实验结果及分析: ............................................................................. 错误!未定义书签。 3.1 路面裂缝图像滤波技术 .............................................................. 错误!未定义书签。 3.1.1 均值滤波法 ............................................................................... 错误!未定义书签。 3.1.2中值滤波法 ................................................................................ 错误!未定义书签。 3.1.3 数学形态学滤波技术 ............................................................... 错误!未定义书签。 腐蚀原理 ............................................................................................. 错误!未定义书签。 3.2路面裂缝图像增强 ....................................................................... 错误!未定义书签。 3.2.1同态滤波路面裂缝图像增强 .................................................... 错误!未定义书签。 3.2.2小波变换路面裂缝图像增强 .................................................... 错误!未定义书签。 连续小波变换 ..................................................................................... 错误!未定义书签。 离散小波变换 ..................................................................................... 错误!未定义书签。 3.3路面裂缝图像分割 ....................................................................... 错误!未定义书签。 3.3.1 .迭代法阈值分割 ....................................................................... 错误!未定义书签。 3.3.2 最大类间方差(Otsu)法阈值分割 ....................................... 错误!未定义书签。 总结: ..................................................................................................... 错误!未定义书签。
前言
在本学期的数字图像处理这门课程的学习中我学到了很多图像处理方面的知识。懂得了图像处理领域的相关算法及研究。
期末之际,为了将学到的知识应用与实践。我分别使用了visual studio 2010、VC++6.0以及MATLAB软件分别进行了数字图像处理实验,巩固了所学知识,收获颇多。
本次实验主要分为三部分:
第一部分,在visual studio 2010 和halcon环境下编程,主要功能:车牌识别和二维码检测
第二部分,使用VC++6.0进行了程序开发进行了路面裂缝的检测实验,并开发了相关裂缝检测软件,得到了很好的实验效果。
第三部分,也是本实验的主要部分,综合分析了图像处理的经典算法,并使用多种算法基于MATLAB软件进行了路面裂缝的检测实验,取得了理想的实验效果,加深了我对数字图像处理理论的理解。
感谢丁爱玲老师的悉心指导,帮助我完成了数字图像处理的学习,为我以后的研究生生涯打下了基础。
第一部分 基于halcon与VS2010的图像处理实验
1.1实验概括
本部分在MVTec HALCON 10.0 环境下采用halcon语言编程对图像进行处理获取想要的数据,并结合VS2010实现更加的效果。主要功能:车牌识别和二维码识别。
1.2 halcon的实现过程(附代码附图介绍):
接下来就halcon代码对图像的处理部分作介绍。 1.2.1 车牌识别:
dev_update_window ('off')
dev_open_window (0, 0,600, 512, 'black', WindowID) set_display_font (WindowID, 14, 'mono', 'true', 'false')
read_image (Image, 'E:/Personal/Desktop/焊点检查1/图片/6.jpg') *读图片
get_image_size (Image, Width, Height) *获得图片尺寸
dev_close_window () *关闭激活的图形窗口
dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle) *打开一个新的图形窗口,它可以被用来显示图像
set_display_font (WindowHandle, 20, 'mono', 'true', 'false') *置显示字体
dev_display (Image)
*显示在当前图形窗口中的图像对象 decompose3 (Image, Red, Green, Blue)
*一个三通道图像转换成三幅图像(红、绿、蓝)
trans_from_rgb (Red, Green, Blue, ImageResult1, ImageResult2, ImageResult3, 'hsv') *从RGB颜色空间的任意颜色空间改造图像
threshold (ImageResult2, Region, 100, 255)
*使用全局阈值分割图像
remove_noise_region (Region, OutputRegion, 'n_48') *从区域去除噪声
connection (OutputRegion, ConnectedRegions) *计算一个地区的连接组件
closing_rectangle1 (ConnectedRegions, RegionClosing, 10, 10) *关闭一个地区,一个长方形的结构元素
select_shape (RegionClosing, SelectedRegions, 'area', 'and', 20000, 999999) *选择区域的形状特征与援助 dev_clear_window()
*清除激活的图形窗口的内容
dev_display (SelectedRegions)
*显示在当前图形窗口中的图像对象
reduce_domain (ImageResult2, SelectedRegions, ImageReduced) *减少域的图像 dev_clear_window()
*清除激活的图形窗口的内容 dev_display (ImageReduced)
*显示在当前图形窗口中的图像对象
closing_rectangle1 (SelectedRegions, RegionClosing1, 500, 500) *关闭一个地区,一个长方形的结构元素 dev_clear_window()
*清除激活的图形窗口的内容 dev_display (RegionClosing1)
*显示在当前图形窗口中的图像对象 dev_clear_window ()
*清除激活的图形窗口的内容 dev_display (Image)
*显示在当前图形窗口中的图像对象 dev_set_color ('green')
*设置一个或多个的输出颜色 dev_set_line_width (3)
*定义输出区域轮廓线的宽度 dev_set_shape ('rectangle1') * 定义该地区输出的形状 dev_set_draw ('margin')
*定义区域的填充模式
dev_display (RegionClosing1)
*显示在当前图形窗口中的图像对象
reduce_domain (Image, RegionClosing1, ImageReduced1) *减少域的图像 dev_clear_window()
*清除激活的图形窗口的内容 dev_display (ImageReduced1)
*显示在当前图形窗口中的图像对象
get_image_size (ImageReduced1, Width1, Height1) *返回的图像的大小 dev_set_colored (12) *多输出的颜色 dev_set_draw ('fill') *定义区域的填充模式 dev_set_shape ('original') *定义该地区输出的形状
segment_characters (RegionClosing1, ImageReduced1, ImageForeground, RegionForeground, 'local_auto_shape', 'false', 'false', 'medium', Width1/9, Height1*0.8, 0, 10, UsedThreshold) *在一个区域的图像中分类字符
fill_up_shape (RegionForeground, RegionFillUp, 'area', 1, 800) *在给定的形状特征的区域,填充孔
symm_difference (RegionClosing1, RegionFillUp, RegionDifference) *计算两个区域的对称差 //dev_display (Image)
dev_display (RegionDifference)
*显示在当前图形窗口中的图像对象
//select_characters (RegionDifference, RegionCharacters, 'false', 'medium', Width1/9, Height1*0.8, 'false', 'false', 'none', 'false', 'medium', 'false', 0, 'completion') closing_rectangle1 (RegionDifference, RegionClosing2, 3, 3) *关闭一个地区,一个长方形的结构元素
connection (RegionClosing2, ConnectedRegions1) *计算一个地区的连接组件
select_shape (ConnectedRegions1, SelectedRegions2, 'area', 'and', 2000, 99999) *选择区域的形状特征与援助
sort_region (SelectedRegions2, SortedRegions, 'first_point', 'true', 'row') *分拣区域的相对位置
read_ocr_class_mlp OCRHandle)
('C:/Program
Files/MVTec/HALCON-10.0/ocr/Industrial_0-9A-Z.omc',
*从一个文件中读取OCR分类
do_ocr_multi_class_mlp (SelectedRegions2, ImageResult2, OCRHandle, Class, Confidence) *在一个分类器中分类多种字符
area_center (SortedRegions, Area, Row, Column) *计算的面积和的输入区域的中心
set_display_font (WindowHandle, 27, 'mono', 'true', 'false')
*设置字体独立的OS,这个程序设置文字的字体在当前窗口的指定属性的大小,加粗,倾斜的字体
dev_clear_window() *关闭激活的图形窗口 dev_display (Image)
*显示在当前图形窗口中的图像对象 dev_display (SelectedRegions2)
*显示在当前图形窗口中的图像对象
for i := 0 to 5 by 1
*计次循环语句,0-5,6次循环,步长为1
select_obj (SortedRegions, ObjectSelected, 1) set_tposition (WindowID, Row[i]+100, Column[i])
/ disp_message (3600, Class[i], 'image', Row[i]+80, Column[i]-12, 'black', 'false') write_string (WindowID, Class[i])
//disp_message (WindowHandle, Class[i], 'image', Row[i]+400, Column[i]-3, 'green', 'false') *这个程序写入一个文本消息 endfor
*ENDFOR是一个for循环的最后一条语句。 clear_ocr_class_mlp (OCRHandle) *清除的OCR分级
dev_update_window ('on')
*标志性的输出对象 - 开关自动输出到图形窗口中程序的执行过程中打开或关闭。
1.2.2 二维码识别:
dev_open_window (0, 0,600, 512, 'black', WindowID) set_display_font (WindowID, 14, 'mono', 'true', 'false')
create_data_code_2d_model('Data Matrix ECC 200', 'default_parameters', 'maximum_recognition', DataCodeHandleECC200)
create_data_code_2d_model('PDF417', 'default_parameters', 'maximum_recognition', DataCodeHandlePDF417)
create_data_code_2d_model('QR Code', 'default_parameters', 'maximum_recognition', DataCodeHandleQR)
*二维码的创建开头的算子,clear为结束清除的算子 list_files ('.', ['files','follow_links'], ImageFiles) tuple_regexp_select (ImageFiles, ['\\\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima)$','ignore_case'], ImageFiles) for Index := 0 to |ImageFiles| - 1 by 1 read_image (Image, ImageFiles[Index]) *遍历文件读取所要是别的图像
//read_image (Image, 'E:/Personal/Desktop/二维码/二维码/ecc200_cpu_003.png')
find_data_code_2d(Image, SymbolXLDs, DataCodeHandleECC200, [], [], ResultHandles, DecodedDataStrings)
* 检测和读取二维代码符号,也支持读取二维数据模型的序列
count_obj(SymbolXLDs, Number) if (Number>0)
for i:=1 to 1 by 1
tuple_select ('发现ECC200码:'+DecodedDataStrings, i-1, Selected) set_tposition (WindowID, 100+i, 100+i) write_string (WindowID, Selected) endfor
*输出ECC200码二维码的信息 stop() else
find_data_code_2d(Image, SymbolXLDs, DataCodeHandlePDF417, ResultHandles1, DecodedDataStrings)
* 检测和读取二维代码符号,也支持读取二维数据模型的序列 count_obj(SymbolXLDs, Number) if (Number>0)
for i:=1 to 1 by 1
tuple_select ('发现PDF417码:'+DecodedDataStrings, i-1, Selected) set_tposition (WindowID, 100+i, 100+i) write_string (WindowID, Selected) endfor
*输出PDF417码二维码的信息 stop() else
find_data_code_2d(Image, SymbolXLDs, DataCodeHandleQR, ResultHandles1, DecodedDataStrings)
* 检测和读取二维代码符号,也支持读取二维数据模型的序列 count_obj(SymbolXLDs, Number) if (Number>0) for i:=1 to 1 by 1
tuple_select ('发现QR码:'+DecodedDataStrings, i-1, Selected) set_tposition (WindowID, 100+i, 100+i) write_string (WindowID, Selected) endfor
*输出QR码二维码的信息 stop() else
for i:=1 to 1 by 1
tuple_select ('发现QR码:'+DecodedDataStrings, i-1, Selected) set_tposition (WindowID, 100+i, 100+i) write_string (WindowID, Selected) endfor
stop() endif endif endif
[], [],
[], [],
endfor
clear_data_code_2d_model(DataCodeHandleQR)
clear_data_code_2d_model(DataCodeHandleECC200) clear_data_code_2d_model(DataCodeHandlePDF417) *对应create_data_code_2d_model进行结束清算
1.3 halcon与VS2010的结合
将halcon与VS2010进行结合对用户开放简洁可操作化界面,让用户方便对图像进行相应处理。
1.3.1 导入图片:
如果你想进行车牌识别,请导入车牌图片:
1.3.2 点击处理选择按钮选取车牌识别状态,接着点击分析图片按钮:
结果:把车牌牌号在下面显示出来,由于在halcon中定义字体大小适宜halcon窗口,所以对应到VS端字体会比较小。
1.3.3 点击清除按钮清空窗口,在读取二维码图识别:
1.3.4 点击分析按钮读取二维码:
附源代码(halcon代码请看上文,VS端代码请参考源程序):
正在阅读:
halcon车片识别和二维码识别大作业05-16
教师个人国语学习计划05-09
智能电话的设计04-29
浙江省导游基础第一章至第四章练习题07-06
第七章 租船货运合同的主要条款04-19
汽车 保养 维护试卷10-06
以水滴石穿为话题的作文600字06-15
幼儿园教育教学指导管理规定守则04-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 二维码
- 识别
- 作业
- halcon
- 车片
- 诗歌朗诵《献给爸爸妈妈的歌》
- 县食品药品监管局创建省级卫生城市工作汇报
- 智能控制习题答案 2
- 中国贴片电阻行业市场前景分析预测报告(目录)
- 按比例分配的实际问题1
- 随班就读文件
- 苏州市处置森林火灾应急预案
- 80/20原则
- 洛阳院阀门代号解释
- 修完 4197 关于空乘学生服务意识的培养的思考
- 推荐下载 工作总结-2019年电力管理工作总结-最新
- 中外城市建设史思考题6.9
- 古诗文创作常用别称(整理好的比较全)
- 汽修协会发给会员的通知
- 年轻干部要强化四力 牢记六字 李鸿忠书记在中青班干部培训班上的
- 金东北路交通发展预测(1)
- 黑龙江省伊春市伊春区二中高二地理上学期期末考试试题 - 图文
- 基坑围护、降水方案(2)改2
- 大学物理电磁学题库及答案
- 工程力学教案