一种MCU摄像头定位方法、装置、设备及存储介质与流程

文档序号:31163663发布日期:2022-08-17 08:19阅读:354来源:国知局
一种MCU摄像头定位方法、装置、设备及存储介质与流程
一种mcu摄像头定位方法、装置、设备及存储介质
技术领域
1.本发明涉及刻字机技术领域,尤其涉及一种mcu摄像头定位方法、装置、设备及存储介质。


背景技术:

2.在嵌入式领域,mcu摄像头定位一般是通过专门的图像处理芯片(例如ti dsp6000系列芯片)或者专门的大内存高主频arm芯片(比如海思hi3518),这些芯片通过专门的摄像头接口外接摄像头,然后在芯片内部通过专门的图像处理库(比如opencv、halcon等)对采集到的摄像头图片进行处理,从而进行定位。这种定位方法需要专用图像处理芯片和arm芯片,并附带linux操作系统等,硬件成本和软件实时成本较高。
3.刻字机主控为mcu,由于速度和资源限制,刻字机实现mcu摄像头定位的传统方法是外接专门处理芯片负责图像处理与定位,然后将处理结果通过通信线缆传送给刻字机主控mcu。一般摄像头需要装在刻字机移动小车上,主控mcu一般固定在刻字机最左或最右端,小车到mcu的通信距离一般比较长,因此通信线缆易受干扰,一般只能选择串口通信方式。由于串口通信方式的速度受限,因此传统mcu摄像头定位方案传输图片速度慢,只能传送定位结果,主控端做不了图像实时显示;同时由于需要外接图像处理芯片,成本高昂。因此,如何在刻字机系统上低成本地实现mcu摄像头定位,同时兼顾图像实时显示,成为该领域技术人员亟需解决的难题。


技术实现要素:

