CN111861883A - 基于同步积分surf算法的多路视频拼接方法 - Google Patents
基于同步积分surf算法的多路视频拼接方法 Download PDFInfo
- Publication number
- CN111861883A CN111861883A CN202010583759.2A CN202010583759A CN111861883A CN 111861883 A CN111861883 A CN 111861883A CN 202010583759 A CN202010583759 A CN 202010583759A CN 111861883 A CN111861883 A CN 111861883A
- Authority
- CN
- China
- Prior art keywords
- image
- pixel
- camera
- map
- coordinates
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 19
- 239000011159 matrix material Substances 0.000 claims abstract description 38
- 238000004364 calculation method Methods 0.000 claims abstract description 13
- 230000010354 integration Effects 0.000 claims abstract description 12
- 238000013507 mapping Methods 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 24
- 230000000630 rising effect Effects 0.000 claims description 15
- 239000013598 vector Substances 0.000 claims description 15
- 238000003491 array Methods 0.000 claims description 8
- 238000003702 image correction Methods 0.000 claims description 8
- 238000005520 cutting process Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 7
- 230000009466 transformation Effects 0.000 claims description 6
- 230000003111 delayed effect Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 abstract description 8
- 238000012423 maintenance Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4038—Image mosaicing, e.g. composing plane images from plane sub-images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/80—Geometric correction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/80—Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20132—Image cropping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Processing (AREA)
Abstract
本发明提出一种基于同步积分SURF算法的多路视频拼接方法,该方法使用首次运行时计算出的相关参数拼接图像,若发生相机偏移导致图像拼接错误,系统可重新计算相关参数,进行系统校准;另外,该方法使用流水线算法编写SURF算法中的积分步骤,从而省去了计算图像积分所需消耗的时间,提高了系统运行效率;通过截取摄像头画面的交叉区域进行特征点检测与匹配并计算透视矩阵,与对完整图像进行特征点检测、特征点匹配及计算透视矩阵相比,减少了计算量,提高了系统运行速度;因此,本发明提出的方法不但可以当摄像头发生偏移后自行校准,从而实现提高设备的抗扰动性,降低维护成本,在设备正常使用时还拥有较高的运行速度。
Description
技术领域
本发明属于视频拼接技术领域,具体涉及一种基于同步积分SURF算法的多路视频拼接方法。
背景技术
当今社会生产生活中对视频实时拼接的需求日益增加,例如360°全景监控、多路4K摄影机拍摄8K及更高分辨率视频等。目前,视频拼接设备基于FPGA芯片或专门的图像处理芯片,其中基于专门的图像处理芯片的产品其硬件复杂程度高、成本高,不利于推广,基于纯FPGA芯片的设备难以实现复杂算法,因此往往需要借助其他设备将FPGA难以计算的关键参数,例如需要大量浮点运算的参数,提前计算好,可一旦发生移位,这些关键参数需要重新计算,这类设备存在诸多限制,因此有些采用固定点拼接,即相机固定后通过裁减视频的固定像素点拼接,此类设备难以应对相机抖动或移位,且一旦发生移位,很难恢复到原有状态,需重新寻找拼接点。
发明内容
本发明要解决的技术问题是提出一种提高视频拼接设备的抗扰动性的方法,以应对相机抖动或移位后,很难恢复到原有状态,需重新寻找拼接点的问题。
为解决上述技术问题,本发明提出一种基于同步积分SURF算法的多路视频拼接方法,通过高层次综合技术编写程序实现算法的硬件加速,且用户可选择校准模式重新计算图像拼接所需参数,因此可在摄像头发生移位后重新校准拼接系统,该方法包括如下步骤:
步骤1:进行多路视频采集;
步骤2:对多路视频数据进行同步;
步骤3:对多路视频数据进行图像校正;
步骤31:利用摄像头标定软件获得视频数据的图像校正映射表;所述映射表包含水平方向映射表map_x和垂直方向映射表map_y,分别以一维数组map_x(i,j)和map_y(i,j)的形式写入单独的头文件,包含进ARM端工程中,并将map_x、map_y的数组首地址传递到FPGA端;所述map_x(i,j)和map_y(i,j)分别表示矫正后的图像的(i,j)处像素在原图像中横坐标和纵坐标;
步骤32:传递所述映射表到FPGA端;FPGA端通过AXIMaster端口从水平方向映射表map_x、垂直方向映射表map_y数组地址读取数据并分别存储在两个hls::Mat对象中;
步骤33:缓存待矫正区域;
读取一帧视频缓存到hls::Mat对象src_Mat中;若要校正src_Mat中第r行像素,需要将src_Mat中第r-m到第r+n行像素读取到二维数组tmp_Array中,其中,n和m需根据不同摄像头图像的垂直偏差确定;若输入图像水平尺寸小于1024个像素,则使用ARRAY_PARITION指令将二维数组tmp_Array中的元素存储到寄存器中;
步骤34:校正图像;
当src_Mat对象的前n+m行图像读取到二维数组tmp_Array中后,开始依序从水平方向映射表map_x、垂直方向映射表map_y中读取映射坐标,并将像素值写入结果图像dst_Mat;当第一行像素矫正完成,继续从src_Mat读取一行像素并分别写入到tmp_Array[row%(m+n)][col]位置,其中,row从0开始,每从src_Mat中读取一行,row值加1;
步骤35:重复步骤34直到一帧图像矫正完成;
步骤4:对校正后的图像进行图像裁剪;
使用流水线算法将校正后的图像四周未填充像素数据的行和列所对应的像素有效信号和行同步信号置低,形成新的像素有效信号和行同步信号;
步骤5:对矫正后的图像进行图像拼接;
该步骤包括如下具体操作:
步骤51:拆分图像;
采用遍历hls::Mat对象的方法,拆分出来包含交叉范围的图像,交叉范围以坐标LUij(x0,y0),RBij(x1,y1)表示,其中LUij表示第i个摄像头与第j个摄像头图像间,包含交叉范围的图像的左上角坐标;RBij为第i个摄像头与第j个摄像头图像间,包含交叉范围的图像的右下角坐标;将这部分图像存储到hls::Window对象image_ij_c中;
步骤52:对图像像素点进行积分;
以步骤51中的坐标LUij和RBij为边界,以像素有效信号为驱动时钟,每个时钟上升沿计算一次积分,每个场同步信号上升沿到来时时置零,计算公式如下:
I(x,y)=I(x-1,y)-I(x-1,y–1)+I(x,y–1)+P(x,y);
式中,I(x,y)表示坐标为(x,y)的像素与图像左顶点之间像素的积分,P(x,y)表示图像坐标为(x,y)处的像素值;
步骤53:计算Hessian响应矩阵;
将步骤52中计算的图像积分缓存到hls::Window对象I_W中,将不同尺寸的盒式滤波器数组通过AXIMaster端口读入FPGA端并缓存到hls::Window对象中,使用不同尺寸滤波器与image_ij_c图像进行卷积,计算出各Hessian响应矩阵;使用LOOP_MERGE指令实现同时计算不同滤波器尺寸的Hessian响应矩阵,并将结果分别缓存在hls:Window对象中;
步骤54:寻找特征点;
使用3×3×3的模板分别遍历同一组,相邻3层的Hessian响应矩阵;
若中心点的值大于预设的阈值,且比相邻的26个点的值都大,则选为特征点;同时将此特征点的索引存储到vector对象中,索引信息包括所在的组号、在组中的层号及(x,y)坐标;
步骤55:计算特征点主方向;
从步骤54中的vector对象中读取特征点索引信息,并以每个特征点为中心,用张角为70°~50°的扇形滑动窗口,以60°为步长旋转这个滑动窗口;并对窗口内的图像Harr小波的响应值进行累加,主方向为最大的Harr响应累加值对应的方向;
步骤56:计算特征矢量;
继续以每个特征点为中心,将20s×20s领域沿主方向划分为4×4的子块,每个子块利用尺寸为2s的Harr模板进行响应值计算,s=1.2*L/9,其中L为Hessian矩阵的尺寸,然后对响应值进行统计∑dx、∑|dx|、∑dy、∑|dy|形成特征矢量;
步骤57:特征点匹配;
通过计算两个特征点间特征向量的欧氏距离来确定匹配度,欧式距离越短,代表两个特征点的匹配度越好;此外,如果两个特征点的Hessian矩阵迹,即矩阵特征值的和正负号相同,代表两个特征点具有相同方向上的对比度变化,如果不同,说明这两个特征点的对比度方向相反,也直接剔除;
步骤58:计算最佳坐标变换矩阵;
随机抽取4对匹配的特征点,利用这4对特征匹配坐标计算出透视矩阵H1,假设待拼接的图像为第i个摄像头与第j个摄像头的图像imagei和imagej的包含交叉区域的图像image_ij_c和image_ji_c,将image_ji_c中所有特征匹配点经过该透视矩阵H1映射到image_ij_c的坐标空间,然后与image_ij_c匹配点实际坐标求欧氏距离;
之后再随机抽取不同的四组特征匹配坐标,再计算透视矩阵H2,再求欧式距离,如此重复多次,直到所有组合方式都用完;最后以欧式距离最小的那个透视矩阵作为最佳透视矩阵,同时将欧氏距离过大的匹配特征点剔除;
步骤59:图像拼接;
使用最佳坐标变换矩阵将imagej的坐标空间转换到imagei的坐标空间,将图像平移并映射到新的hls::Mat对象中完成拼接;
步骤6:将结果图像裁减为预设大小;
步骤7:利用VDMA,即Video Direct Memory Access,可不经过CPU直接对存储器进行视频的读写的技术,将拼接完成的图像通过AXI4总线,以乒乓操作写入DDR3存储器相应的帧缓存地址所对应的存储区域中;
步骤8:使用UDP协议通过千兆以太网将DDR3存储器中的图像发送到上位机,发送时,每个数据包包含4字节数据包编号,1024字节图像数据,上位机根据数据包号将数据放入缓存区的固定位置以解决丢包造成整幅画面混乱的问题。
优选的,所述步骤2包括如下具体操作步骤:
步骤21、使用流水线算法统计时钟周期计数器记录的N路视频的第一个场同步信号上升沿到来的时间N1、N2…、Nn、…NN,其中n表示第n个上升沿到来的时间,并比较出最大值Nm;
步骤21、从N路视频数据的第二帧开始,将N路视频数据分别延时Nm-N1、Nm-N2…、Nm-Nn个时钟周期;
步骤23、构建一个N*Pix_W位寄存器buf,其中Pix_W为一个像素点所对应的数据的位数,如果某一路视频需要延时n个时钟周期,n≤N,,则在每个驱动时钟的上升沿,将buf内数据左移Pix_W位,同时将新的像素数据写入buf的末尾,buf的输出位段为buf[n*Pix_W:(n-1)*Pix_W]。
优选的,所述步骤4中,使用流水线算法将校正后的图像四周未填充像素数据的行和列所对应的像素有效信号和行、场同步信号置低,形成新的像素有效信号和行、场同步信号。
优选的,首次开机,系统执行一次完整流程后,默认不再执行步骤53至步骤56,使用首次计算出的相关参数拼接图像,若发生相机偏移导致图像拼接错误,用户可选择校准模式,系统将重新执行一次完整流程计算相关参数,进行系统校准。
优选的,所述步骤54中,扇形滑动窗口的张角为70°~50°。
优选的,所述步骤55中,将每步所需的像素相对圆心的坐标索引构建成查找表后,通过将原图像素坐标变换到圆心的相对坐标,即可通过同一个查找表进行窗口滑动。
与现有技术相比,本发明的有益效果如下:
本发明提出的基于同步积分SURF算法的多路视频拼接方法,该方法使用运行时计算出的相关参数拼接图像,若发生相机偏移导致图像拼接错误,系统将会重新计算相关参数,进行系统校准;另外,该方法通过将SURF算法中的积分步骤使用流水线算法编写,实现了与视频流的同步积分,从而省去了计算图像积分所需消耗的时间,提高了系统运行效率;通过截取摄像头画面的交叉区域进行特征点检测与匹配并计算透视矩阵,与对完整图像进行特征点检测、特征点匹配及计算透视矩阵相比,减少了计算量,提高了系统运行速度;另外,在进行图像裁剪时,采用流水线算法对视频流的像素有效信号、行同步信号、场同步信号进行操作,相比于缓存图像再遍历图像进行裁减,本发明所提方法延时小,有利于提高系统运行效率;因此,本发明提出的方法与现有技术相比,可以在设备正常使用时拥有较高的运行速度,当摄像头发生偏移后用户可自行校准,从而实现提高设备的抗扰动性,降低维护成本。
附图说明
图1为本发明实施例提出的基于同步积分SURF算法的多路视频动态拼接方法的流程图;
附图2为本发明实施例的图像校正流程图;
附图3为本发明实施例的图像拼接流程图;
附图4为本发明实施例的校正前图像;
附图5为本发明实施例的校正后图像;
附图6为本发明实施例的待拼接图像;以及
附图7为本发明实施例的拼接结果图像。
具体实施方式
以下,参照附图对本发明的实施方式进行说明。
本实施例提出的一种基于同步积分SURF算法的多路视频拼接方法,流程如图1所示。本实施例采用ZYNQ芯片为硬件平台,该ZYNQ芯片包括FPGA和ARM处理器,在进行视频图像拼接处理前,首先由ARM端通过寄存器配置FPGA端各模块的参数,包括向FPGA端发送输入视频的尺寸、输出视频的尺寸、图像校正映射表地址、不同尺寸的盒式滤波器数组地址和DDR3存储器中乒乓操作所使用的2个视频帧缓存地址;然后开始视频拼接处理,该视频拼接方法包括以下步骤:
步骤1:进行多路视频采集;
步骤2:对多路视频数据进行同步;视频数据包括像素数据、像素有效信号、行同步信号和场同步信号;
步骤21、使用流水线算法统计时钟周期计数器记录的N路视频第一个场同步信号上升沿到来的时间N1、N2…、Nn、…NN,其中n表示第n个上升沿到来的时间,并比较出最大值Nm;本实施例中N=2;
步骤21、从第二帧开始,分将N路视频数据,分别延时Nm-N1、Nm-N2…、Nm-Nn个时钟周期,实现各摄像头数据同步,具体操作步骤如下:
构建一个N*Pix_W位寄存器buf,Pix_W为一个像素点对应的数据位数,假设某一路视频需要延时n(n≤N)个时钟周期,则在每个驱动时钟的上升沿,将buf内数据左移Pix_W位,例如RGB888格式需左移24位,同时将新的像素数据写入buf末尾,buf的输出位段为buf[n*Pix_W:(n-1)*Pix_W];通过寄存器移位操作并读取相应位作为输出实现数据延时;此方法相比于对每个摄像头均缓存一帧或多帧图像,再同时读取缓存相比,能节约大量存储器资源,因缓存图像而造成的延时也更小;
步骤3:图像校正,流程如图2所示;
步骤31:利用摄像头标定软件获得图像校正映射表;映射表包含水平方向映射表map_x和垂直方向映射表map_y,分别以一维数组map_x(i,j)和map_y(i,j)的形式写入单独的头文件,包含进ARM端工程中,并将map_x、map_y的数组首地址传递到FPGA端;map_x(i,j)和map_y(i,j)分别表示矫正后的图像的(i,j)处像素在原图像中横坐标和纵坐标;
步骤32:传递映射表到FPGA端;FPGA端通过AXIMaster端口从map_x、map_y数组地址读取数据并分别存储在两个hls::Mat对象中;
步骤33:缓存待矫正区域;
读取一帧视频缓存到hls::Mat对象src_Mat中,由于hls::Mat对象不支持随机访问,所以若要校正第r行像素,需要将src_Mat中第r-m到第r+n行像素读取到二维数组tmp_Array中,其中,n和m需根据不同摄像头图像的垂直偏差确定,且m+n需尽可能最小,否则将导致BRAM资源耗尽;若输入图像水平尺寸小于1024个像素,则可使用ARRAY_PARITION指令将tmp_Array中的元素存储到寄存器中,将大量减少BRAM的需求;
步骤34:校正图像;
当src_Mat对象的前n+m行图像读取到tmp_Array中后,开始依序从map_x、map_y中读取映射坐标,并将像素值写入结果图像dst_Mat;当第一行像素矫正完成,继续从src_Mat读取一行像素并分别写入到tmp_Array[row%(m+n)][col]位置,其中,row从0开始,每从src_Mat中读取一行,row值加1;
步骤35:重复步骤34对校正前图像进行处理,直到一帧图像矫正完成,得到矫正后图像;
步骤4:图像裁剪;
校正后的图像四周会出现无像素区域,对于每个摄像头,在确定了矫正映射矩阵后,需裁减的区域也就确定了,因此,可使用流水线算法将图像四周未填充像素数据的行和列对应的像素有效信号和行、场同步信号置低,形成新的像素有效信号和行、场同步信号,从而实现图像裁剪;
此方法只需在数据流动的过程中对像素有效信号和行、场同步信号进行赋值,即置0或置1,而赋值操作只消耗一个时钟周期,因此,在流水线算法的情况下,裁剪后的图像数据流与原图像数据流相比只延时了1个时钟周期;若采用缓存一帧图像后再遍历图像进行裁减,假设1个时钟中可访问一个像素,后一个时钟周期完成像素点的保留或去操作,完成一幅1920x1080的图像也需要1920*1080*2=4147200个时钟周期,而实际运行中,访问并决策某个像素是否保留无法在2个时钟周期完成,因此采用流水线算法修改行同步信号从而间接实现图像裁减更有利于改善系统实时性;
步骤5:图像拼接,流程如图3所示;
对完成裁减的图像进行特征点检测、配准及拼接;如果第一次完成此步骤5后,若用户不选择校准模式,该步骤将不再执行特征点检测、配准操作,直接利用首次计算出的相关数据进行拼接,以提高运行速度;该步骤包括如下具体操作:
步骤51:拆分图像;
因为摄像头位置与角度固定不变,且各摄像头画面的交叉范围也可提前确定,因此,拆分出交叉区域一定范围内的图像进行特征匹配将节省大量运算;由于hls::Mat对象不支持随机访问,因此采用遍历hls::Mat对象的方法,拆分出来包含交叉范围的图像,交叉范围以坐标LU12(x0,y0),RB12(x1,y1)表示,其中LU12表示第1个摄像头与第2个摄像头图像间,包含交叉范围的图像的左上角坐标。RB12为第1个摄像头与第2个摄像头图像间,包含交叉范围的图像的右下角坐标。将这部分图像存储到hls::Window对象image_ij_c中,本实例中为image_12_c和image_21_c;
步骤52:对图像像素点进行积分;
遍历图像并对每个像素点做积分需消耗大量时间,因此,此步骤使用流水线算法编写,以步骤51中的拆分坐标为边界,以像素有效信号为驱动时钟,每个时钟上升沿计算一次积分,每个场同步信号上升沿到来时时置零,计算公式如下:
I(x,y)=I(x-1,y)-I(x-1,y–1)+I(x,y–1)+P(x,y);
式中,I(x,y)表示坐标为(x,y)的像素与图像左顶点之间像素的积分,P(x,y)表示图像坐标为(x,y)处的像素值;
通过使用流水线算法,由于只有加法运算,所以积分结果相对于像素数据流只延时1了个时钟周期;若按常规方法计算积分图像,即遍历一整副图像,仅遍历图像就需要大量时间,以1920x1080分辨率图像为例,即使1个时钟周期能访问一个像素点,仅仅遍历图像就要消耗1920*1080=2073600个时钟周期,加上处理时间,时间将会成倍增加,因此采用流水线算法积分图像具有极低的延迟,能做到同步积分;
步骤53:计算Hessian响应矩阵;
因为积分图尺寸与步骤51拆分出的图像相同,且hls::Window对象支持随机访问,因此将步骤52中计算的图像积分缓存到hls::Window对象I_W中,将不同尺寸的盒式滤波器数组通过AXIMaster端口读入FPGA端并缓存到hls::Window对象中,使用不同尺寸滤波器与image_12_c和image_21_c图像进行卷积,计算出各Hessian响应矩阵;使用LOOP_MERGE指令实现同时计算不同滤波器尺寸的Hessian响应矩阵,并将结果分别缓存在hls:Window对象中;
步骤54:寻找特征点;
使用3×3×3的模板分别遍历同一组,相邻3层的Hessian响应矩阵;
若中心点的值大于预设的阈值,且比相邻的26个点的值都大,则选为特征点;同时将此特征点的索引存储到vector对象中,索引信息包括所在的组号、在组中的层号及(x,y)坐标;
步骤55:计算特征点主方向;
完成步骤52后,计算特征点主方向的所需特征点信息已全部搜集完成,因此,从步骤54中的vector对象中读取特征点索引信息,并以每个特征点为中心,用张角为60°的扇形滑动窗口,以60°为步长旋转这个滑动窗口。将每步所需的像素相对圆心的坐标索引构建成查找表后,通过将原图像素坐标变换到圆心的相对坐标,即可通过同一个查找表进行窗口滑动,查找表的坐标范围只需覆盖一个固定大小的圆形区域而无需为整幅图像构建查找表,如此将节约大量存储资源,若对以每个像素为中心的圆形区域都构建查找表,需构建(row-2R)*(col-2R)个不同的查找表,其中row为图像行数,col为列数,R为原形滑窗半径;再对窗口内的图像Harr小波的响应值进行累加,主方向为最大的Harr响应累加值对应的方向;
步骤56:计算特征矢量;
继续以每个特征点为中心,将其20s×20s领域沿主方向划分为4×4的子块,每个子块利用尺寸为2s的Harr模板进行响应值计算,然后对响应值进行统计∑dx、∑|dx|、∑dy、∑|dy|形成特征矢量;
步骤57:特征点匹配;
通过计算两个特征点间特征向量的欧氏距离来确定匹配度,欧式距离越短,代表两个特征点的匹配度越好;此外,如果两个特征点的Hessian矩阵迹,即矩阵特征值的和正负号相同,代表两个特征点具有相同方向上的对比度变化,如果不同,说明这两个特征点的对比度方向相反,也直接剔除。并且画面交叉范围越少,裁剪出来不必参与特征点检测的图像面积就越大,既特征点检测及匹配的计算量也越小;
步骤58:计算最佳坐标变换矩阵;
随机抽取4对匹配的特征点,利用这4对特征匹配坐标计算出透视矩阵H1。将image_21_c中所有特征匹配点经过该透视矩阵H1映射到image_12_c的坐标空间,然后与image_12_c匹配点实际坐标求欧氏距离;
之后再随机抽取不同的四组特征匹配坐标,再计算透视矩阵H2,再求欧式距离,如此重复多次,直到所有组合方式都用完;最后以欧式距离最小的那个透视矩阵作为最终计算结果,同时将欧氏距离过大的匹配特征点剔除;
步骤59:拼接图像;
使用最佳坐标变换矩阵将image2的坐标空间转换到image1的坐标空间,将待拼接图像图像平移并映射到新的hls::Mat对象中完成拼接,得到拼接结果图像;
首次开机,系统执行一次完整流程后,默认不再执行步骤53至步骤56,使用首次计算出的相关参数拼接图像,提高系统运行速度,若发生相机偏移导致图像拼接错误,用户可选择校准模式,系统将重新执行一次完整流程计算相关参数,进行系统校准;
步骤6:将结果图像裁减为预设大小;
步骤7:VDMA将拼接完成的图像通过AXI4总线,以乒乓操作写入DDR3存储器相应的帧缓存地址所对应的存储区域中;
步骤8:使用UDP协议通过千兆以太网将DDR3存储器中的图像发送到上位机,发送时,每个数据包包含4字节数据包编号,1024字节图像数据,上位机根据数据包号将数据放入缓存区的固定位置以解决丢包造成整幅画面混乱的问题。
以上所述的实施例仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (6)
1.一种基于同步积分SURF算法的多路视频拼接方法,其特征在于,其包括如下步骤:
步骤1:进行多路视频采集;
步骤2:对多路视频数据进行同步;
步骤3:对多路视频数据进行图像校正;
步骤31:利用摄像头标定软件获得视频数据的图像校正映射表;所述映射表包含水平方向映射表map_x和垂直方向映射表map_y,分别以一维数组map_x(i,j)和map_y(i,j)的形式写入单独的头文件,包含进ARM端工程中,并将map_x、map_y的数组首地址传递到FPGA端;所述map_x(i,j)和map_y(i,j)分别表示矫正后的图像的(i,j)处像素在原图像中横坐标和纵坐标;
步骤32:传递所述映射表到FPGA端;FPGA端通过AXIMaster端口从map_x、map_y数组地址读取数据并分别存储在两个hls::Mat对象中;
步骤33:缓存待矫正区域;
读取一帧视频缓存到hls::Mat对象src_Mat中;若要校正src_Mat中第r行像素,需要将src_Mat中第r-m到第r+n行像素读取到二维数组tmp_Array中,其中,n和m需根据不同摄像头图像的垂直偏差确定;若输入图像水平尺寸小于1024个像素,则使用ARRAY_PARITION指令将二维数组tmp_Array中的元素存储到寄存器中;
步骤34:校正图像;
当src_Mat对象的前n+m行图像读取到二维数组tmp_Array中后,开始依序从水平方向映射表map_x、垂直方向映射表map_y中读取映射坐标,并将像素值写入结果图像dst_Mat;当第一行像素矫正完成,继续从src_Mat读取一行像素并分别写入到tmp_Array[row%(m+n)][col]位置,其中,row从0开始,每从src_Mat中读取一行,row值加1;
步骤35:重复步骤34直到一帧图像矫正完成;
步骤4:对校正后的图像进行图像裁剪;
使用流水线算法将校正后的图像四周未填充像素数据的行和列所对应的像素有效信号和行同步信号置低,形成新的像素有效信号和行同步信号;
步骤5:对矫正后的图像进行图像拼接;
该步骤包括如下具体操作:
步骤51:拆分图像;
采用遍历hls::Mat对象的方法,拆分出来包含交叉范围的图像,交叉范围以坐标LUij(x0,y0),RBij(x1,y1)表示,其中LUij表示第i个摄像头与第j个摄像头图像间,包含交叉范围的图像的左上角坐标;RBij为第i个摄像头与第j个摄像头图像间,包含交叉范围的图像的右下角坐标;将这部分图像存储到hls::Window对象image_ij_c中;
步骤52:对图像像素点进行积分;
以步骤51中的坐标LUij和RBij为边界,以像素有效信号为驱动时钟,每个时钟上升沿计算一次积分,每个场同步信号上升沿到来时时置零,计算公式如下:
I(x,y)=I(x-1,y)-I(x-1,y–1)+I(x,y–1)+P(x,y);
式中,I(x,y)表示坐标为(x,y)的像素与图像左顶点之间像素的积分,P(x,y)表示图像坐标为(x,y)处的像素值;
步骤53:计算Hessian响应矩阵;
将步骤52中计算的图像积分缓存到hls::Window对象I_W中,将不同尺寸的盒式滤波器数组通过AXIMaster端口读入FPGA端并缓存到hls::Window对象中,使用不同尺寸滤波器与image_ij_c图像进行卷积,计算出各Hessian响应矩阵;使用LOOP_MERGE指令实现同时计算不同滤波器尺寸的Hessian响应矩阵,并将结果分别缓存在hls:Window对象中;
步骤54:寻找特征点;
使用3×3×3的模板分别遍历同一组,相邻3层的Hessian响应矩阵;
若中心点的值大于预设的阈值,且比相邻的26个点的值都大,则选为特征点;同时将此特征点的索引存储到vector对象中,索引信息包括所在的组号、在组中的层号及(x,y)坐标;
步骤55:计算特征点主方向;
从步骤54中的vector对象中读取特征点索引信息,并以每个特征点为中心,用张角为50°~70°的扇形滑动窗口,以60°为步长旋转这个滑动窗口;并对窗口内的图像Harr小波的响应值进行累加,主方向为最大的Harr响应累加值对应的方向;
步骤56:计算特征矢量;
继续以每个特征点为中心,将20s×20s领域沿主方向划分为4×4的子块,每个子块利用尺寸为2s的Harr模板进行响应值计算,s=1.2*L/9,其中L为Hessian矩阵的尺寸,然后对响应值进行统计∑dx、∑|dx|、∑dy、∑|dy|形成特征矢量;
步骤57:特征点匹配;
通过计算两个特征点间特征向量的欧氏距离来确定匹配度,欧式距离越短,代表两个特征点的匹配度越好;此外,如果两个特征点的Hessian矩阵迹正负号相同,代表两个特征点具有相同方向上的对比度变化,如果不同,说明这两个特征点的对比度方向相反,也直接剔除;
步骤58:计算最佳坐标变换矩阵;
随机抽取4对匹配的特征点,利用这4对特征匹配坐标计算出透视矩阵H1,假设待拼接的图像为第i个摄像头与第j个摄像头的图像imagei和imagej的包含交叉区域的图像image_ij_c和image_ji_c,将image_ji_c中所有特征匹配点经过该透视矩阵H1映射到image_ij_c的坐标空间,然后与image_ij_c匹配点实际坐标求欧氏距离;
之后再随机抽取不同的四组特征匹配坐标,再计算透视矩阵H2,再求欧式距离,如此重复多次,直到所有组合方式都用完;最后以欧式距离最小的那个透视矩阵作为最佳透视矩阵,同时将欧氏距离过大的匹配特征点剔除;
步骤59:图像拼接;
使用最佳坐标变换矩阵将imagej的坐标空间转换到imagei的坐标空间,将图像平移并映射到新的hls::Mat对象中完成拼接;
步骤6:将结果图像裁减为预设大小;
步骤7:利用VDMA技术,将拼接完成的图像通过AXI4总线,以乒乓操作写入DDR3存储器相应的帧缓存地址所对应的存储区域中;
步骤8:使用UDP协议通过千兆以太网将DDR3存储器中的图像发送到上位机,发送时,每个数据包包含4字节数据包编号,1024字节图像数据,上位机根据数据包号将数据放入缓存区的固定位置以解决丢包造成整幅画面混乱的问题。
2.根据权利要求1所述的基于同步积分SURF算法的多路视频拼接方法,其特征在于,所述步骤2包括如下具体操作步骤:
步骤21、使用流水线算法统计时钟周期计数器记录的N路视频的第一个场同步信号上升沿到来的时间N1、N2…、Nn、…NN,其中n表示第n个上升沿到来的时间,并比较出最大值Nm;
步骤21、从N路视频数据的第二帧开始,将N路视频数据分别延时Nm-N1、Nm-N2…、Nm-Nn个时钟周期;
步骤23、构建一个N*Pix_W位寄存器buf,其中Pix_W为一个像素点所对应的数据的位数,如果某一路视频需要延时n个时钟周期,n≤N,则在每个驱动时钟的上升沿,将buf内数据左移Pix_W位,同时将新的像素数据写入buf的末尾,buf的输出位段为buf[n*Pix_W:(n-1)*Pix_W]。
3.根据权利要求1所述的基于同步积分SURF算法的多路视频拼接方法,其特征在于,所述步骤4中,使用流水线算法将校正后的图像四周未填充像素数据的行和列所对应的像素有效信号和行、场同步信号置低,形成新的像素有效信号和行、场同步信号。
4.根据权利要求1所述的基于同步积分SURF算法的多路视频拼接方法,其特征在于,首次开机,系统执行一次完整流程后,默认不再执行步骤53至步骤56,使用首次计算出的相关参数拼接图像,若发生相机偏移导致图像拼接错误,用户可选择校准模式,系统将重新执行一次完整流程计算相关参数,进行系统校准。
5.根据权利要求1所述的基于同步积分SURF算法的多路视频拼接方法,其特征在于,所述步骤54中,扇形滑动窗口的张角为70°~50°。
6.根据权利要求1所述的基于同步积分SURF算法的多路视频拼接方法,其特征在于,所述步骤55中,将每步所需的像素相对圆心的坐标索引构建成查找表后,通过将原图像素坐标变换到圆心的相对坐标,即可通过同一个查找表进行窗口滑动。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010583759.2A CN111861883B (zh) | 2020-06-23 | 2020-06-23 | 基于同步积分surf算法的多路视频拼接方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010583759.2A CN111861883B (zh) | 2020-06-23 | 2020-06-23 | 基于同步积分surf算法的多路视频拼接方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111861883A true CN111861883A (zh) | 2020-10-30 |
CN111861883B CN111861883B (zh) | 2022-06-14 |
Family
ID=72988480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010583759.2A Active CN111861883B (zh) | 2020-06-23 | 2020-06-23 | 基于同步积分surf算法的多路视频拼接方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111861883B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112529016A (zh) * | 2020-12-21 | 2021-03-19 | 浙江欣奕华智能科技有限公司 | 一种图像中特征点的提取方法及提取装置 |
CN112529773A (zh) * | 2020-12-17 | 2021-03-19 | 豪威科技(武汉)有限公司 | Qpd图像后处理方法及qpd相机 |
EP4095792A1 (en) * | 2021-05-20 | 2022-11-30 | Nanjing SemiDrive Technology Ltd. | Image distortion correction system and method |
CN116366977A (zh) * | 2023-05-19 | 2023-06-30 | 杭州未名信科科技有限公司 | 一种基于光学增稳的塔机云台全景图像防抖动方法和系统 |
CN116506560A (zh) * | 2023-06-27 | 2023-07-28 | 天津开发区中环系统电子工程股份有限公司 | 一种视频图像实时采集系统及采集方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120169842A1 (en) * | 2010-12-16 | 2012-07-05 | Chuang Daniel B | Imaging systems and methods for immersive surveillance |
CN103856727A (zh) * | 2014-03-24 | 2014-06-11 | 北京工业大学 | 一种多路实时视频拼接处理系统 |
US20150049955A1 (en) * | 2011-11-18 | 2015-02-19 | Metaio Gmbh | Method of matching image features with reference features and integrated circuit therefor |
CN107767336A (zh) * | 2016-08-19 | 2018-03-06 | 中国移动通信有限公司研究院 | 一种图像处理的方法及装置 |
US20180315221A1 (en) * | 2017-05-01 | 2018-11-01 | Lockheed Martin Corporation | Real-time camera position estimation with drift mitigation in incremental structure from motion |
CN110060285A (zh) * | 2019-04-29 | 2019-07-26 | 中国水利水电科学研究院 | 一种基于surf算法的遥感图像配准方法及系统 |
-
2020
- 2020-06-23 CN CN202010583759.2A patent/CN111861883B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120169842A1 (en) * | 2010-12-16 | 2012-07-05 | Chuang Daniel B | Imaging systems and methods for immersive surveillance |
US20150049955A1 (en) * | 2011-11-18 | 2015-02-19 | Metaio Gmbh | Method of matching image features with reference features and integrated circuit therefor |
CN103856727A (zh) * | 2014-03-24 | 2014-06-11 | 北京工业大学 | 一种多路实时视频拼接处理系统 |
CN107767336A (zh) * | 2016-08-19 | 2018-03-06 | 中国移动通信有限公司研究院 | 一种图像处理的方法及装置 |
US20180315221A1 (en) * | 2017-05-01 | 2018-11-01 | Lockheed Martin Corporation | Real-time camera position estimation with drift mitigation in incremental structure from motion |
CN110060285A (zh) * | 2019-04-29 | 2019-07-26 | 中国水利水电科学研究院 | 一种基于surf算法的遥感图像配准方法及系统 |
Non-Patent Citations (10)
Title |
---|
JIANHUI WANG等: "An Embedded System-on-Chip Architecture for Real-time Visual Detection and Matching", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》 * |
LI GUO ZHANG等: "Research of ASM Object Tracking Method Combining Kalman Estimation", 《ADVANCED MATERIALS RESEARCH》 * |
ROBERT HAYWOOD TAGLANG: "Real-time Video Alignment and Fusion Using Feature Detection on FPGA Devices", 《PROQUEST》 * |
杨小乐等: "基于面阵CMOS图像传感器的2×2拼接系统视频电路设计", 《半导体光电》 * |
杨杰: "图像快速拼接方法的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
杨陈晨等: "基于Harris角点的KLT跟踪红外图像配准的硬件实现", 《红外技术》 * |
贺健峰: "多相机硬件系统实现及其关键技术研究", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
赖梓昌: "基于MPCore多核并行化的宽景视觉研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
金梅: "基于深度无关立体视觉模型的机器人控制系统研究", 《中国优秀博硕士学位论文全文数据库(博士) 信息科技辑》 * |
雷飞等: "基于改进SURF的实时视频拼接方法", 《计算机技术与发展》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112529773A (zh) * | 2020-12-17 | 2021-03-19 | 豪威科技(武汉)有限公司 | Qpd图像后处理方法及qpd相机 |
CN112529773B (zh) * | 2020-12-17 | 2024-02-02 | 豪威科技(武汉)有限公司 | Qpd图像后处理方法及qpd相机 |
CN112529016A (zh) * | 2020-12-21 | 2021-03-19 | 浙江欣奕华智能科技有限公司 | 一种图像中特征点的提取方法及提取装置 |
EP4095792A1 (en) * | 2021-05-20 | 2022-11-30 | Nanjing SemiDrive Technology Ltd. | Image distortion correction system and method |
CN116366977A (zh) * | 2023-05-19 | 2023-06-30 | 杭州未名信科科技有限公司 | 一种基于光学增稳的塔机云台全景图像防抖动方法和系统 |
CN116506560A (zh) * | 2023-06-27 | 2023-07-28 | 天津开发区中环系统电子工程股份有限公司 | 一种视频图像实时采集系统及采集方法 |
CN116506560B (zh) * | 2023-06-27 | 2023-09-29 | 天津开发区中环系统电子工程股份有限公司 | 一种视频图像实时采集系统及采集方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111861883B (zh) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111861883B (zh) | 基于同步积分surf算法的多路视频拼接方法 | |
CN108681984B (zh) | 一种3*3卷积算法的加速电路 | |
RU2623806C1 (ru) | Способ и устройство обработки стереоизображений | |
CN102460503B (zh) | 显示源图像的变形版本的设备和方法 | |
US10257456B2 (en) | Hardware friendly virtual frame buffer | |
US11593913B2 (en) | Method and system for correcting a distorted input image | |
US20060176310A1 (en) | Method and apparatus for de-indexing geometry | |
CN108492243B (zh) | 一种基于块处理的图像旋转装置、系统和方法 | |
CN107748723B (zh) | 支持无冲突跨步按块访问的存储方法及访存装置 | |
CN109886866B (zh) | 一种自适应仿射变换处理方法及装置 | |
US20070076511A1 (en) | Method and apparatus for mapping memory | |
WO2020073801A1 (zh) | 一种3d图像处理中数据读写方法及系统、存储介质及终端 | |
CN109146793B (zh) | 一种流水线式图像色度格式转换缩放旋转叠加的系统 | |
GB2269081A (en) | Image processing apparatus | |
CN110211039B (zh) | 一种图像处理方法及其装置 | |
JP2013186624A (ja) | 画像処理装置、および画像処理装置の動作方法 | |
CN108876701B (zh) | 一种基于游程的单次扫描连通域标记方法及其硬件结构 | |
CN105427235A (zh) | 一种图像浏览方法及系统 | |
CN106952215B (zh) | 一种图像金字塔特征提取电路、装置及方法 | |
RU168781U1 (ru) | Устройство обработки стереоизображений | |
US6801209B1 (en) | Method and apparatus for storing data in a block-based memory arrangement | |
CN113900813A (zh) | 一种基于双口ram的盲元填充方法、系统及装置 | |
US10866907B2 (en) | Eviction prioritization for image processing | |
Zhang et al. | A real-time image stitching method based on memory space conversion | |
CN105225199A (zh) | 一种实时等距柱面投影的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |