CN109785265B - 畸变矫正图像处理方法及图像处理装置 - Google Patents
畸变矫正图像处理方法及图像处理装置 Download PDFInfo
- Publication number
- CN109785265B CN109785265B CN201910040943.XA CN201910040943A CN109785265B CN 109785265 B CN109785265 B CN 109785265B CN 201910040943 A CN201910040943 A CN 201910040943A CN 109785265 B CN109785265 B CN 109785265B
- Authority
- CN
- China
- Prior art keywords
- coordinates
- data
- image
- buffer
- pixel
- 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.)
- Active
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
本发明公开一种畸变矫正图像处理方法及装置,该方法包括从映射关系对应表获取多个像素点的坐标,映射关系对应表为输出图像中的像素点坐标与输入图像中的像素点坐标的映射关系对应表;其中,所获取的坐标是以16行为单位垂直扫描获得的坐标;判断用于对目标像素点进行插值计算的多个参考像素点的坐标是否都在已经获取的坐标中,如是,在每一个参考像素点所在的变换单元都有效时,从高速缓存器中读取每一参考像素点的数据并且进行插值计算,获得输出图像每一个像素点的数据。该装置包括垂直扫描模块、判断模块等,用于实现上述的畸变矫正图像处理方法。本发明能够减小图像处理装置的硬件开销,并且提高图像处理效率。
Description
技术领域
本发明涉及图像处理领域,尤其涉及一种图像进行处理的方法以及实现这种方法的装置。
背景技术
随着拍摄技术的发展,相机技术也随之发展,为了计算物体的三维信息,现在的一些相机设置两个镜头,这种相机被称为双目相机。双目相机可以用于计算双目深度信息,双目深度信息提取通过双目相机从两个视角来感知周围环境,获取在不同视角下的图像,根据物体在两视角图像中的像素间的匹配关系,通过投影关系计算出物体的三维信息。
由于计算物体的三维信息时,需要对图像进行大量的处理,例如在两张不同视角的立体图像进行匹配前需要进行极线几何校正,经过极线几何校正后的图像在水平方向是严格的行对齐,空间点在左右图像的成像一定位于同一行,这样可以使得立体匹配的搜索只需要在一行内进行,简化了计算。
通常,极线几何校正的过程包括对图像进行畸变校正。例如,现有的一些镜头,如鱼眼镜头拍摄的图像产生严重的畸变,不符合人眼看到的图像视角,因此需要对畸变的图像进行校正,常规的校正方法是采用逐行光栅扫描的方式对图像进行处理,该方法对硬件的存储资源消耗巨大,例如对多个存储器之间数据传输的带宽要求非常高。同时,因为使用不同的鱼眼镜头所拍摄的图像的畸变程度的不同,从同步随机动态存储器(SDRAM)中取数顺序随机而不确定,在带宽和性能上难以满足对图像高速校正的要求。
由于现在对畸变图像的处理方式主要是以行光栅扫描的方式对整幅图像进行几何校正,需要使用行缓存器(line buffer)进行原始图像数据的加载用于校正计算,该种方法普遍适用性较差,并且还会消耗较大的存储资源,不利于硬件实现,需要使用大量的缓存器,导致硬件电路面积巨大。
发明内容
本发明的主要目的是提供一种减小硬件资源消耗且减小电路板面积的畸变矫正图像处理方法。
本发明的另一目的是提供一种提高图像校正处理速度的畸变矫正图像处理装置。
为了实现上述的主要目的,本发明提供的畸变矫正图像处理方法包括从映射关系对应表获取多个像素点的坐标,映射关系对应表为输出图像中的像素点坐标与输入图像中的像素点坐标的映射关系对应表;其中,所获取的坐标是以行为单位垂直扫描获得的坐标;判断用于对目标像素点进行插值计算的多个参考像素点的坐标是否都在已经获取的坐标中,如是,在每一个参考像素点所在的变换单元都有效时,从高速缓存器中读取每一参考像素点的数据并且进行插值计算,获得输出图像每一个像素点的数据。
由上述方案可见,由于本发明采用垂直扫描的几何校正方式来实现像素点坐标的获取,硬件实现方式简单,无需使用行缓存器,对硬件资源要求较低。并且,所占用的带宽资源较少。
一个优选的方案是,在确认至少一个参考像素点的坐标不在所获取的坐标中时,将缺少的参考像素点的坐标写入缺少像素坐标缓存器以及图像像素坐标缓存器,并向同步随机动态存储器发出数据读取请求。
由此可见,使用缺少像素坐标缓存器以及图像像素坐标缓存器缓存像素坐标,一方面消除了同步随机动态存储器总线的延迟,另一方面两个缓存器的深度可配置,对畸变率更大的图像可通过两个缓存器深度的调整,实现了对不同畸变率图像的适用。
进一步的方案是,向同步随机动态存储器发出数据读取请求前,还执行:确认缺少像素坐标缓存器为非满状态,且图像像素坐标缓存器为非满状态,且所缺少的参考像素点所在的变换单元的计数器的计数值为零。
可见,只有满足上述三个条件才向同步随机动态存储器发送请求,一方面可以避免两个缓存器在数据写满状态仍写入数据而导致数据溢出,另一方面,可以避免变换单元中还存在有用数据的情况下被错误写入新的数据,确保数据写入的正常进行。
更进一步的方案是,每一变换单元设置一个计数器;每次向图像像素坐标缓存器写入坐标时,对应的变换单元的计数器的计数值自加一次;每次从图像像素坐标缓存器读取坐标时,对应的变换单元的计数器的计数值自减一次。
由此可见,通过计数器计算变换单元数据的写入、读出情况,可以确保向变换单元写入新的数据前,该变换单元中的数据都已经被使用完毕,避免错误的将变换单元中的数据清除。
一个优选的方案是,每一变换单元都设置有对应的可读标志;当变换单元的数据写入完毕后,该变换单元的可读标志置位;当变换单元的数据读取完毕后,该变换单元的可读标志复位。
可见,通过设置变换单元的可读标志来标记该变换单元的数据是否已经写入完毕或者读取完毕,可以确保在向变换单元写入新的数据前,该变换单元中的数据都已经使用完毕,并且可以向该变换单元写入新的数据。
进一步的方案是,向同步随机动态存储器发出数据读取请求包括:将数据读取请求的请求信息发送至请求缓存器,再将存储在缓存器的请求信息发送至同步随机动态存储器。
由此可见,使用请求缓存器来缓存请求信息,可以集中的向同步随机动态存储器发送请求信息,并且可以提前对请求信息进行缓存,提高数据发送、读取效率。
为了实现上述的另一目的,本发明还提供的畸变矫正图像处理装置包括:垂直扫描模块,从映射关系对应表获取以行为单位垂直扫描获得的多个像素点的坐标,映射关系对应表为输出图像中的像素点坐标与输入图像中的像素点坐标的映射关系对应表;判断模块,用于判断用作对目标像素点进行插值计算的多个参考像素点的坐标是否都在已经获取的坐标中;数据读取模块,用于确认多个参考像素点的坐标都在已经获取的坐标中,且在每一个参考像素点所在的变换单元都有效时,从高速缓存器中读取每一参考像素点的数据并且进行插值计算,获得输出图像每一个像素点的数据。
由上述方案可见,采用垂直扫描的几何校正方式来获取像素点坐标,相比起按行扫描的方式,硬件实现方式简单,无需使用行缓存器,对硬件资源要求较低。并且,所占用的带宽资源较少。
一个优选的方案是,图像处理装置还包括缺少像素坐标缓存器以及图像像素坐标缓存器;缺少像素坐标缓存器用于在确认至少一个参考像素点的坐标不在获取的坐标中时,存储从判断模块输出的缺少的参考像素点的坐标;图像像素坐标缓存器用于存储从判断模块输出的参考像素点的坐标。
由上述方案可见,使用缺少像素坐标缓存器以及图像像素坐标缓存器缓存像素坐标,可以消除同步随机动态存储器总线的延迟,从而提高从同步随机动态存储器读取数据的效率。
进一步的方案是,缺少像素坐标缓存器以及图像像素坐标缓存器的存储深度可根据输入图像的畸变率设置。
可见,两个缓存器的深度根据输入图像的畸变率来配置,对畸变率更大的图像可通过两个缓存器深度的调整,实现了对不同畸变率图像的适用,图像处理装置的适用范围更广。
更进一步的方案是,该图像处理装置还包括请求缓存器,用于存储判断模块输出的数据读取请求的请求信息,请求信息可被发送至同步随机动态存储器。
由此可见,使用请求缓存器来缓存请求信息,可以提前对请求信息进行缓存,从而在向同步随机动态存储器发送请求信息前提前准备好需要发送的请求信息,提高数据发送、读取效率。
附图说明
图1是应用本发明畸变矫正图像处理方法实施例的输入图像扫描示意图。
图2是本发明畸变矫正图像处理方法实施例的流程图的第一部分。
图3是本发明畸变矫正图像处理方法实施例的流程图的第二部分。
图4是本发明畸变矫正图像处理装置实施例的结构框图。
图5是本发明畸变矫正图像处理装置实施例中多个变换单元的示意图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明的畸变矫正图像处理方法应用在各种拍摄设备上,如照相机、监控设备等,也可以应用在具有拍照功能的移动设备上,如智能手机、平板电脑或者行车记录仪等电子设备上。本发明的畸变矫正图像处理装置可以应用在各种拍摄设备上。
本发明的畸变矫正图像处理方法是一种应用高速缓存器(cache)实现的几何校正的畸变矫正图像处理方法,畸变矫正图像处理装置是实现上述方法的硬件架构。本发明的主要构思是采用逆向映射实现输出像素和原始输入像素的映射关系,对于输出图像的像素点,逆向映射指定了输出像素点来自输入图像的哪些位置上的像素点,这样的映射关系与相机特性有关,是一种固定的映射关系,因此在相机的镜头位置确定后,无需实时计算。
畸变矫正图像处理方法实施例:
应用本实施例的方法首先是通过计算机程序离线将该映射关系计算得到一张缩小的映射关系对应表(LUT)并存储,当硬件需要对图像进行处理时,只需要通过读取映射关系对应表表并对映射关系对应表进行插值放大得到一一对应的映射关系即可。由于通过计算机程序实现计算的过程是现有的技术,在此不展开论述。应用本实施例的硬件结构中最小存储单元为变换单元(TU),一个变换单元可以存储64字节的原始图像数据,变换单元组成高速缓存器cache buffer。
本实施例是基于映射关系对应表获取的像素点的坐标来实现的,参见图1,本实施例是按16行为单位生成垂直扫描的输出坐标,最后如果存在不足16行的情况,按图像高度除16的余数为单位生成垂直扫描的输出坐标。因此,本实施例中,首先需要确定输出图像中每一个像素点的行坐标对应于输入图像中的哪些行坐标的像素,并确定输出图像的每一个像素点的列坐标对应于输入图像中的哪些列坐标的像素。在确定输出图像与输入图像之间的像素的对应关系以后,形成一个映射关系对应表,然后由图像处理装置根据映射关系对应表的数据对输入图像的数据进行计算、处理,如进行双线性插值进行,从而获得输出的图像。
优选的,本实施例中,映射关系对应表是一个相对原始图像尺寸缩小一定倍率的映射表,具体的,用来缓存映射关系对应表表的缓存器为lut_sram,该缓存器lut_sram采用单口随机存储器,采用双线性插值对映射关系对应表进行解压得到输入图像各个像素点与输出图像的像素点坐标一一映射关系。
参见图2,本实施例首先执行步骤S1,从映射关系对应表获取多个像素点的坐标。由于映射关系对应表存储在同步随机动态存储器中,因此,步骤S1就是从同步随机动态存储器中读取映射关系对应表并且获取多个像素点的坐标。通常,映射关系对应表表是经过压缩的表格,因此,从同步随机动态存储器读取映射关系对应表后,需要对读取的数据进行解压,并通过双线性插值得到输出坐标对应的原始图像坐标,将得到的原始图像坐标输入一个用于存储图像坐标的缓存器中,该缓存器被命名为src_coord_buf_fifo。优选的,缓存器src_coord_buf_fifo由先进先出缓存器(FIFO,First Input First Output)构成,缓存器的深度为16,即最多能够存储16个数据。当缓存器src_coord_buf_fifo被写满数据以后,将停止双线性插值计算,直到该缓存器被清空再次写入新的坐标。
由于几何畸变的图像在垂直方向呈现的规律为抛物线,即图像的畸变是两端变化快,中间变化缓慢。采用垂直扫描的方式,在图像四周和中间遇到变换单元的边界时,大多数取数情况都是连续的,因此实现了连续向同步随机动态存储器发起数据读取的请求,可以尽量避免掉同步随机动态存储器的更新时间。本实施例采用的垂直扫描不同于光栅扫描,并不需要在更换数据时每次都缓存一整行的数据。由于采用光栅扫描的几何校正时,双线性插值时至少需要上下两行的数据,因此至少需要缓存两行的原始图像,而且,如果只缓存两行的数据,在图像四周的计算效率较低,为了保证计算效率数据更新的策略上会变得复杂。因此,垂直扫描的方式可以在图像四周和中间遇到变换单元的边界时,发起向同步随机动态存储器数据读取的请求连续密集,并且不需要使用行缓存器作为缓存,减少硬件面积开销,这样硬件实现简单。
在获取映射关系对应表的坐标后,执行步骤S2,判断用于对当前进行处理的目标像素点的四个参考像素点的坐标是否都命中,如是,执行步骤S3,否则,执行步骤S11。由于对某一个像素点进行双线性插值计算需要使用上下两行共四个相关的像素点的数据作为参考,被计算的像素点称为目标像素点,而所使用的作为参考的像素点称为参考像素点。
步骤S2中,对从同步随机动态存储器所读取的像素点的坐标进行判断,判断当前计算的目标像素点的四个参考像素点的坐标是否都命中,也就是从同步随机动态存储器所读取的像素点的坐标中,是否包含有四个参考像素点的坐标,如果命中,表示高速缓存器cache buffer中存有所需的数据,可以直接读取;如果没有命中,则需要向同步随机动态存储器发起读数据的请求。
由于从同步随机动态存储器所读取的数据是写入到变换单元中的,因此,如果当前一个变换单元的数据写入完毕后,将该变换单元的可读标志置位,并且在该变换单元的数据被读取完毕后,将该变换单元可读标志复位。其中,当某一个变换单元的可读标志置位以后,表示该变换单元的数据可被读取,即该变换单元有效,如果该变换单元的可读标志复位,表示该变换单元的数据不可被读取,即该变换单元无效。
具体的,当缓存器src_coord_buf_fifo为非空状态时,即缓存器src_coord_buf_fifo中存储有数据时,从缓存器src_coord_buf_fifo中读取原始图像的像素点的坐标,进行比较判断,判断目标像素点进行几何校正双线性插值所需的四个参考像素点的坐标是否都命中。本实施例中,高速缓存器cache buffer由2×32个变换单元组成,水平方向两个为一组,共32组。步骤S2的判断方法是从缓存器src_coord_buf_fifo中读出的原始图像像素点的坐标后,对像素点的坐标进行解析。假设像素点的垂直坐标为y_coord,水平坐标为x_coord,则y_coord除以32得到变换单元的行索引tu_ver_idx,x_coord除以64得到变换单元的列索引tu_hor_idx。
此外,本实施例中,为每一个变换单元设置一个附加的寄存器,该寄存器为16位(bit)的寄存器,称为tu_coord_reg,参考像素点的坐标没有命中时,将所缺少的参考像素点的坐标{y_coord[10:0],x_coord[10:6]}赋值给变换单元对应的寄存器tu_coord_reg。因此,步骤S2的判断是将坐标{y_coord[10:0],x_coord[10:6]}和寄存器tu_coord_reg所存储的数据进行比较。
进一步的,为每一个变换单元设置一个附加的计数器寄存器,该计数器称为tu_cnt_reg,在坐标{y_coord[10:0],x_coord[10:6]}和寄存器tu_coord_reg所存储的数值相等时,并且对应的计数器tu_cnt_reg的计数值不为0,则说明变换单元被命中。
由于从缓存器src_coord_buf_fifo中读取坐标进行解析时,因为逆向映射后会存在超过图像范围的坐标点,因此需要判断所读取的坐标值是否超过图像尺寸范围,水平坐标超过图像宽度的直接裁剪到图像宽度,垂直坐标超过图像高度的直接裁剪到图像高度。假设pic_width表示图像宽度,pic_height表示图像高度,src_x_coord表示从缓存器src_coord_buf_fifo中读出的x方向坐标,src_y_coord表示从缓存器src_coord_buf_fifo中读出的y方向坐标。几何校正需要上下相邻的四个参考像素点的值参与计算,因此需要的四个参考像素点坐标可以表示为:
x_coord00=src_x_coord,y_coord00=src_y_coord
x_coord01=src_x_coord+1,y_coord01=src_y_coord
x_coord10=src_x_coord,y_coord10=src_y_coord+1
x_coord11=src_x_coord+1,y_coord11=src_y_coord+1
如果水平坐标src_x_coord超过图像宽度,直接将四个水平坐标赋值为pic_width,如果垂直坐标src_x_coord超过图像高度,直接将四个垂直坐标赋值为pic_height。如果水平坐标src_x_coord刚好等于图像宽度,则将x_coord01和x_coord11赋值为src_x_coord,如果垂直坐标src_y_coord刚好等于图像的高度,则将y_coord10和y_coord11赋值为图像高度。其他情况按上述四个点的表示。
通过上述转换后,可以得到对应的变换单元的索引为:
tu_line_idx_00=y_coord00[4:0]
tu_line_idx_01=y_coord01[4:0]
tu_line_idx_10=y_coord10[4:0]
tu_line_idx_11=y_coord11[4:0]
tu_row_idx_00=x_coord00[6]
tu_row_idx_01=x_coord01[6]
tu_row_idx_10=x_coord10[6]
tu_row_idx_11=x_coord11[6]
其中tu_line_idx表示变换单元的行索引,tu_row_idx表示变换单元的列索引,列索引表示属于水平方向的哪一个变换单元。因为在映射的过程中,可能会存在坐标点刚好需要跨水平方向两个变换单元读取数据,如果出现这种情况,则需要读取两个连续的变换单元数据。至此,变换单元索引可以完整表示为:
tu_idx_00={tu_line_idx_00,tu_row_idx_00}
tu_idx_01={tu_line_idx_01,tu_row_idx_01}
tu_idx_10={tu_line_idx_10,tu_row_idx_00}
tu_idx_11={tu_line_idx_11,tu_row_idx_11}
得到变换单元的索引后,则可以进行比较,参与比较的信号为
camp_00={y_coord00[10:0],x_coord00[10:6]}
camp_01={y_coord01[10:0],x_coord01[10:6]}
camp_10={y_coord10[10:0],x_coord10[10:6]}
camp_11={y_coord11[10:0],x_coord11[10:6]}
由于每次读取同步随机动态存储器的数据都是按64字节为最小单元读取的,所以水平坐标参与比较的是x_coord/64的值。因此,将camp_00、camp_01、camp_10、camp_11对应和tu_coord_reg[tu_idx_00]、tu_coord_reg[tu_idx_01]、tu_coord_reg[tu_idx_10]、tu_coord_reg[tu_idx_11]进行比较,如果都相等,则表示该变换单元被命中,否则不命中。
缺少相应的参考像素点的数据是常见的,本实施例中,对缺少参考像素点的情况进行区分,如图5所示,图中具有阴影线的像素点为缺少的参考像素点,缺少参考像素点的情况可能出现在变换单元非边界处,这种情况共有3种,如缺少上一行两个参考像素点的数据,如图5的标号32所示,或者缺少下一行两个参考像素点的数据,如图5的标号33所示,又或者缺少四个参考像素点的数据,如图5的标号31所示。而缺少参考像素点的情况也可能出现在变换单元边界处,这种情况共有15种,如缺少上一行一个或者两个参考像素点的数据、缺少下一行一个或者两个参考像素点的数据等,如图5中标号34、35的是其中两种情况。对缺少参考像素点的情况进行细分是为了在缺少参考像素点数据的时候,只读取缺少的参考像素点的变换单元的数据,不会带来多余的数据读取,减少从同步随机动态存储器读取数据的数据量,可以减少占用的带宽。
如果步骤S2的判断结果为是,则表示四个参考像素点的坐标都命中,则执行步骤S3,将四个参考像素点的坐标写入到图像像素坐标缓存器coord_buf_fifo中,与此同时,将对应变换单元的计数器tu_cnt_reg的计数值加1,即自加一次。
然后执行步骤S4,判断图像像素坐标缓存器是否为非空状态,如是,执行步骤S6,否则,执行步骤S5,等待图像像素坐标缓存器的状态变为非空状态。
执行步骤S6时,读取图像像素坐标缓存器coord_buf_fifo所存储的坐标,并对所读取的坐标进行解析,例如查找出相应坐标的像素点的数据存储在哪一个变换单元中。然后,执行步骤S7,判断四个参考像素点对应的变换单元是否均为有效。由于四个参考像素点的数据可能分别存储在不同的变换单元中,而对目标像素点进行双线性插值计算时,需要使用四个参考像素点的数据,因此,在进行双线性插值计算前,首先需要确定四个参考像素点对应的变换单元是否均为有效。本实施例中,变换单元有效是变换单元的有效标志是否为1,如果有效标志位1,则该变化单元有效,如果有效标志位0,则该变化单元无效。可选的,变换单元可以设置一个可读标志,如果可读标志置位,表示该变换单元存储有有效的数据,可以被读取,如果可读标志复位,则表示该变换单元没有存储有效数据,该变换单元不可以被读取。
如果步骤S7的判断结果为否,表示该变换单元不可被读取,则执行步骤S8,等待四个参考像素点对应的变换单元的可读标志都置位,然后执行步骤S9。当然,如果步骤S7的判断结果为是,表示四个参考像素点对应的变换单元都有效,则直接执行步骤S9,读取高速缓存器cache buffer中的数据,将四个参考像素点的数据都读取出来并且进行双线性插值计算,获得目标像素点的输出数据。
如果步骤S2的判断结果为否,表示四个参考像素点中,至少有一个参考像素点是缺失的,则执行步骤S11,如图3所示,确认缺少的是哪一个参考像素点,即判断缺少像素点的情况。例如,判断是左上角的像素点缺少了,还是右下角的像素点缺少。然后,执行步骤S12,将缺少的参考像素点的坐标写入缺少像素坐标缓存器miss_coord_buf_fifo,例如,缺少的参考像素点的坐标是{y_coord[10:0],x_coord[10:6]},则将该坐标赋值给对应变换单元的寄存器tu_coord_reg,用于下次的判断。然后将缺少的参考像素点的坐标写进缺少像素坐标缓存器miss_coord_buf_fifo。
接着,执行步骤S13,将缺少的参考像素点的坐标写进图像像素坐标缓存器coord_buf_fifo中,用于对从同步随机动态存储器读取的原始图像数据并写入高速缓存器cachebuffer的地址。然后,执行步骤S14,向同步随机动态存储器发出数据读取请求。
本实施例中,在判断模块内部发起向同步随机动态存储器的数据读取请求有一套握手机制,也就是在发送该请求前,需要确认同时满足以下三个条件:缺少像素坐标缓存器miss_coord_buf_fifo为非满状态、图像像素坐标缓存器coord_buf_fifo为非满状态、缺少的像素点对应的变换单元的计数器的计数值都为0。只有同时满足这三个条件时,才会发送数据读取请求,如果上述三个条件有任意一个不满足,都不发送数据读取请求。
如果在发送数据读取请求时,缺少的参考像素点对应的变换单元的计数器的计数值不为0,表示该图像像素坐标缓存器coord_buf_fifo中还留有没有被使用的坐标,如果此时发出数据读取请求就会造成该变换单元中原先有效的数据被新数据覆盖的情况,正是为了避免这种现象发生,才设定需要满足上述的三种情况才可以发送数据读取请求。
本实施例中,向同步随机动态存储器发送的数据读取请求包括的内容有:请求读取像素点的数量以及请求读取像素点的地址。请求读取像素点的数量表示需要读多少个64字节数据,由于最不理想的情况是四个参考像素点都未命中,此时需要读取四个64字节的数据。请求读取像素点的地址表示需要读原始图像的哪一行、哪一个64字节的数据,其中64字节数据的位置信息由x_coord[10:6]=x_coord[10:0]/64表示。
在发送数据读取请求以后,执行步骤S15,判断是否接收到数据读取请求响应,例如判断是否接收到mem_rd_req_ack的信号,如果接收到该信号,表示可以读取同步随机动态存储器的数据。此时,在信号mem_rd_req_ack为高电平的时候将对应的变换单元的计数器tu_cnt_reg的计数值加1。然后执行步骤S17,读取同步随机动态存储器的数据,并且将所读取的数据对应的坐标写进缺少像素坐标缓存器miss_coord_buf_fifo和图像像素坐标缓存器coord_buf_fifo。
如果步骤S15的判断结果为否,表示当前的条件未满足发送数据读取请求的条件,即缺少像素坐标缓存器miss_coord_buf_fifo不是非满状态、或者图像像素坐标缓存器coord_buf_fifo不是非满状态、或者缺少的像素点对应的变换单元的计数器的计数值不都为0,则执行步骤S16,等待满足发送数据读取请求的条件时机,并在满足条件以后,发送数据读取请求。
优选的,在判断出现缺少参考像素点并且需要向动态同步随机存储器发送数据读取请求时,并不是马上发出数据读取请求,而是将请求的信息,包括需要读取的像素数量、位置等信息,缓存在一个请求缓存器req_fifo中,该请求缓存器req_fifo的深度为32,即请求缓存器req_fifo的最大能够存储32个数据。当数据写入请求缓存器req_fifo之后,可以继续进行下一次的命中与否的判断,这样操作的目的是为了避免总线响应时间过长的问题,将是否命中的判断和发送数据读请求的操作分离开来,达到提升向同步随机动态存储器读取数据效率的目的。只要请求缓存器req_fifo为非空状态,即可从请求缓存器req_fifo里面读取请求的信息发出数据读取的请求。
从同步随机动态存储器读取的数据写入到高速缓存器cache buffer中,为了提高从同步随机动态存储器读取数据的效率,需要在同步随机动态存储器数据到来前就要准备好写入到高速缓存器cache buffer的地址,因此需要提前从缺少像素坐标缓存器miss_coord_buf_fifo读取地址数据。为了实现提前读取地址,对同步随机动态存储器返回的有效信号和数据进行延迟处理,这样在同步随机动态存储器在数据到来时,高速缓存器cachebuffer的地址信息已经准备好。
由于同步随机动态存储器的数据需要写入到高速缓存器cache buffer中,由于高速缓存器cache buffer由随机存储器(sram)组成,因为发起同步随机动态存储器的请求是按顺序的。而存储缺少像素点的坐标的缺少像素坐标缓存器miss_coord_buf_fifo是由先进先出存储器组成,因此,当读同步随机动态存储器的数据返回时,直接从缺少像素坐标缓存器miss_coord_buf_fifo中读数据用于写高速缓存器cache buffer的地址。将数据写进高速缓存器cache buffer对应的变换单元中。并且,每一个变换单元对应带有64个指示数据有效的有效信号,当某一条数据写入到变换单元后,则将该变换单元对应的指示有效的有效信号置1,即置位。当对该变换单元发起读同步随机动态存储器的请求时,说明该变换单元的数据可以被更新,则将该变换单元指示有效的有效信号置0。
优选的,每一个变换单元的数据写完后会产生一个完成信号tu_wr_end,该信号会触发拉高该变换单元有效信号。在向同步随机动态存储器发送数据读取请求时,会将对应变换单元的有效信号置为0,即复位。这样每次读取高速缓存器cache buffer的数据时,都会判断相应的四个变换单元的信号是否都为有效信号,保证了从变换单元里面取数时都是当前需要的正确的数据。
因此,在执行步骤S17后,将执行步骤S18,判断变换单元的数据是否写入完毕,即是否产生了完成信号tu_wr_end,如是,则执行步骤S20,更新该变换单元的有效标志,否则,执行步骤S19,等待该变换单元的数据写入完毕,并在数据写入完毕以后执行步骤S20。
在变换单元的数据都写入完毕以后,执行步骤S7,并在确定四个参考像素点对应的变换单元均为有效时,进行双线性插值计算。由于本实施例的双线性插值每次校正需要读取上下两行相邻四个原始像素点的数据,并且在同步随机动态存储器的数据缓存阶段已经将有效数据对应变换单元中,且对应的变换单元的有效信号的置为1,即有效。因此插值计算的过程相对比较简单,只需要在读取高速缓存器cache buffer数据前判断对应的四个变换单元的有效信号是否为1,如果都为1,则可以读取数据进行计算,否则需要等待直到四个变换单元的有效信号都为1。并且,计算完一个目标像素点对应的四个参考像素点的数据之后,可继续读取图像像素坐标缓存器coord_buf_fifo的数据并进行下一个目标像素点的计算,直到图像所有像素点都计算完毕。
本实施例中,使用高速缓存器cache buffer作为数据预取的通道,因此涉及到数据更新替换的问题。当前变换单元的数据可以被替换的原则是:当前变换单元缓存的有效数据都已经被使用完毕。因此,每一个变换单元都带有一个计数器,当该计数器为0表示当前变换单元数据被使用完毕,可以被新的数据替换。每次向图像像素坐标缓存器coord_buf_fifo写入一个坐标信息,对相应的四个变换单元的计数器的计数值加1,每次从图像像素坐标缓存器coord_buf_fifo读取一个坐标信息时,对相应的四个变换单元的计数器的计数值减1。因此,在缺少参考像素点的时候,只有在对应变换单元的计数器的计数值为0的时候才会发出数据读取的请求,否则,可能会造成旧的有效数据被新的数据覆盖。
畸变矫正图像处理装置实施例:
参见图4,本实施例具有垂直扫描模块11、判断模块12、请求缓存器14、缺少图像坐标缓存器15、图像像素坐标缓存器16、同步随机动态存储器20、写入控制模块21、读取控制模块22以及高速缓存器23。其中,垂直扫描模块11从映射关系对应表获取以行为单位垂直扫描获得的多个像素点的坐标,也就是为几何校正提供按垂直扫描输出的坐标。
判断模块12作为畸变矫正图像处理装置的主体部分,用于判断对目标像素点进行插值计算所使用的四个参考像素点是否都命中,即判断四个参考像素点的坐标是否都已经读取进来,如果在四个参考像素点都命中的情况下,向图像像素坐标缓存器16写入四个参考像素点的坐标。如果四个参考像素点有任意一个没有命中,则对缺少像素点的情况进行区分,并且将缺少的像素点的坐标写入到缺少像素坐标缓存器15中。
然后,判断模块12还判断是否满足向同步随机动态存储器20发送数据读取请求的条件,如果满足条件,则向同步随机动态存储器20发送数据读取请求。当然,该请求首先写入到请求缓存器14中,再由请求缓存器14发送至同步随机动态存储器20。
优选的,为了将命中与否的判断和向同步随机动态存储器20发送的数据读取请求分离采用的请求缓存器14,该请求缓存器14可以根据原始图像畸变率的大小灵活配置,例如可以设置为32个字节或者其他数值。此外,为了消除总线读请求和数据返回的延迟,采用的图像像素坐标缓存器16也可以根据总线延迟的大小灵活配置。
同步随机动态存储器20的数据将被写入到高速缓存器23中,写入控制模块21用于实现对高速缓存器23数据写入的控制,而读取控制模块22实现对高速缓存器23数据读取的控制。本实施例中,高速缓存器23包括多个变换单元,每一个变换单元具有一个计数器以及一个寄存器,并且每一个变换单元都可以设置一个可读标志以及有效标志,在数据写入、读取过程中通过计数器的计数值、寄存器来实现数据写入、读取的控制。
由于本发明采用垂直扫描的方式获取图像的像素点,相比起现有的针对整幅图像的按光栅扫描的几何校正处理技术,本发明的硬件实现方式简单,无需使用行缓存器,对硬件资源要求较低。另一方面,请求缓存器的使用一方面消除了同步动态随机存储器总线的延迟,另一方面缓存器深度可配置,对畸变率更大的图像可通过多个缓存器深度的调整,实现了对不同畸变率图像的适用。此外,发明还对缺少的参考像素点的情况的细分,降低了畸变校正对同步随机动态存储器原始图像读取的冗余度,达到了减少带宽的目的。
当然,上述的方案只是本发明优选的实施方案,实际应用是还可以有更多的变化,例如,不设置请求缓存器,直接将数据读取请发送至同步随机动态存储器,或者,多个缓存器的深度固定不可配置,这些改变都不影响本发明的实施,也应该包括在本发明的保护范围内。
Claims (7)
1.畸变矫正图像处理方法,包括:
从映射关系对应表获取多个像素点的坐标,所述映射关系对应表为输出图像中的像素点坐标与输入图像中的像素点坐标的映射关系对应表;
其特征在于:
所获取的坐标是以行为单位垂直扫描获得的坐标;
判断用于对目标像素点进行插值计算的多个参考像素点的坐标是否都在已经获取的坐标中,如是,将多个参考像素点的坐标写入到图像像素坐标缓存器,判断图像像素坐标缓存器是否为非空状态,如为非空状态,读取所述图像像素坐标缓存器所存储的坐标,并对所读取的坐标进行解析,在每一个所述参考像素点所在的变换单元都有效时,从高速缓存器中读取每一所述参考像素点的数据并且进行插值计算,获得所述输出图像每一个像素点的数据;
在确认至少一个所述参考像素点的坐标不在所获取的坐标中时,将缺少的所述参考像素点的坐标写入缺少像素坐标缓存器以及图像像素坐标缓存器,并向同步随机动态存储器发出数据读取请求;
其中,向所述同步随机动态存储器发出数据读取请求前,还执行:确认所述缺少像素坐标缓存器为非满状态,且所述图像像素坐标缓存器为非满状态,且所缺少的所述参考像素点所在的变换单元的计数器的计数值为零。
2.根据权利要求1所述的畸变矫正图像处理方法,其特征在于:
每一所述变换单元设置一个所述计数器;
每次向所述图像像素坐标缓存器写入坐标时,对应的所述变换单元的计数器的计数值自加一次;每次从所述图像像素坐标缓存器读取坐标时,对应的所述变换单元的计数器的计数值自减一次。
3.根据权利要求1或2所述的畸变矫正图像处理方法,其特征在于:
每一所述变换单元都设置有对应的可读标志;
当所述变换单元的数据写入完毕后,该变换单元的可读标志置位;当所述变换单元的数据读取完毕后,该变换单元的可读标志复位。
4.根据权利要求1或2所述的畸变矫正图像处理方法,其特征在于:
向所述同步随机动态存储器发出数据读取请求包括:将所述数据读取请求的请求信息发送至请求缓存器,再将存储在所述请求缓存器的所述请求信息发送至所述同步随机动态存储器。
5.畸变矫正图像处理装置,其特征在于,包括:
垂直扫描模块,从映射关系对应表获取以行为单位垂直扫描获得的多个像素点的坐标,所述映射关系对应表为输出图像中的像素点坐标与输入图像中的像素点坐标的映射关系对应表;
判断模块,用于判断用作对目标像素点进行插值计算的多个参考像素点的坐标是否都在已经获取的坐标中;
数据读取模块,用于确认多个所述参考像素点的坐标都在已经获取的坐标时,将多个参考像素点的坐标写入到图像像素坐标缓存器,判断图像像素坐标缓存器是否为非空状态,如为非空状态,读取所述图像像素坐标缓存器所存储的坐标,并对所读取的坐标进行解析,且在每一个所述参考像素点所在的变换单元都有效时,从高速缓存器中读取每一所述参考像素点的数据并且进行插值计算,获得所述输出图像每一个像素点的数据;
该畸变矫正图像处理装置还包括缺少像素坐标缓存器以及图像像素坐标缓存器;
在确认至少一个所述参考像素点的坐标不在所获取的坐标中时,将缺少的所述参考像素点的坐标写入所述缺少像素坐标缓存器以及所述图像像素坐标缓存器,并向同步随机动态存储器发出数据读取请求;
其中,向所述同步随机动态存储器发出数据读取请求前,还执行:确认所述缺少像素坐标缓存器为非满状态,且所述图像像素坐标缓存器为非满状态,且所缺少的所述参考像素点所在的变换单元的计数器的计数值为零。
6.根据权利要求5所述的畸变矫正图像处理装置,其特征在于:
所述缺少像素坐标缓存器以及图像像素坐标缓存器的存储深度可根据输入图像的畸变率设置。
7.根据权利要求5或6所述的畸变矫正图像处理装置,其特征在于,还包括:
请求缓存器,用于存储所述判断模块输出的数据读取请求的请求信息,所述请求信息可被发送至同步随机动态存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040943.XA CN109785265B (zh) | 2019-01-16 | 2019-01-16 | 畸变矫正图像处理方法及图像处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040943.XA CN109785265B (zh) | 2019-01-16 | 2019-01-16 | 畸变矫正图像处理方法及图像处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109785265A CN109785265A (zh) | 2019-05-21 |
CN109785265B true CN109785265B (zh) | 2022-11-11 |
Family
ID=66500736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910040943.XA Active CN109785265B (zh) | 2019-01-16 | 2019-01-16 | 畸变矫正图像处理方法及图像处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109785265B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112308787B (zh) * | 2019-08-02 | 2024-05-07 | 北京地平线机器人技术研发有限公司 | 畸变矫正方法及装置、电子设备 |
CN111984548B (zh) * | 2020-07-22 | 2024-04-02 | 深圳云天励飞技术股份有限公司 | 神经网络计算装置 |
EP4139804A1 (en) * | 2020-08-25 | 2023-03-01 | Google LLC | Color management caching for display processing pipelines |
CN114648449A (zh) * | 2020-12-18 | 2022-06-21 | 华为技术有限公司 | 一种图像重映射方法以及图像处理装置 |
CN117057982B (zh) * | 2023-10-11 | 2024-01-26 | 北京地平线信息技术有限公司 | 对图像进行扭曲变换的集成电路及电子设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06268925A (ja) * | 1993-03-17 | 1994-09-22 | Sharp Corp | 歪補正装置 |
CN102196221A (zh) * | 2010-03-01 | 2011-09-21 | 精工爱普生株式会社 | 图像处理装置、投影仪及图像处理方法 |
CN102714696A (zh) * | 2010-11-11 | 2012-10-03 | 松下电器产业株式会社 | 图像处理装置、图像处理方法、程序及摄影装置 |
CN105354809A (zh) * | 2015-12-05 | 2016-02-24 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于输出图像像素位置索引的预畸变方法和装置 |
JP2017017672A (ja) * | 2015-07-01 | 2017-01-19 | 株式会社リコー | 画像処理装置、画像処理方法および画像処理プログラム |
CN106713755A (zh) * | 2016-12-29 | 2017-05-24 | 北京疯景科技有限公司 | 全景图像的处理方法及装置 |
CN107004261A (zh) * | 2015-09-15 | 2017-08-01 | 华为技术有限公司 | 图像畸变校正方法及装置 |
CN107424126A (zh) * | 2017-05-26 | 2017-12-01 | 广州视源电子科技股份有限公司 | 图像校正方法、装置、设备、系统及摄像设备和显示设备 |
CN107945130A (zh) * | 2017-11-28 | 2018-04-20 | 华南理工大学 | 一种光固化3d打印机的投影畸形矫正方法 |
CN108564551A (zh) * | 2018-04-25 | 2018-09-21 | 珠海全志科技股份有限公司 | 鱼眼图像处理方法及鱼眼图像处理装置 |
-
2019
- 2019-01-16 CN CN201910040943.XA patent/CN109785265B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06268925A (ja) * | 1993-03-17 | 1994-09-22 | Sharp Corp | 歪補正装置 |
CN102196221A (zh) * | 2010-03-01 | 2011-09-21 | 精工爱普生株式会社 | 图像处理装置、投影仪及图像处理方法 |
CN102714696A (zh) * | 2010-11-11 | 2012-10-03 | 松下电器产业株式会社 | 图像处理装置、图像处理方法、程序及摄影装置 |
JP2017017672A (ja) * | 2015-07-01 | 2017-01-19 | 株式会社リコー | 画像処理装置、画像処理方法および画像処理プログラム |
CN107004261A (zh) * | 2015-09-15 | 2017-08-01 | 华为技术有限公司 | 图像畸变校正方法及装置 |
CN105354809A (zh) * | 2015-12-05 | 2016-02-24 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于输出图像像素位置索引的预畸变方法和装置 |
CN106713755A (zh) * | 2016-12-29 | 2017-05-24 | 北京疯景科技有限公司 | 全景图像的处理方法及装置 |
CN107424126A (zh) * | 2017-05-26 | 2017-12-01 | 广州视源电子科技股份有限公司 | 图像校正方法、装置、设备、系统及摄像设备和显示设备 |
CN107945130A (zh) * | 2017-11-28 | 2018-04-20 | 华南理工大学 | 一种光固化3d打印机的投影畸形矫正方法 |
CN108564551A (zh) * | 2018-04-25 | 2018-09-21 | 珠海全志科技股份有限公司 | 鱼眼图像处理方法及鱼眼图像处理装置 |
Non-Patent Citations (4)
Title |
---|
双目数字图像实时预畸变校正技术研究;廖书红 等;《电光与控制》;20180331;第25卷(第05期);第109-114页 * |
基于FPGA的双目相机研制;李正阳;《中国优秀硕士学位论文全文数据库 信息科技辑》;20180315(第03期);第1-79页 * |
基于非线性方程的鱼眼图像畸变矫正方法研究;魏利胜 等;《电子测量与仪器学报》;20151130;第29卷(第11期);第1584-1593页 * |
面向视频流的畸变矫正算法的FPGA实现;徐晓 等;《电视技术》;20130702;第37卷(第13期);第53-55页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109785265A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109785265B (zh) | 畸变矫正图像处理方法及图像处理装置 | |
US9262807B2 (en) | Method and system for correcting a distorted input image | |
WO2022218253A1 (zh) | 图像块的处理方法、装置、电子设备、可读存储介质 | |
US9942510B2 (en) | Method and device for processing input image data | |
JP2001101396A (ja) | 画像歪み補正処理装置および方法、並びに画像歪み補正処理を行うプログラムを格納した媒体 | |
CN110958362A (zh) | 基于分块查表的图像校正系统及其方法 | |
CN108616717B (zh) | 一种实时全景视频拼接显示装置及其方法 | |
JP6136190B2 (ja) | 画像処理装置、撮像装置 | |
WO2005086096A2 (en) | Embedded system with 3d graphics core and local pixel buffer | |
CN113643414A (zh) | 一种三维图像生成方法、装置、电子设备及存储介质 | |
WO2021179605A1 (zh) | 基于gpu的摄像头视频投影方法、装置、设备及存储介质 | |
CN101196860A (zh) | 一种专为存取图象块优化的二维dma传输方法 | |
US20110176732A1 (en) | Image processing method and device, and imaging apparatus using the image processing device | |
CN109685715B (zh) | 一种显示系统中高精度图像无级旋转处理方法 | |
JP2010176547A (ja) | 画像処理装置に含まれる制御装置、制御方法、及び制御処理プログラム | |
JP5569312B2 (ja) | メモリアクセス判定回路、メモリアクセス判定方法、キャッシュ制御装置および電子機器 | |
CN108875733B (zh) | 一种红外小目标快速提取系统 | |
CN106780291B (zh) | 一种实时畸变图像处理加速装置 | |
CN108629734B (zh) | 图像几何变换方法、装置及终端 | |
US11508031B2 (en) | Warping data | |
CN115601223A (zh) | 一种图像预处理装置、方法和芯片 | |
JP4970378B2 (ja) | メモリコントローラおよび画像処理装置 | |
JP6762775B2 (ja) | 画像処理装置、撮像装置、制御方法及びプログラム | |
CN117788532B (zh) | 一种安防领域基于fpga的超高清双光融合配准方法 | |
TWI756771B (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 |