4.本技术的目的是提供一种mcu摄像头定位方法、装置、设备及存储介质,本方案中,mcu通过usb接口读取usb摄像头的实时图像数据;当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;对解压缩后的实时图像数据进行二值化处理,识别实时图像数据中定位标记点的左右轮廓,生成切割文件;获取摄像头与刻刀刀尖的安装偏差,依据安装偏差控制摄像头在实时图像数据的xy方向分别移动第一距离deltax及第二距离 deltay;获取偏移补偿,依据偏移补偿及安装偏差对摄像头进行校正;摄像头依据定位标记点的左右轮廓识别切割文件上的定位标记点;依据摄像头的识别结果修正定位标记点的坐标值,实现刻字机上摄像头的准确定位,提高刻字精度,实时显示图像,成本低廉。
5.为解决上述技术问题,本技术提供了一种mcu摄像头定位方法,所述方法包括:
6.控制mcu通过usb接口读取usb摄像头的实时图像数据;
7.控制所述mcu解压缩所述usb摄像头的实时图像数据;
8.当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;
9.对解压缩后的所述实时图像数据进行二值化处理;
10.在二值化处理后的所述实时图像数据中,识别所述实时图像数据中定位标记点的
左右轮廓,生成切割文件;
11.获取摄像头与刻刀刀尖的安装偏差,依据所述安装偏差控制所述摄像头在所述实时图像数据的xy方向分别移动第一距离deltax及第二距离deltay;
12.获取偏移补偿,依据所述偏移补偿及所述安装偏差对所述摄像头进行校正;
13.控制校正后的所述摄像头依据定位标记点的左右轮廓识别所述切割文件上的定位标记点;
14.依据所述摄像头的识别结果修正所述定位标记点的坐标值。
15.优选地,所述依据所述摄像头的识别结果修正所述定位标记点的坐标值包括:
16.获取预设的所述定位标记点的初始坐标位置;
17.依据所述摄像头的识别结果,获取所述定位标记点的实际坐标位置;
18.获取所述初始坐标位置与所述实际坐标位置的偏差关系;
19.依据所述偏差关系修正切割文件中点定位坐标点的坐标值。
20.优选地,所述获取偏移补偿的公式为:
21.offsetx=(cx-img_width/2)*ratio;
22.offsey=(cy-img_height/2)*ratio;
23.其中,offsetx、offsey为xy方向的偏移补偿值;cx、cy为所述刻刀刀尖所在位置的圆心坐标值;img_width为所述实时图像数据分辨率的宽值, img_height为所述实时图像数据分辨率的高值;ratio为摄像头像素到实际距离的对应系数。
24.优选地,在所述获取偏移补偿,依据所述偏移补偿及所述安装偏差对所述摄像头进行校正中,所述摄像头偏移值校正为:
25.deltax’=deltax+offsetx;
26.deltay’=deltay+offsety。
27.优选地,所述在二值化处理后的所述实时图像数据中,识别所述实时图像数据中定位标记点的左右轮廓,生成切割文件包括:
28.定义左轮廓数组;
29.从上往下遍历所述实时图像数据的每一行y,0《=y《img_width,其中 img_width为所述实时图像数据分辨率的宽值;
30.从左往右遍历所述实时图像数据的每一列x,0《=x《img_height,对当前点执行判断,其中img_height为所述实时图像数据分辨率的高值;
31.若当前行还没找到左轮廓点且前一点为白色,当前点为黑色,则当前点为左轮廓;
32.保存所述左轮廓的x坐标值,并更新前一点为当前点颜色值。
33.优选地,所述在二值化处理后的所述实时图像数据中,识别所述实时图像数据中定位标记点的左右轮廓,生成切割文件还包括:
34.定义右轮廓数组;
35.从上往下遍历所述实时图像数据的每一行y,0《=y《img_width,其中 img_width为所述实时图像数据分辨率的宽值;
36.从右往左遍历所述实时图像数据的每一列x,0《=x《img_height,对当前点执行判断,其中img_height为所述实时图像数据分辨率的高值;
37.若当前行还没找到右轮廓点且前一点为白色,当前点为黑色,则当前点为右轮廓;
38.保存所述右轮廓x坐标值,并更新前一点为当前点颜色值。
39.优选地,所述当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据放大,再实时显示到显示屏幕中,将解压缩的实时图像数据放大包括:
40.遍历所述实时图像数据的每一行,0《=y《img_height,其中 img_height为所述实时图像数据分辨率的高值;
41.对每一行数据,定义临时数组用于存放放大后的数据;
42.遍历所述实时图像数据的每一个像素点,0《=x《img_width,其中 img_width为所述实时图像数据分辨率的宽值;
43.将行放大a倍;
44.在所述显示屏幕上绘制出a行放大后的数据。
45.为解决上述技术问题,本技术提供了一种mcu摄像头定位装置,所述装置包括:
46.读取模块,用于控制mcu通过usb接口读取usb摄像头的实时图像数据;
47.解压缩模块,用于控制所述mcu解压缩所述usb摄像头的实时图像数据;
48.显示控制模块,用于当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;
49.图像处理模块,用于对解压缩后的所述实时图像数据进行二值化处理;
50.第一识别模块,用于在二值化处理后的所述实时图像数据中,识别所述实时图像数据中定位标记点的左右轮廓,生成切割文件;
51.移动控制模块,用于获取摄像头与刻刀刀尖的安装偏差,依据所述安装偏差控制所述摄像头在所述实时图像数据的xy方向分别移动第一距离deltax及第二距离deltay;
52.校正模块,用于获取偏移补偿,依据所述偏移补偿及所述安装偏差对所述摄像头进行校正;
53.第二识别模块,用于控制校正后的所述摄像头依据定位标记点的左右轮廓识别所述切割文件上的定位标记点;
54.修正模块,用于依据所述摄像头的识别结果修正所述定位标记点的坐标值。
55.为解决上述技术问题,本技术提供了一种mcu摄像头定位设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
56.为解决上述技术问题,本技术提供了一种存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
57.综上所述,本发明实施例提供的一种mcu摄像头定位方法、装置、设备及存储介质。本发明通过控制mcu通过usb接口读取usb摄像头的实时图像数据;控制mcu解压缩usb摄像头的实时图像数据;当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;对解压缩后的实时图像数据进行二值化处理;在二值化处理后的实时图像数据中,识别实时图像数据中定位标记点的左右轮廓,生成切割文件;获取摄像头与刻刀刀尖的安装偏差,依据安装偏差控制摄像头在实时图像数据的xy方向分别移动第一距离deltax及第二距离deltay;获取偏移补偿,依据偏移补偿及安装偏差对摄像头进行校正;控制校正后的摄像头依据定位标记点的左右轮廓识别切割文件上的定位标记点;依据摄像头的识别结果修正定位标记点的坐标值。因此,本发明实现刻字机上摄像头的准确
定位,提高刻字精度,实时显示图像,成本低廉。
附图说明
58.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
59.图1是本发明实施例一种mcu摄像头定位方法的流程图。
60.图2是本发明实施例一种mcu摄像头定位方法的流程图图。
61.图3是本发明实施例一种mcu摄像头定位方法的流程图图。
62.图4是本发明实施例一种mcu摄像头定位方法的流程图图。
63.图5是本发明实施例一种mcu摄像头定位方法的流程图图。
64.图6是本发明实施例的一种mcu摄像头定位方法的定位标记点的轮廓示意图。
65.图7是本发明实施例的一种mcu摄像头定位方法的四点定位法的原理图。
66.图8是本发明实施例的一种mcu摄像头定位方法的摄像头与刻刀刀尖的位置关系图。
67.图9是本发明实施例的mcu摄像头定位装置的结构示意图。
68.图10是本发明实施例的mcu摄像头定位设备的结构示意图。
具体实施方式
69.下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
70.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
71.请参阅图1,图1为本技术提供的一种mcu摄像头定位方法的流程图,包括:
72.s1、控制mcu通过usb接口读取usb摄像头的实时图像数据;
73.s2、控制mcu解压缩usb摄像头的实时图像数据;
74.s3、当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;
75.s4、对解压缩后的实时图像数据进行二值化处理;
76.s5、在二值化处理后的实时图像数据中,识别实时图像数据中定位标记点的左右轮廓,生成切割文件;
77.s6、获取摄像头与刻刀刀尖的安装偏差,依据安装偏差控制摄像头在实时图像数据的xy方向分别移动第一距离deltax及第二距离deltay;
78.s7、获取偏移补偿,依据偏移补偿及安装偏差对摄像头进行校正;
79.s8、控制校正后的摄像头依据定位标记点的左右轮廓识别切割文件上的定位标记点;
80.s9、依据摄像头的识别结果修正定位标记点的坐标值。
81.现有技术中,刻字机实现摄像头定位方案通过外接专门处理芯片负责图像处理与定位,将处理结果通过通信线缆传送给刻字机主控mcu。一般摄像头需要装在刻字机移动小车上,主控mcu固定在刻字机最左或最右端,刻字机移动小车到刻字机主控mcu的通信距离较长,通信线缆易受干扰,一般只能选择串口通信方式。而由于串口通信方式的速度受限,因此传统刻字机实现摄像头定位方案传输图片速度慢,无法实现图像实时显示;同时由于需要外接图像处理芯片,因此方案成本高。
82.针对上述缺点,本技术中usb接口读取usb摄像头的实时图像数据;当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;对解压缩后的实时图像数据进行二值化处理,识别实时图像数据中定位标记点的左右轮廓,生成切割文件;获取摄像头与刻刀刀尖的安装偏差,依据安装偏差控制摄像头在实时图像数据的xy方向分别移动第一距离deltax 及第二距离deltay;获取偏移补偿,依据偏移补偿及安装偏差对摄像头进行校正;摄像头依据定位标记点的左右轮廓识别切割文件上的定位标记点;依据摄像头的识别结果修正定位标记点的坐标值,实现刻字机上摄像头的准确定位,提高刻字精度,实时显示图像,成本低廉。
83.具体地,本技术的目的在于在以mcu为主控的刻字机系统中,提供一种无需外接专用图像处理芯片、低成本、能兼顾图像实时显示的摄像头定位方案。本实施例采用的mcu为stm32f407,主频168m,内存196k,通过usb外接 usb摄像头。
84.具体地,mcu充当usb主机,采用uvc通信协议,通过usb接口读取usb摄像头的图像数据。可以理解的是,usb线缆抗干扰能力较强,且传输速度快,适用于图片流实时传输场景。
85.具体地,在uvc通信协议中,图片格式为mpeg压缩格式,设图片分辨率为 img_width*img_height。可以理解的是,相较于yuv非压缩格式而言,mpeg压缩格式图片处理帧率高。
86.具体地,本技术采用双缓存的方式,内存中开辟了2个大数组来接收图片。一开始接收指针uvc_ready_framebuffer_ptr指向第1个数组,一帧图片接收完成,接收指针uvc_ready_framebuffer_ptr马上切换到第2个数组,此时mcu 取第1个数组的图片数据进行处理;待第2个数组接收完图片数据,接收指针又重新指向第1个数组,mcu开始处理第2个数组中的图片数据。因此本技术的数据处理速度快,能实现图像数据的实时显示。
87.具体地,mcu在解压缩接收到的mpej格式图片数据时,由于是嵌入式场景应用解压缩,需要减少内存,因此本技术选择tjpgdec库进行解压缩。tjpgdec 是一个小型嵌入式系统高度优化的创建jpeg图像的解码模块,工作时占用的内存低,以便集成到mcu芯片中。
88.tjpgdec通过api函数jd_prepare来输入源压缩mjpeg数据uvc_ready_framebuffer_ptr,再通过jd_decomp api函数压缩数据。jd_decomp 函数的原型为:
89.jresult jd_decomp(
90.jdec*jd,
91.uint(*outfunc)(jdec*,void*,jrect*),/*rgb output function*/
92.byte scale
93.)
94.其中输出回调函数outfunc的原型为:
95.uint output_func(jdec*jd,void*bitmap,jrect*rect)
96.bitmap为解压缩得到的图像数据,rect为图像数据的长宽信息。jrect结构体包括left,right,top,bottom结构体,分别代表处理图像的做左边沿坐标、右边沿坐标、上边沿坐标、下边沿坐标。因此rect参数定义了一个矩形块,对应原图像的一个矩形区域,该矩形区域的像素都存储与数组bitmap中。由于一张源图是img_width*img_height大小的图像,通过tjpgdec解压缩后是分成很多块输出的,因此,本技术新建一个img_width*img_height大小的数组 imgdata[img_width*img_height]来收集解压缩后的数据。bitmap数组与 imgdata数组的映射关系为:
[0097]
imgdata[index2]=bitmap[index1]
[0098]
index2=y*img_width+x,
[0099]
index1=(right-left+1)*(y-top)+x
[0100]
top《=y《=bottom
[0101]
left《=x《=right
[0102]
其中index2为图片映射到输出图片imgdata中的索引位置,index1为图片在小区块bitmap中的索引位置。当检测到index2等于img_width*img_height
ꢀ‑
1时,代表一帧图片解压缩完毕,可以开始进行图像处理。
[0103]
综上,本发明本技术提供了一种mcu摄像头定位方法,在本方案中,通过控制mcu通过usb接口读取usb摄像头的实时图像数据;控制mcu解压缩 usb摄像头的实时图像数据;当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;对解压缩后的实时图像数据进行二值化处理;在二值化处理后的实时图像数据中,识别实时图像数据中定位标记点的左右轮廓,生成切割文件;获取摄像头与刻刀刀尖的安装偏差,依据安装偏差控制摄像头在实时图像数据的xy方向分别移动第一距离deltax及第二距离deltay;获取偏移补偿,依据偏移补偿及安装偏差对摄像头进行校正;控制校正后的摄像头依据定位标记点的左右轮廓识别切割文件上的定位标记点;依据摄像头的识别结果修正定位标记点的坐标值。因此,本发明实现刻字机上摄像头的准确定位,提高刻字精度,实时显示图像,成本低廉。
[0104]
在上述实施例的基础上:
[0105]
请参照图2,图2为本技术提供的mcu摄像头定位方法的流程图。
[0106]
请参照图7,图7为本技术提供的mcu摄像头定位方法的流程图。
[0107]
作为一种优选地实施例,依据摄像头的识别结果修正定位标记点的坐标值包括:
[0108]
s91、获取预设的定位标记点的初始坐标位置;
[0109]
s92、依据摄像头的识别结果,获取定位标记点的实际坐标位置;
[0110]
s93、获取初始坐标位置与实际坐标位置的偏差关系;
[0111]
s94、依据偏差关系修正切割文件中点定位坐标点的坐标值。
[0112]
具体地,为了实现刻字机的精准定位切割,刻字机在正式开始刻字前会通过机器视觉定位技术,在切割介质上打印定位标记点,摄像头通过识别定位标记点的坐标位置,将定位标记点的坐标位置传输给刻字机主控mcu,刻字机主控mcu根据定位标记点在指定位置上执行刻字动作。
[0113]
具体地,本技术通过四点定位法在切割介质上打印定位标记点。控制校正后的摄像头依据定位标记点的左右轮廓识别切割文件上的定位标记点后,切割文件会给出待切割页面中四个标记点。以标记点为圆形为例,请参阅图7,在初始坐标系xy上,四个圆形标记点的圆心分别为a(0,0),b(w,0),c(w,h),d(0,h)。通过摄像头识别这四个标记圆,设第一个圆心为a’(0,0),其它三个圆心分别为b’(xb’,yb’),c’(xc’,yc’),d’(xd’,yd’),a’b’c’d’所在的新坐标系为x
‘y‘
,设其相对于初始坐标系旋转角度为θ,xy方向的缩放比分别为a、b,则对于xy坐标系中一点(x,y),其变换到x
‘y‘
坐标系中的坐标(x’,y’)为:
[0114][0115]
对根据b’(xb’,yb’)、d’(xd’,yd’),有等式成立:
[0116][0117][0118]
则对于文件中定义的点m(xm,ym),其在经过摄像头定位后的新坐标系中的坐标值m’(xm’,ym’)为:
[0119][0120]
因此,本技术依据摄像头的识别结果修正定位标记点的坐标值,使得定位标记点的坐标值更加准确,从而实现刻字机上摄像头的准确定位,提高刻字精度。
[0121]
请参照图8,图8为本技术提供的mcu摄像头定位方法的摄像头与刻刀刀尖的位置关系图。
[0122]
作为一种优选地实施例,获取偏移补偿的公式为:
[0123]
offsetx=(cx-img_width/2)*ratio;
[0124]
offsey=(cy-img_height/2)*ratio;
[0125]
其中,offsetx、offsey为xy方向的偏移补偿值;cx、cy为刻刀刀尖所在位置的圆心坐标值;img_width为实时图像数据分辨率的宽值,img_height 为实时图像数据分辨率的高值;ratio为摄像头像素到实际距离的对应系数。
[0126]
作为一种优选地实施例,在获取偏移补偿,依据偏移补偿及安装偏差对摄像头进行校正中,摄像头偏移值校正为:
[0127]
deltax’=deltax+offsetx;
[0128]
deltay’=deltay+offsety。
[0129]
具体地,由于摄像头和刻刀都是装在刻字机的移动小车上,摄像头和刻刀之间的距离是固定的,如图8所示。在切割开始前,是刀尖正对着标记点,当需要拍照时,摄像头由于结构差异,每台移动小车上摄像头和刻刀的距离值存在差异,这个误差会影响摄像头拍照效果,因此需要通过摄像头校正来补偿这个安装误差。摄像头校正的步骤为:
[0130]
将刻刀刀尖换成细笔尖,在刻字介质上画一个小正方形,小正方形作为标记点;
[0131]
根据预设好的距离,摄像头在xy方向分别移动deltax和deltay距离,跑到原来刀尖的位置附近拍照,并识别正方形;
[0132]
根据识别到的正方形圆心位置cx、cy,计算偏移补偿,用来校正摄像头。
[0133]
偏移补偿值为:
[0134]
offsetx=(cx-img_width/2)*ratio;
[0135]
offsey=(cy-img_height/2)*ratio;
[0136]
其中ratio为摄像头像素到实际距离的对应系数。
[0137]
摄像头偏移值校正为:
[0138]
deltax’=deltax+offsetx;
[0139]
deltay’=de l tay+offsety。
[0140]
请参照图3,图3为本技术提供的mcu摄像头定位方法的流程图。
[0141]
作为一种优选地实施例,在二值化处理后的实时图像数据中,识别实时图像数据中定位标记点的左右轮廓,生成切割文件包括:
[0142]
s51、定义左轮廓数组;
[0143]
s52、从上往下遍历实时图像数据的每一行y,0《=y《img_width,其中 img_width为实时图像数据分辨率的宽值;
[0144]
s53、从左往右遍历实时图像数据的每一列x,0《=x《img_height,对当前点执行判断,其中img_height为实时图像数据分辨率的高值;
[0145]
s54、若当前行还没找到左轮廓点且前一点为白色,当前点为黑色,则当前点为左轮廓;
[0146]
s55、保存左轮廓的x坐标值,并更新前一点为当前点颜色值。
[0147]
请参照图4,图4为本技术提供的mcu摄像头定位方法的流程图。
[0148]
作为一种优选地实施例,在二值化处理后的实时图像数据中,识别实时图像数据中定位标记点的左右轮廓,生成切割文件还包括:
[0149]
s51’、定义右轮廓数组;
[0150]
s52’、从上往下遍历实时图像数据的每一行y,0《=y《img_width,其中img_width为实时图像数据分辨率的宽值;
[0151]
s53’、从右往左遍历实时图像数据的每一列x,0《=x《img_height,对当前点执行判断,其中img_height为实时图像数据分辨率的高值;
[0152]
s54’、若当前行还没找到右轮廓点且前一点为白色,当前点为黑色,则当前点为右轮廓;
[0153]
s55’、保存右轮廓x坐标值,并更新前一点为当前点颜色值。
[0154]
请参照图6,图6为本技术提供的mcu摄像头定位方法的定位标记点的轮廓示意图。
[0155]
具体地,刻字机定位使用的标记点主要有空心正方形和实心圆。本技术识别的图像为实心圆和空心正方形,如图6所示。首先定义左右轮廓数组 colorarrleft[img_height]和colorarrright[img_height],数组元素初始值全部设置为0,代表还未找到轮廓点。
[0156]
识别左轮廓的方法为:
[0157]
从上往下遍历图像的每一行y,0《=y《img_width;
[0158]
从左往右遍历图像的每一列x,0《=x《img_height,对当前点执行判断:
[0159]
若当前行还没找到左轮廓点(colorarrleft[y]==0)且前一点为白色,当前点为黑色,则当前点为左轮廓,保存当前左轮廓横坐标值colorarrleft[y]= x,并更新前一点为当前点颜色值。
[0160]
识别右轮廓的方法为:
[0161]
从上往下遍历图像的每一行y,0《=y《img_width;
[0162]
从右往左遍历图像的每一列x,0《=x《img_height,对当前点执行判断:
[0163]
若当前行还没找到右轮廓点(colorarrright[y]==0)且前一点为白色,当前点为黑色,则当前点为右轮廓,保存当前右轮廓横坐标值colorarrright[y]= x,并更新前一点为当前点颜色值。
[0164]
具体地,识别正方形时,由于正方形的位置能够保证正方形的俩条竖边与y 轴基本平行,因此需要遍历所有左轮廓点,找出横坐标出现几率最高的坐标值,为正方形左边沿坐标;同理遍历所有右轮廓点,找出横坐标出现几率最高的坐标值,为正方形右坐标值。
[0165]
具体地,识别正方形算法步骤为:
[0166]
建立timesleft[img_width]与timesright[img_width]数组,所有元素初始化为0;
[0167]
遍历所有0到img_height,0《=i《img_height,执行操作:
[0168]
若colorarrleft[i]!=0,则timesleft[colorarrleft[i]]++;
[0169]
若colorarrright[i]!=0,则timesright[colorarrright[i]]++;
[0170]
找出colorarrleft数组中的最大值,其对应的索引即为正方形左边沿横坐标值meanleft;找出colorarrright数组中的最大值,其对应的索引即为正方形右边沿横坐标值meanright,计算正方形宽度width=meanright-meanleft;统计左轮廓中所有横坐标值在meanleft附近的点数目inlineleft,统计右轮廓点中横坐标值在meanright附近的点数目inlineright,统计左轮廓点数目 countsleft,统计右轮廓点数目countsright;统计左轮廓中纵坐标最大值 max_y,纵坐标最小值min_y,计算正方型高度height=max-min_y;当 inlineleft/countsleft》80%且inlineright/countsright》80%且 abs(width-height)《误差值5,则认为找到正方形,并计算正方形中心坐标 cx=(meanleft+meanright)/2,cy=(max_y+min_y)/2。
[0171]
具体地,识别圆的算法步骤为:
[0172]
对于左轮廓,采用基于距离的滤波方法去掉离群点。圆四周有一些离群点,滤除离群点的方法为:遍历左轮廓中的所有点,对与每一点,计算该点与轮廓中其它点的距离,若距离小于距离门槛值,则邻近点计数器nearcount++,若最后nearcount《点数门槛值,则认为该点是离群点,将其从左轮廓点集中移除。
[0173]
对于左轮廓点集,做最小二乘法拟合,拟合出圆心坐标(cx,cy)和半径r
[0174]
对于n个点集(x1,y1),(x2,y2),
……
,(xn,yn),由最小二乘法求圆心和半径的公式为:
[0175][0176][0177][0178][0179][0180][0181][0182][0183][0184]
遍历轮廓上的所有点,计算它们与拟合圆心(cx,cy)的距离d,若距离d与 r的绝对值小于门槛值,则认为该点在轮廓上,则在轮廓上点数目circnt加1。并统计所有轮廓点数目count。遍历完后计算百分比circnt/count,若circnt/count》80%,则认为识别圆成功。
[0185]
请参照图5,图5为本技术提供的mcu摄像头定位方法的流程图。
[0186]
作为一种优选地实施例,当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据放大,再实时显示到显示屏幕中,将解压缩的实时图像数据放大包括:
[0187]
s31、遍历实时图像数据的每一行,0《=y《img_height,其中 img_height为实时图像数据分辨率的高值;
[0188]
s32、对每一行数据,定义临时数组用于存放放大后的数据;
[0189]
s33、遍历实时图像数据的每一个像素点,0《=x《img_width,其中 img_width为实时图像数据分辨率的宽值;
[0190]
s34、将行放大a倍;
[0191]
s35、在显示屏幕上绘制出a行放大后的数据。
[0192]
具体地,当检测到一张完整的图片数据解压缩完毕后,就将这张图片显示到 lcd屏幕上。由于img_width*img_height的区域在屏幕上显示比较小,因此本技术将图片长宽
都放大2倍后再显示到屏幕上。图片放大的方法为:遍历图像每一行,0《=y《img_height;对每一行数据,定义一个临时数组 color[img_width*2],用来存放放大后的数据,然后遍历每一个像素点0《=x《 img_width;将行放大2倍;
[0193]
index=img_width*y+x
[0194]
color[2*x]=imgdata[index]
[0195]
color[2*x+1]=imgdata[index]
[0196]
color[2*x+2*img_width]=imgdata[index]
[0197]
color[2*x+2*img_width]=imgdata[index];在屏幕上绘制出2行放大后的数据;根据color数组绘制出2*y,2*y+1这2行的像素点到屏幕上。
[0198]
具体地,对图像进行图像处理,先将图像转为灰度图。由于mpeg解压缩后的图像其颜色格式为rgb565格式,对于每一个16位像素点color,先提取出r、g、b分量,然后再进行灰度化,灰度化值gray为:
[0199]
r=color》》11
[0200]
b=color&0x1f
[0201]
g=(color》》5)&0x3f
[0202]
gray=r*0.299+0.578*g+0.114*b。
[0203]
请参阅图9,图9为本技术一种mcu摄像头定位装置的结构图。
[0204]
本技术还提供了一种mcu摄像头定位装置,装置包括:
[0205]
读取模块1,用于控制mcu通过usb接口读取usb摄像头的实时图像数据;
[0206]
解压缩模块2,用于控制mcu解压缩usb摄像头的实时图像数据;
[0207]
显示控制模块3,用于当检测到一张完整的图片数据解压缩完毕后,将解压缩的实时图像数据实时显示到显示屏幕中;
[0208]
图像处理模块4,用于对解压缩后的实时图像数据进行二值化处理;
[0209]
第一识别模块5,用于在二值化处理后的实时图像数据中,识别实时图像数据中定位标记点的左右轮廓,生成切割文件;
[0210]
移动控制模块6,用于获取摄像头与刻刀刀尖的安装偏差,依据安装偏差控制摄像头在实时图像数据的xy方向分别移动第一距离deltax及第二距离 deltay;
[0211]
校正模块7,用于获取偏移补偿,依据偏移补偿及安装偏差对摄像头进行校正;
[0212]
第二识别模块8,用于控制校正后的摄像头依据定位标记点的左右轮廓识别切割文件上的定位标记点;
[0213]
修正模块9,用于依据摄像头的识别结果修正定位标记点的坐标值。
[0214]
另外,结合图1描述的本发明实施例的一种mcu摄像头定位方法可以由mcu 摄像头定位设备来实现。图10示出了本发明实施例提供的一种mcu摄像头定位设备的硬件结构示意图。
[0215]
mcu摄像头定位设备可以包括处理器401以及存储有计算机程序指令的存储器402。
[0216]
具体地,上述处理器401可以包括中央处理器(cpu),或者特定集成电路 (application specific integrated circuit,asic),或者可以被配置成实施本发明实施例的一个或多个集成电路。
[0217]
存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括硬盘驱动器(hard disk drive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器402可在数据处理装置的内部或外部。在特定实施例中,存储器402是非易失性固态存储器。在特定实施例中,存储器402包括只读存储器(rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom (eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。
[0218]
处理器401通过读取并执行存储器402中存储的计算机程序指令,以实现上述实施例中的任意一种mcu摄像头定位方法。
[0219]
在一个示例中,mcu摄像头定位设备还可包括通信接口403和总线410。其中,如图10所示,处理器401、存储器402、通信接口403通过总线410连接并完成相互间的通信。
[0220]
通信接口403,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
[0221]
总线410包括硬件、软件或两者,将mcu摄像头定位设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x) 总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410 可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
[0222]
另外,结合上述实施例中的一种mcu摄像头定位方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种mcu 摄像头定位方法。
[0223]
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
[0224]
以上,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1