一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面扫线激光3D相机加速方法、装置、系统及FPGA与流程

2022-05-11 12:41:08 来源:中国专利 TAG:

面扫线激光3d相机加速方法、装置、系统及fpga
技术领域
1.本发明涉及机器视觉技术领域,尤其涉及一种面扫线激光3d相机加速方法、装置、系统及fpga。


背景技术:

2.随着科技的进步,数字多媒体技术也不断发展,如今3d视觉已应用在工业领域,激光扫描三维测量技术凭借其非接触、精度高、适用范围广等优点,目前已经成为工业领域中不可或缺的技术,具有很高的研究价值。该项技术被广泛用于产品缺陷检查、自动化装配、尺寸测量、文物重建和视觉导航等领域,具有非常高的实用价值。
3.现有技术提出一种基于线激光扫描和双目立体视觉相结合的三维测量系统,该种线激光扫描系统可以避免传统单相机扫描技术中标定激光平面的过程,提高三维测量精度。该测量系统由两个相机、一个先激光投射器和一个旋转电机组成,测量时通过向被测物体投射单条线激光条纹,然后由旋转电机带动激光条纹扫描整个被测物体,扫描的同时立体视觉系统以指定的帧率拍摄被测物体;根据所拍摄的含有激光条纹的立体图像对,由立体视觉的极线约束和激光条纹特征计算出立体视觉系统之间的对应性关系;最后根据预先标定好的系统参数按照双目立体视觉的方法计算出物体的三维点云数据。
4.扫描效率与成本优势不可兼得。单线激光扫描技术实现较为简单,但扫描性能受到很大限制,扫描速度慢,使得实用性有限;而多线激光扫描技术扫描速度有较大提升,但由于依赖特殊订制的激光发生器,工艺复杂且成本很高,同样为技术的普及应用带来阻碍。
5.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。


技术实现要素:

6.本发明的主要目的在于提供一种面扫线激光3d相机加速方法、装置、系统及fpga,旨在解决现有技术中面扫线激光三维测量方案难兼顾成本和效率的技术问题。
7.为实现上述目的,本发明提供一种面扫线激光3d相机加速方法,所述面扫线激光3d相机加速方法包括以下步骤:
8.步骤s10:通过左、右高速图像传感器接口模块接收左、右3d相机的高速图像传感器分别传输的扫描场景的左源图像数据和右源图像数据,对所述左、右源图像数据进行解帧,每路左、右高速图像传感器接口同时输出所述左、右源图像数据分别对应的预设数量的像素;
9.步骤s20:接收计算机发送的重映射矩阵系数,并将所述重映射矩阵系数写入外挂的动态随机存储器中;
10.步骤s30:从所述动态随机存储器中读取所述重映射矩阵系数,根据所述重映射矩阵系数进行所述左、右源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据;
11.步骤s40:通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波、二值化、形态学闭运算、感兴趣区域roi运算、光条去毛刺处理,获得所述左、右源图像数据分别对应的左、右已去毛刺图像数据;
12.步骤s50:识别所述左、右已去毛刺图像数据中的光条点,获取识别到的光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组;
13.步骤s60:计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据;
14.重复所述步骤s10至所述步骤s60,获得所述扫描场景的视差数据。
15.优选地,所述步骤s30,包括:
16.设置循环缓存区,将所述左、右源图像数据存储至所述循环缓存区;
17.在所述循环缓存区达到缓存门限时,从所述动态随机存储器中读取所述矩阵系数,根据所述矩阵系数进行所述源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得预设数量的重映射图像数据。
18.优选地,所述步骤s40,包括:
19.通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波处理,获得预设数量的已滤波图像数据;
20.通过预设数量的通道对所述预设数量的已滤波图像数据同时进行二值化处理,获得预设数量的二值化图像数据;
21.通过预设数量的通道对所述预设数量的二值化图像数据进行形态学闭运算及感兴趣区域roi运算,输出预设数量通道的二值图数据和roi图数据;
22.识别所述二值图数据中光条段的起点和终点,根据识别到的所述光条段的起点和终点对光条段指示信号进行调整;
23.根据所述二值图数据中调整后的光条段指示信号及对应位置的roi图数据,计算所述左、右源图像数据的光条中心坐标;
24.根据所述光条中心坐标,通过预设数量的通道对所述左、右源图像数据提取中心线,对所述中心线进行去毛刺处理,获得所述左、右源图像数据分别对应的已去毛刺图像数据。
25.优选地,所述通过预设数量的通道对所述预设数量的二值化图像数据进行形态学闭运算及感兴趣区域roi运算,输出预设数量通道的二值图数据和roi图数据,包括:
26.每个时钟周期下通过预设数量的通道对所述预设数量的二值化图像数据同时进行膨胀、腐蚀处理,具体为:
27.步骤s1:膨胀处理完预设行数的二值化图像数据,获得已膨胀数据;
28.步骤s2:再对所述已膨胀数据进行腐蚀处理,同时对其他两行二值化图像数据继续膨胀处理;
29.重复所述步骤s1和所述步骤s2,输出预设数量通道的二值图数据;
30.以所述二值图数据为掩码,若像素点在所述二值图数据中的灰度值为第一预设值,则roi图数据与所述二值图数据中的该像素点的灰度值一致,否则将所述roi图数据中该像素点的灰度值设置为第二预设值,获得预设数量通道的roi图数据。
31.优选地,所述根据所述二值图数据中调整后的光条段指示信号及对应位置的roi图数据,计算所述左、右源图像数据的光条中心坐标,包括:
32.根据所述二值图数据中调整后的光条段指示信号获取对应位置的roi图数据,提取对应位置的roi图数据中的灰度值和列坐标;
33.根据对应位置的roi图数据中的灰度值和列坐标,通过第一公式计算所述左、右源图像数据的光条中心坐标;
34.所述第一公式为:x=(σxi*ii)/(σxi),其中xi表示光条段对应位置的roi图数据中每点的灰度值,ii表示光条段对应位置的roi图数据中每点的列坐标,x表示所述光条中心坐标。
35.优选地,所述步骤s60,包括:
36.当计算出所述左、右源图像数据分别对应的左、右光条数组,将所述左、右光条数组传输至所述动态随机存储器;
37.从所述存储器中读取所述左、右光条数组,并计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据。
38.优选地,所述步骤s10之前,还包括:
39.接收计算机下发的开始扫描指令,根据内部存储的角度表格控制振镜电机连续移动,以使激光器投射的激光条纹跟着连续移动;
40.在所述振镜电机每一次移动完成后,产生触发信号,触发左、右3d相机的高速图像传感器同时采集一幅源图像数据,以完成整个幅面内的激光光条扫描,并获得扫描场景对应的左源图像数据和右源图像数据。
41.优选地,所述步骤s50,包括:
42.对所述左、右已去毛刺图像数据以行为单位进行搜索,根据搜索到的像素点的灰度值判断是否为光条点;
43.若搜索到的像素点是光条点,则获取所述光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组。
44.此外,为实现上述目的,本发明还提出一种面扫线激光3d相机加速装置,所述面扫线激光3d相机加速装置包括:
45.左、右高速图像传感器接口模块,用于接收左右3d相机的高速图像传感器分别传输的扫描场景的左源图像数据和右源图像数据,对所述左、右源图像数据进行解帧,每路左、右高速图像传感器接口同时输出所述左、右源图像数据分别对应的预设数量的像素;
46.重映射模块,用于接收计算机发送的重映射数据,根据所述重映射数据生成矩阵系数,并将所述矩阵系数写入外挂的动态随机存储器中,从所述动态随机存储器中读取所述矩阵系数,根据所述矩阵系数进行所述左、右源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据;
47.滤波及去毛刺模块,用于通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波、二值化、形态学闭运算、感兴趣区域roi运算、光条去毛刺处理,获得所述左、右源图像数据分别对应的左、右已去毛刺图像数据;
48.光条数组生成模块,用于识别所述左、右已去毛刺图像数据中的光条点,获取识别
到的光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组;
49.视差计算模块,用于计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据;
50.重复上述左、右高速图像传感器接口模块、重映射模块、滤波及去毛刺模块、光条数组生成模块及视差计算模块的处理过程,获得所述扫描场景的视差数据。
51.此外,为实现上述目的,本发明还提出一种fpga芯片,所述fpga芯片包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的面扫线激光3d相机加速程序,所述面扫线激光3d相机加速程序被所述处理器执行时实现如上文所述的面扫线激光3d相机加速方法的步骤。
52.此外,为实现上述目的,本发明还提出一种面扫线激光3d相机加速系统,所述面扫线激光3d相机加速系统包括:左、右3d相机,fpga芯片,计算机、振镜电机、动态随机存储器;其中,所述动态随机存储器外挂于所述fpga芯片;
53.所述计算机,用于下发开始扫描指令;
54.fpga芯片,用于接收到所述开始扫描指令时,根据内部存储的角度表格控制所述振镜电机连续移动,以使激光器投射的激光条纹跟着连续移动;
55.所述振镜电机,用于在每一次移动完成后,产生触发信号;
56.所述左、右3d相机,用于响应于所述触发信号,通过高速图像传感器同时采集一幅源图像数据,以完成整个幅面内的激光光条扫描,并获得扫描场景对应的左源图像数据和右源图像数据;
57.所述fpga芯片,还用于通过左、右高速图像传感器接口模块接收所述左、右3d相机的高速图像传感器分别传输的扫描场景的左源图像数据和右源图像数据,对所述左、右源图像数据进行解帧,每路左、右高速图像传感器接口同时输出所述左、右源图像数据分别对应的预设数量的像素;
58.所述计算机,还用于根据重映射数据生成重映射矩阵系数,并将所述重映射矩阵系数写入外挂的所述动态随机存储器中;
59.所述fpga芯片,还用于从所述动态随机存储器中读取所述重映射矩阵系数,根据所述重映射矩阵系数进行所述左、右源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据;通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波、二值化、形态学闭运算、感兴趣区域roi运算、光条去毛刺处理,获得所述左、右源图像数据分别对应的左、右已去毛刺图像数据;识别所述左、右已去毛刺图像数据中的光条点,获取识别到的光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组;计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据;重复上述fpga芯片所做的处理过程,获得所述扫描场景的视差数据。
60.本发明中,步骤s10:通过左、右高速图像传感器接口模块接收左、右3d相机的高速图像传感器分别传输的扫描场景的左源图像数据和右源图像数据,对所述左、右源图像数据进行解帧,每路左、右高速图像传感器接口同时输出所述左、右源图像数据分别对应的预设数量的像素;步骤s20:接收计算机发送的重映射矩阵系数,并将所述重映射矩阵系数写
入外挂的动态随机存储器中;步骤s30:从所述动态随机存储器中读取所述重映射矩阵系数,根据所述重映射矩阵系数进行所述左、右源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据;步骤s40:通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波、二值化、形态学闭运算、感兴趣区域roi运算、光条去毛刺处理,获得所述左、右源图像数据分别对应的左、右已去毛刺图像数据;步骤s50:识别所述左、右已去毛刺图像数据中的光条点,获取识别到的光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组;步骤s60:计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据;重复所述步骤s10至所述步骤s60,获得所述扫描场景的视差数据。本发明实现低成本的同时,并提高解算视差数据效率。
附图说明
61.图1是本发明实施例方案涉及的硬件运行环境的fpga芯片的结构示意图;
62.图2为本发明面扫线激光3d相机加速方法第一实施例的流程示意图;
63.图3为本发明面扫线激光3d相机加速方法第二实施例的流程示意图;
64.图4为本发明面扫线激光3d相机加速方法第二实施例中二值化图像数据膨胀、腐蚀处理的流程示意图;
65.图5为本发明面扫线激光3d相机加速装置第一实施例的结构框图。
66.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
67.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
68.参照图1,图1为本发明实施例方案涉及的硬件运行环境的fpga芯片结构示意图。
69.如图1所示,该fpga芯片可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为usb接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(randomaccess memory,ram)存储器,也可以是稳定的存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
70.本领域技术人员可以理解,图1中示出的结构并不构成对fpga芯片的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
71.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及面扫线激光3d相机加速程序。
72.在图1所示的fpga芯片中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接用户设备;所述fpga芯片通过处理器1001调用存储器1005中存储的面扫线激光3d相机加速程序,并执行本发明实施例提供的面扫线
激光3d相机加速方法。
73.基于上述硬件结构,提出本发明面扫线激光3d相机加速方法的实施例。
74.参照图2,图2为本发明面扫线激光3d相机加速方法第一实施例的流程示意图,提出本发明面扫线激光3d相机加速方法第一实施例。
75.在第一实施例中,所述面扫线激光3d相机加速方法包括以下步骤:
76.步骤s10:通过左、右高速图像传感器接口模块接收左、右3d相机的高速图像传感器分别传输的扫描场景的左源图像数据和右源图像数据,对所述左、右源图像数据进行解帧,每路左、右高速图像传感器接口同时输出所述左、右源图像数据分别对应的预设数量的像素。
77.应理解的是,本实施例的执行主体是所述fpga芯片。具体的,本实施例的fpga芯片可使用xilinx zynq系列新一代全可编程片上系统,它组合了一个双核心arm cortex-a9处理器和一个传统的现场可编程门陈列逻辑部件,一个双核arm cortex-a9称为ps,可编程逻辑部分称为pl。pl和ps间有丰富、高速的axi总线互联方便数据交互。其中视差计算是在所述fpga芯片的处理系统(processing system,简写ps)端完成,其它模块是在所述fpga芯片的可编程逻辑(programmable logic,简写pl)端完成。
78.振镜电机是完成激光光条在整个场景内扫描的主要器件。电机上带载一个镜片,改变电机的角度镜片也会跟着移动,激光器投射的激光光条经过镜片反射后发生位置变化,通过连续改变电机的角度,从而使激光器投射的激光光条在整个工作范围内完成场景扫描。
79.所述fpga芯片中线扫时序控制模块,用来完成对振镜电机角度的连续控制以及触发左右高速图像传感器(sensor)连续拍照采图。在pc上计算振镜电机在整个场景的扫描角度并下发给pl,pl存储到内部的存储资源bram中,当pc下发开始扫描指令后,pl根据内部的bram中存储的角度表格控制振镜电机连续移动,激光器投射的激光条纹也跟着连续移动,每一次移动完成后,线扫时序控制模块就产生一个触发信号让左右高速sensor同时采集一副图像数据。这样就完成了整个幅面内的激光光条扫描以及对应的2d图像数据。
80.进一步地,在本实施例中,所述步骤s10之前,还包括:接收计算机下发的开始扫描指令,根据内部存储的角度表格控制振镜电机连续移动,以使激光器投射的激光条纹跟着连续移动;在所述振镜电机每一次移动完成后,产生触发信号,触发左、右3d相机的高速图像传感器同时采集一幅源图像数据,以完成整个幅面内的激光光条扫描,并获得扫描场景对应的左源图像数据和右源图像数据。
81.需要说明的是,左源图像数据和右源图像数据即为左右高速sensor同时采集到的2d图像数据。所述预设数量可以根据数据处理实际情况进行设置,比如16,本实施例以所述预设数量为16进行说明。所述fpga芯片中高速sensor接口主要是pl接收来自左右高速sensor采集到的2d图像,本实施例中sensor可使用luxima的lux1310,帧率可以达到1000帧以上,每个sensor通过16对低电压差分信号(lowvoltage differential signaling,简写lvds)数据线传送数据给pl,使用lvds接口传输速率快且稳定可靠,fpga接收数据后进行解帧,每路sensor接口同时输出16个像素。
82.步骤s20:接收计算机发送的重映射矩阵系数,并将所述重映射矩阵系数写入外挂的动态随机存储器中。
83.可理解的是,前端每个sensor帧率高达1000帧且同时输出16个像素,所以后续算法处理必须具有高并行度才能匹配上sensor的帧率。图像重映射算法主要是把原始图像中某位置的像素放置到目的图像中指定的位置,最终达到双目相机平行校正的目的。所述fpga芯片中16通道重映射模块是每时钟周期下能同时处理16个像素映射的高并行度重映射算法。为了能够在fpga芯片中支持浮点型,重映射系数由pc端计算,pc端对重映射数据做浮点到定点的处理,每个重映射矩阵系数由16bit组成,其中高11bit表示整数位,低5bit表示小数位。
84.步骤s30:从所述动态随机存储器中读取所述重映射矩阵系数,根据所述重映射矩阵系数进行所述左、右源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据。
85.在具体实现中,pc端将处理好后的重映射矩阵系数传递给所述fpga芯片中的pl部分,pl写入到外挂的动态随机存储器中,所述动态随机存储器可以是双倍速率同步动态随机存储器ddr3。从ddr3读取所述重映射矩阵系数进行源图像数据位置映射并进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据。
86.步骤s40:通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波、二值化、形态学闭运算、感兴趣区域roi运算、光条去毛刺处理,获得所述左、右源图像数据分别对应的左、右已去毛刺图像数据。
87.应理解的是,所述fpga芯片中16通道高斯滤波模块,高斯滤波是一种线性平滑滤波,主要是为了滤除高斯噪声。为了匹配前端sensor的高帧率,这里使用16通道高斯滤波,每个时钟周期下可以同时处理16个像素的高斯滤波。
88.再进行16通道二值化处理,二值化是基于设定的阈值,对图像进行二值化处理,如果灰度值大于阈值则灰度值置为255,否则灰度值置为0。为了匹配前端sensor的高帧率,使用16通道二值化,每个时钟周期下可以同时处理16个像素的二值化。
89.再进行16通道形态学闭运算及roi计算,形态学闭运算是为了消除小型的黑洞,先膨胀后腐蚀。为了匹配前端sensor的高帧率,使用16通道形态学闭运算,每个时钟周期下可以同时处理16个像素的形态学闭运算,输出16通道的二值图数据。roi是以二值图数据为掩码,确定roi图像数据中的灰度值,以及16通道的roi数据,输出16通道的roi图像数据。
90.再通过16通道提取中心线,获取光条中心坐标并剔除掉光条中存在的毛刺。
91.步骤s50:识别所述左、右已去毛刺图像数据中的光条点,获取识别到的光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组。
92.可理解的是,以一行为单位对所述左、右已去毛刺图像数据进行搜索,如果灰度值中最低3bit为1表示是一个光条点,则获取该点的列坐标。对获取的列坐标经过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组。
93.步骤s60:计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据。
94.步骤s70:重复所述步骤s10至所述步骤s60,获得所述扫描场景的视差数据。
95.应理解的是,所述左、右3d相机对应的所述左、右光条数组进行相减得出该帧的视差数据。然后重复所述步骤s10至所述步骤s60,计算出整个扫描场景的视差数据,并通过ps
端的千兆以太网传输到pc端,pc端完成点云的生成以及点云后处理。在本实施例中,所述步骤s70之后,还包括:将所述扫描场景的视差数据传输至所述计算机端,以使所述计算机端完成所述扫描场景对应的3d点云数据。
96.在本实施例中,面扫线激光使用fpga做为控制及算法处理核心器件,使用fpga快速控制单线激光条纹移动及触发相机采图,使用多对lvds接口完成图像数据传输,算法处理主要使用fpga的高并行度、高吞吐率,进行大量的数据处理,经过fpga处理后数据量大量减少,在交给cpu进行处理,对cpu的性能也就没有太高要求,整个控制和处理过程对fpga的资源和性能没有太高的要求,一般中等规模fpga都能满足要求,因此该方案极大的提高了面扫线激光3d相机的成像速度,同时也能保证足够的精度、成本低、通用性好、灵活性好。
97.基于上述图2所示的第一实施例,参照图3,提出本发明面扫线激光3d相机加速方法的第二实施例。
98.在第二实施例中,所述步骤s30,包括:
99.设置循环缓存区,将所述左、右源图像数据存储至所述循环缓存区;
100.在所述循环缓存区达到缓存门限时,从所述动态随机存储器中读取所述矩阵系数,根据所述矩阵系数进行所述源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得预设数量的重映射图像数据。
101.应理解的是,所述左、右源图像数据不能存放到ddr3中,由于源图像数据读取有一定随机性,不能发挥ddr3的burst能力,效率比较低,一帧图像缓存需要大量存储资源,所以为了节省pl的存储资源,由pl开辟的一个循环缓存区(buff)进行缓存,达到缓存门限后开始从ddr3读取所述重映射矩阵系数进行源图像数据位置映射并进行双线性插值,缓存门限可以由上层软件灵活配置,门限的设置值取决与双目相机镜头畸变以及极线不平行的程度决定。
102.在本实施例中,所述步骤s40,包括:
103.通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波处理,获得预设数量的已滤波图像数据;
104.通过预设数量的通道对所述预设数量的已滤波图像数据同时进行二值化处理,获得预设数量的二值化图像数据;
105.通过预设数量的通道对所述预设数量的二值化图像数据进行形态学闭运算及感兴趣区域roi运算,输出预设数量通道的二值图数据和roi图数据;
106.识别所述二值图数据中光条段的起点和终点,根据识别到的所述光条段的起点和终点对光条段指示信号进行调整;
107.根据所述二值图数据中调整后的光条段指示信号及对应位置的roi图数据,计算所述左、右源图像数据的光条中心坐标;
108.根据所述光条中心坐标,通过预设数量的通道对所述左、右源图像数据提取中心线,对所述中心线进行去毛刺处理,获得所述左、右源图像数据分别对应的已去毛刺图像数据。
109.需要说明的是,通过预设数量的通道对所述预设数量的二值化图像数据进行形态学闭运算及感兴趣区域roi运算,为了匹配前端sensor的高帧率,这里使用16通道形态学闭运算,每个时钟周期下可以同时处理16个像素的形态学闭运算。为了提高流水操作,在膨胀
做完两行后的结果接着去做腐蚀,同时进来的数据流继续做膨胀,获得预设数量通道的二值图数据。
110.进一步地,在本实施例中,所述通过预设数量的通道对所述预设数量的二值化图像数据进行形态学闭运算及感兴趣区域roi运算,输出预设数量通道的二值图数据和roi图数据,包括:
111.每个时钟周期下通过预设数量的通道对所述预设数量的二值化图像数据同时进行膨胀、腐蚀处理,具体为:
112.步骤s1:膨胀处理完预设行数的二值化图像数据,获得已膨胀数据;
113.步骤s2:再对所述已膨胀数据进行腐蚀处理,同时对其他两行二值化图像数据继续膨胀处理;
114.重复所述步骤s1和所述步骤s2,输出预设数量通道的二值图数据;
115.以所述二值图数据为掩码,若像素点在所述二值图数据中的灰度值为第一预设值,则roi图数据与所述二值图数据中的该像素点的灰度值一致,否则将所述roi图数据中该像素点的灰度值设置为第二预设值,获得预设数量通道的roi图数据。
116.应理解的是,参照图4,为了提高流水操作,在膨胀做完两行后的结果接着去做腐蚀,同时进来的数据流继续做膨胀。所述第一预设值可以是255,所述第二预设值可以是0。roi运算是以所述二值图数据为掩码,若像素点在二值图中灰度值为255,则roi保留与原始灰度图灰度值一致,否则roi灰度图设置为0,所以此模块输出16通道的二值图数据以及16通道的roi图数据,为了后面提取中心线做准备。
117.进一步地,在本实施例中,所述根据所述二值图数据中调整后的光条段指示信号及对应位置的roi图数据,计算所述左、右源图像数据的光条中心坐标,包括:
118.根据所述二值图数据中调整后的光条段指示信号获取对应位置的roi图数据,提取对应位置的roi图数据中的灰度值和列坐标;
119.根据对应位置的roi图数据中的灰度值和列坐标,通过第一公式计算所述左、右源图像数据的光条中心坐标;
120.所述第一公式为:x=(σxi*ii)/(σxi),其中xi表示光条段对应位置的roi图数据中每点的灰度值,ii表示光条段对应位置的roi图数据中每点的列坐标,x表示所述光条中心坐标。
121.在具体实现中,为了匹配前端sensor的高帧率,使用16通道提取中心线及去毛刺处理,每个时钟周期下可以同时处理16个像素点,并且能支持亚像素坐标。以行为单位进行搜索,判断光条段的起止点,在二值图中如果像素值等于第三预设值,表示光条段起点,则把光条段指示信号拉高并同时记录下起点列坐标,继续搜索如果像素值等于第四预设值,表示此光条段的终点,则把光条段指示信号拉低。所述第三预设值可以是255,所述第四预设值可以是0。
122.利用光条段指示信号把相对应位置的roi图灰度值及坐标进行加权质心计算,计算公式为x=(σxi*ii)/(σxi),其中,xi表示光条段对应位置的roi图数据中每点的灰度值,ii表示光条段对应位置的roi图数据中每点的列坐标,x表示所述光条中心坐标。从式中可以看出x计算结果为浮点型数,为了后面3d点云有更好的精度也需要满足亚像素坐标,在pl中为了实现亚像素坐标,在本实施例中,最后计算的结果每个通道的像素值中高5bit表
示小数坐标,低3bit如果为1表示是一个光条点,为0表示不是光条点,这样做是用来在后面模块中提取出整数坐标。
123.在本实施例中,所述步骤s50,包括:
124.步骤s501:对所述左、右已去毛刺图像数据以行为单位进行搜索,根据搜索到的像素点的灰度值判断是否为光条点;
125.步骤s502:若搜索到的像素点是光条点,则获取所述光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组。
126.需要说明的是,对所述左、右已去毛刺图像数据以一行为单位进行搜索,如果灰度值中最低3bit为1表示是一个光条点并获取这个点的列坐标,也即为整数坐标用11bit表示,灰度值高5bit为小数坐标,把整数坐标和小数坐标拼接成16bit数据,高11bit表示整数坐标,低5bit表示小数坐标。获取的坐标然后在经过一维均值滤波进行平滑处理。在此步骤后数据量得到了大大减少,例如本实施例中一帧图像原始大小为1280*1024*8bit,在所述步骤s501和所述步骤s502处理后,数据量大小变为1280*16bit,所以后续的处理可以交给cpu,大大减少了cpu的负荷。
127.进一步地,在本实施例中,所述步骤s60,包括:
128.当计算出所述左、右源图像数据分别对应的左、右光条数组,将所述左、右光条数组传输至所述动态随机存储器;
129.从所述存储器中读取所述左、右光条数组,并计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据。
130.可理解的是,生成的左、右光条数组通过axi hp总线传输到ps的ddr3中,为了节省时间每计算出一帧图像的光条坐标后直接传输到ps外挂的ddr3中,然后ps从ddr3中读取左、右3d相机对应的所述左、右光条数组,然后进行相减得出该帧的视差数据。
131.在本实施例中,使用fpga控制振镜电机带动单线激光条纹完成场景扫描并同时硬触发sensor拍照输出图像,具有很高的实时性,且左右相机能保持同步;高速sensor和fpga之间使用多对lvds线进行图像传输,传输速率快,稳定可靠;使用fpga的高并行度能力完成面扫线激光的视差解算,每个算法处理模块支持每时钟周期下16个像素的同时处理且支持亚像素坐标处理,整个解算过程解算速度高达1000帧且解算精度高。
132.此外,本发明实施例还提出一种面扫线激光3d相机加速系统,所述面扫线激光3d相机加速系统包括:左、右3d相机,fpga芯片,计算机、振镜电机、动态随机存储器;其中,所述动态随机存储器外挂于所述fpga芯片;
133.所述计算机,用于下发开始扫描指令;
134.fpga芯片,用于接收到所述开始扫描指令时,根据内部存储的角度表格控制所述振镜电机连续移动,以使激光器投射的激光条纹跟着连续移动;
135.所述振镜电机,用于在每一次移动完成后,产生触发信号;
136.所述左、右3d相机,用于响应于所述触发信号,通过高速图像传感器同时采集一幅源图像数据,以完成整个幅面内的激光光条扫描,并获得扫描场景对应的左源图像数据和右源图像数据;
137.所述fpga芯片,还用于通过左、右高速图像传感器接口模块接收所述左、右3d相机
的高速图像传感器分别传输的扫描场景的左源图像数据和右源图像数据,对所述左、右源图像数据进行解帧,每路左、右高速图像传感器接口同时输出所述左、右源图像数据分别对应的预设数量的像素;
138.所述计算机,还用于根据重映射数据生成重映射矩阵系数,并将所述重映射矩阵系数写入外挂的所述动态随机存储器中;
139.所述fpga芯片,还用于从所述动态随机存储器中读取所述重映射矩阵系数,根据所述重映射矩阵系数进行所述左、右源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据;通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波、二值化、形态学闭运算、感兴趣区域roi运算、光条去毛刺处理,获得所述左、右源图像数据分别对应的左、右已去毛刺图像数据;识别所述左、右已去毛刺图像数据中的光条点,获取识别到的光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组;计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据;重复上述fpga芯片所做的处理过程,获得所述扫描场景的视差数据。
140.本发明所述面扫线激光3d相机加速系统的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
141.此外,参照图5,本发明实施例还提出一种面扫线激光3d相机加速装置,所述面扫线激光3d相机加速装置包括:
142.左、右高速图像传感器接口模块10,用于接收左右3d相机的高速图像传感器分别传输的扫描场景的左源图像数据和右源图像数据,对所述左、右源图像数据进行解帧,每路左、右高速图像传感器接口同时输出所述左、右源图像数据分别对应的预设数量的像素;
143.重映射模块20,用于接收计算机发送的重映射数据,根据所述重映射数据生成矩阵系数,并将所述矩阵系数写入外挂的动态随机存储器中,从所述动态随机存储器中读取所述矩阵系数,根据所述矩阵系数进行所述左、右源图像数据位置映射,并根据映射结果对所述预设数量的像素进行双线性插值,获得所述左、右源图像数据分别对应的预设数量的重映射图像数据;
144.滤波及去毛刺模块30,用于通过预设数量的通道对所述预设数量的重映射图像数据同时进行高斯滤波、二值化、形态学闭运算、感兴趣区域roi运算、光条去毛刺处理,获得所述左、右源图像数据分别对应的左、右已去毛刺图像数据;
145.光条数组生成模块40,用于识别所述左、右已去毛刺图像数据中的光条点,获取识别到的光条点的列坐标,根据所述列坐标通过一维均值滤波进行平滑处理,获得所述左、右源图像数据分别对应的左、右光条数组;
146.视差计算模块50,用于计算所述左、右光条数组之间的差值,获得所述左、右源图像数据的视差数据;
147.重复上述左、右高速图像传感器接口模块、重映射模块、滤波及去毛刺模块、光条数组生成模块及视差计算模块的处理过程,获得所述扫描场景的视差数据。
148.本发明所述面扫线激光3d相机加速装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
149.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排
他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
150.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为标识。
151.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(read only memory image,rom)/随机存取存储器(randomaccess memory,ram)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
152.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献