CN117057982B - 对图像进行扭曲变换的集成电路及电子设备 - Google Patents

对图像进行扭曲变换的集成电路及电子设备 Download PDF

Info

Publication number
CN117057982B
CN117057982B CN202311312782.8A CN202311312782A CN117057982B CN 117057982 B CN117057982 B CN 117057982B CN 202311312782 A CN202311312782 A CN 202311312782A CN 117057982 B CN117057982 B CN 117057982B
Authority
CN
China
Prior art keywords
pixel
data
image
pixel value
interpolation
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
Application number
CN202311312782.8A
Other languages
English (en)
Other versions
CN117057982A (zh
Inventor
王睿
段雪岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Horizon Information Technology Co Ltd
Original Assignee
Beijing Horizon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Horizon Information Technology Co Ltd filed Critical Beijing Horizon Information Technology Co Ltd
Priority to CN202311312782.8A priority Critical patent/CN117057982B/zh
Publication of CN117057982A publication Critical patent/CN117057982A/zh
Application granted granted Critical
Publication of CN117057982B publication Critical patent/CN117057982B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/387Composing, repositioning or otherwise geometrically modifying originals

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)

Abstract

本公开实施例公开了一种对图像进行扭曲变换的集成电路及电子设备,其中,该电路包括:控制模块、坐标计算模块、像素值计算模块、缓存模块和数据存储器;坐标计算模块基于从缓存模块读取到的原始图像对应的像素映射数据,确定需要进行扭曲变换的插值点坐标;控制模块基于插值点坐标,从数据存储器中读取在原始图像中的原始像素值;像素值计算模块基于原始像素值和像素映射数据,确定扭曲变换后的图像中在插值点坐标的插入像素值;控制模块将插入像素值存入数据存储器。本公开实施例实现了利用专用的硬件电路对图像扭曲变换过程进行加速,提高了图像扭曲变换的执行效率。

Description

对图像进行扭曲变换的集成电路及电子设备
技术领域
本公开涉及集成电路设计领域,尤其是一种对图像进行扭曲变换的集成电路、对图像进行扭曲变换的方法及电子设备。
背景技术
图像扭曲(warp)方法是一种将二维图像中的像素映射到另一图像中的方法,其大量运用在自动驾驶、高精地图等领域,还可以应用在图像仿射变换、图像去畸变、可变形模型(deformable model)等场景。例如,在自动驾驶领域,可以利用图像扭曲算法将车上的相机拍摄的图像变换到鸟瞰图视角;在高精地图领域,也需要利用图像扭曲算法将在道路上拍摄的图像变换到鸟瞰图视角。
目前的图像扭曲方法通常由软件执行,其受处理器的性能制约较大,处理器执行图像扭曲方法的速度待提高。
发明内容
为了解决上述技术问题,本公开的实施例提供了一种对图像进行扭曲变换的集成电路、对图像进行扭曲变换的方法及电子设备,以实现通过硬件电路对图像扭曲变换的计算过程进行加速。
本公开的实施例提供了一种对图像进行扭曲变换的集成电路,该电路包括:控制模块、坐标计算模块、像素值计算模块、缓存模块和数据存储器;坐标计算模块基于从缓存模块读取到的原始图像对应的像素映射数据,确定需要进行扭曲变换的插值点坐标;控制模块基于插值点坐标,从数据存储器中读取在原始图像中的原始像素值;像素值计算模块基于原始像素值和像素映射数据,确定扭曲变换后的图像中在插值点坐标的插入像素值;控制模块将插入像素值存入数据存储器。
根据本公开实施例的另一个方面,提供了一种对图像进行扭曲变换的方法,该方法包括:坐标计算模块基于从缓存模块读取到的原始图像对应的像素映射数据,确定需要进行扭曲变换的插值点坐标;控制模块基于插值点坐标,从数据存储器中读取在原始图像中的原始像素值;像素值计算模块基于原始像素值和像素映射数据,确定扭曲变换后的图像中在插值点坐标的插入像素值;控制模块将插入像素值存入数据存储器。
根据本公开实施例的另一个方面,提供了一种电子设备,电子设备包括:图像输入装置、上述对图像进行扭曲变换的集成电路和图像输出装置;图像输入装置获取原始图像,并将原始图像存入对图像进行扭曲变换的集成电路包括的数据存储器;对图像进行扭曲变换的集成电路对数据存储器中存储的原始图像进行扭曲变换,得到扭曲变换后的图像;图像输出装置将扭曲变换后的图像输出。
本公开上述实施例提供的对图像进行扭曲变换的集成电路、对图像进行扭曲变换的方法及电子设备,通过设置控制模块、坐标计算模块、像素值计算模块,缓存模块和数据存储器,由坐标计算模块基于像素映射数据,确定需要进行扭曲变换的插值点坐标,由像素值计算模块计算扭曲变换后的图像中在插值点坐标的插入像素值,由控制模块、缓存模块和数据存储器进行数据的读写、存储,即数据读写、存储操作由不同的电路模块配合执行,无需由同一处理器执行复杂的读写、存储操作,从而实现通过硬件电路对图像扭曲变换过程进行加速,提高了图像扭曲变换的执行效率。以及,本公开提供的对图像进行扭曲变换的集成电路的面积较小,能够高效且低功耗地实现图像的扭曲变换。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤;
图1是本公开一示例性实施例提供的对图像进行扭曲变换的集成电路的结构图;
图2是本公开一另示例性实施例提供的对图像进行扭曲变换的集成电路的结构图;
图3是本公开一另示例性实施例提供的对图像进行扭曲变换的集成电路的结构图;
图4是本公开一另示例性实施例提供的对图像进行扭曲变换的集成电路的结构图;
图5是本公开一另示例性实施例提供的对图像进行扭曲变换的集成电路的结构图;
图6是本公开一另示例性实施例提供的对图像进行扭曲变换的集成电路的结构图;
图7是本公开一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图;
图8是本公开另一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图;
图9是本公开另一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图;
图10是本公开另一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图;
图11是本公开另一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图;
图12是本公开另一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图;
图13是本公开另一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图;
图14是本公开一示例性实施例提供的电子设备的结构图。
具体实施方式
为了解释本公开,下面将参考附图详细地描述本公开的示例实施例,显然,所描述的实施例仅是本公开的一部分实施例,而不是全部实施例,应理解,本公开不受示例性实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
申请概述
目前的图像扭曲方法通常由软件执行,其受处理器的性能制约较大,处理器执行图像扭曲方法的速度待提高。
为解决该问题,本公开实施例提供了一种对图像进行扭曲变换的集成电路,该电路可以对图像扭曲变换的过程进行硬件加速,提高图像扭曲变换的效率。
示例性电路结构
图1示出了可以应用本公开的实施例的对图像进行扭曲变换的集成电路的示例性电路结构。该电路包括的各个模块可以集成到一个芯片中,也可以设置到不同的芯片中,这些芯片之间建立数据通信的链路。通常,该电路包括的各个模块可以设置在专用集成电路(ASIC,Application Specific Integrated Circuit)中,该专用集成电路可以通过硬件描述语言实现相应的功能。
如图1所示,对图像进行扭曲变换的集成电路包括:控制模块101、坐标计算模块102、像素值计算模块103、缓存模块104和数据存储器105。可选的,上述数据存储器105和缓存模块104可以是随机存储器、高速缓冲存储器(cache)等各种类型的存储器。
在本实施例中,坐标计算模块102可以基于从缓存模块104读取到的原始图像对应的像素映射数据,确定需要进行扭曲变换的插值点坐标。坐标计算模块102可以将得到的插值点坐标发送至控制模块101。
其中,像素映射数据为用于对原始图像进行图像扭曲变换的数据。作为示例,像素映射数据可以包括原始图像中的像素对应的运动向量(motion vector)、光流向量(optical flow vector)等类型的数据。
可选的,像素映射数据可以为运动向量,运动向量包括横向和纵向两个坐标分量,坐标计算模块102可以将原始图像的像素的横坐标和纵坐标分别与运动向量包括的横纵两个坐标分量相加,从而得到插值点坐标。
可选的,像素映射数据可以被预先存入数据存储器105中,上述控制模块101可以首先从上述数据存储器105中读取像素映射数据,并将像素映射数据发送至缓存模块104,缓存模块104对像素映射数据进行缓存。其中,像素映射数据与原始图像中的像素位置相对应,在数据存储器105中,原始图像中像素的像素值和像素映射数据对应存储,因此,控制模块101可以按照原始图像的像素的坐标,确定待计算的像素映射数据在数据存储器105中的存储地址,并从数据存储器105中该存储地址对应的存储单元中读取像素映射数据。
在本实施例中,控制模块101基于插值点坐标,从数据存储器105中读取在原始图像中的原始像素值。控制模块101可以将读取的原始像素值发送至像素值计算模块103。
可选的,上述原始像素值可以包括原始图像中上述插值点坐标对应的像素的像素值,也可以包括上述插值点坐标对应的像素的相邻像素的像素值,从而在计算像素值计算模块103计算插入像素值时,可以基于插值点坐标相关的多个像素进行计算,提高插值计算的准确性。
在本实施例中,像素值计算模块103基于原始像素值和像素映射数据,确定扭曲变换后的图像中在插值点坐标的插入像素值。像素值计算模块103可以将得到的插入像素值发送至控制模块101。
可选的,像素映射数据的预设数据位可以作为原始像素值的权重,将权重与原始像素值相乘,可以得到插入像素值。
在本实施例中,控制模块101将插入像素值存入数据存储器105。
具体地,由于一个插值点坐标对应于扭曲变换后的图像的一个像素,因此,可以按照扭曲变换后的图像中像素的排列顺序,为插值点坐标对应的插入像素值设置相应的存储地址,并将计算得到的插入像素值存入数据存储器105中与该存储地址对应的存储单元。
本公开的上述实施例提供的电路,通过设置控制模块、坐标计算模块、像素值计算模块,缓存模块和数据存储器,由坐标计算模块基于像素映射数据,确定需要进行扭曲变换的插值点坐标,由像素值计算模块计算扭曲变换后的图像中在插值点坐标的插入像素值,由控制模块、缓存模块和数据存储器进行数据的读写、存储,即数据读写、存储操作由不同的电路模块配合执行,无需由同一处理器执行复杂的读写、存储操作,从而实现了通过硬件电路对图像扭曲变换过程进行加速,提高了图像扭曲变换的执行效率。以及,本公开提供的对图像进行扭曲变换的集成电路的面积较小,能够高效且低功耗地实现图像的扭曲变换。
在一些可选的实现方式中,如图2所示,缓存模块104包括第一缓存单元1041和第二缓存单元1042,第一缓存单元1041与数据存储器105和坐标计算模块102连接,第二缓存单元1042与控制模块101和坐标计算模块102连接。
第一缓存单元1041缓存由控制模块101从存储器读取的像素映射数据。具体地,控制模块101可以向数据存储器105发送数据读取地址,该数据读取地址即像素映射数据的存储地址,数据存储器105收到数据读取地址,将像素映射数据发送至第一缓存单元1041。通常,第一缓存单元1041可以为随机存储器,以便随时对其进行读写操作。
可选的,控制模块101可以实时监控第一缓存单元1041的存储状态,若第一缓存单元1041已存满数据,即第一缓存单元1041当前存储的数据均未被读取出,则暂停向第一缓存单元1041缓存像素映射数据。
坐标计算模块102从第一缓存单元1041读取像素映射数据,基于像素映射数据,计算得到插值点坐标。
第二缓存单元1042缓存坐标计算模块102计算得到的插值点坐标。
可选的,第二缓存单元1042可以为随机存储器,且可以设置为先进先出规则。
控制模块101从第二缓存单元1042读取插值点坐标,根据插值点坐标从数据存储器105中读取原始像素值。
本实施例通过在电路中设置第一缓存单元和第二缓存单元,分别用来缓存像素映射数据和插值点坐标,可以使不同类型的数据缓存到不同的缓存单元中,降低因同一存储器存储不同类型的数据造成的读写复杂性,降低读写不同类型的数据造成的读写错误风险,从而提高了图像扭曲变换的效率。
在一些可选的实现方式中,坐标计算模块102可以首先基于原始图像的像素值的采样方式,从像素映射数据中,提取坐标计算数据。
其中,上述采样方式即从原始图像中确定待采样的像素的坐标的方式,该采样方式同时包含了从像素映射数据提取坐标计算数据的方式。通常,像素映射数据可以用于从原始图像中进行像素值采样和像素值插值计算,因此,像素映射数据可以包括坐标计算数据,坐标计算数据即用于像素值采样。
然后,坐标计算模块102可以基于坐标计算数据,计算得到插值点坐标。
可选的,针对原始图像的每个像素点,坐标计算模块102可以将该像素点的坐标与该像素点对应的坐标计算数据相加,从而得到插值点坐标。
可选的,如图6所示,计算得到的插值点坐标可以发送到第二缓存单元1042进行缓存。
本实施例通过由坐标计算模块从像素映射数据中提取坐标计算数据,并根据坐标计算数据计算插值点坐标,实现了将像素值采样所需的数据和像素值插值计算所需的数据分离,即像素值采样和像素值插值计算分别由不同的硬件模块进行处理,从而有助于提高图像扭曲变换的效率。
在一些可选的实现方式中,坐标计算模块102从像素映射数据中,提取像素映射数据中第一预设位数的数据作为坐标计算数据。
其中,第一预设位数可以是像素映射数据的全部比特位中的部分比特位。例如,第一预设位数是像素映射数据的高m位数据。
可选的,像素映射数据可以包括运动向量,其包括横向(x轴方向)分量mvx和纵向(y轴方向)分量mvy,对于原始图像中的一个像素点,其坐标为(x,y),则基于其对应的运动向量(mvx,mvy),计算得到的插值点坐标为:
(1)
(2)
其中,s为像素映射数据的低位数据的位数,>>为右移符号。这里设像素映射数据的位数为n,则上述第一预设位数为m=n-s。
可选的,像素映射数据可以为浮点型数据,则浮点型数据的高m位为整数部分,低s位为小数部分,因此,可以将浮点型数据的整数部分作为坐标计算数据。
本实施例通过将像素映射数据的第一预设位数的数据作为坐标计算数据,可以由坐标计算模块快速提取出坐标计算数据,从而有助于进一步提高图像扭曲变换的效率。
在一些可选的实现方式中,坐标计算模块102可以按照如下方式确定插值点坐标:
首先,确定原始图像中与像素映射数据对应的子图。
通常,由于原始图像的尺寸较大,为了提高图像扭曲变换的效率,可以将原始图像划分为多个子图,每个子图中的所有像素点对应一个像素映射数据。坐标计算模块102可以根据子图与像素映射数据的对应关系,确定像素映射数据对应的子图。
然后,基于坐标计算数据和子图中的像素点的坐标,计算子图中的像素点各自对应的插值点坐标。
作为示例,在上述式(1)和式(2)的基础上,对于一个子图,设其起始像素点的坐标为(start_w_int,start_h_int),则插值点坐标的计算公式如下所示:
(3)
(4)
其中,(X,Y)为子图中的某个像素点的坐标。
本实施例通过将原始图像划分为多个子图,每个子图对应同一像素映射数据,可以减少读取像素映射数据的次数,降低坐标计算模块的计算量,从而进一步提高了图像扭曲变换的效率。
在一些可选的实现方式中,如图3所示,缓存模块104还包括第三缓存单元1043,第三缓存单元1043与坐标计算模块102和像素值计算模块103连接。可选的,第三缓存单元1043可以为随机存储器,且可以设置为先进先出规则。
坐标计算模块102可以从像素映射数据中,提取插值计算数据,并将插值计算数据发送至第三缓存单元1043进行缓存。
通常,像素映射数据可以用于从原始图像中进行像素值采样和像素值插值计算,因此,像素映射数据还可以包括插值计算数据,插值计算数据即用于计算扭曲变换后的图像中的像素点的像素值。
像素值计算模块103从第三缓存单元1043读取插值计算数据,并基于原始像素值和插值计算数据,确定扭曲变换后的图像中插值点坐标的插入像素值。
可选的,上述原始像素值可以包括原始图像中上述插值点坐标对应的像素点的像素值,也可以包括上述插值点坐标对应的像素点的相邻像素点的像素值。上述相邻像素点即与上述插值点坐标对应的像素点之间的距离处于预设距离内的像素点。例如,设插值点坐标为(x0,y0),相邻像素点的坐标可以包括(x0+1,y0)、(x0,y0+1)、(x0+1,y0+1)。这里不限定相邻像素点的确定方式,凡是用于进行插入像素值计算的像素点均可以确定为相邻像素点。像素值计算模块103可以将插值计算数据作为原始像素值的权重,利用原始像素值和权重进行双线性插值计算,得到扭曲变换后的图像中插值点坐标的插入像素值。
本实施例通过设置第三缓存单元用来缓存插值计算数据,可以进一步使不同类型的数据缓存到不同的缓存单元中,降低因同一存储器存储不同类型的数据造成的读写复杂性,降低读写不同类型的数据造成的读写错误风险,从而提高了图像扭曲变换的效率。
在一些可选的实现方式中,坐标计算模块102可以从像素映射数据中,提取像素映射数据中第二预设位数的数据作为插值计算数据。
其中,第二预设位数可以是像素映射数据的全部比特位包括的部分比特位。例如,第二预设位数是像素映射数据的低s位数据。
可选的,像素映射数据可以包括运动向量,其包括横向分量mvx和纵向分量mvy,则插值计算数据如下式所示:
(5)
(6)
可选的,像素映射数据可以为浮点型数据,则浮点型数据的低s位为小数部分,因此,可以将浮点型数据的小数部分作为插值计算数据。
本实施例通过将像素映射数据的第二预设位数的数据作为插值计算数据,可以由坐标计算模块快速提取出插值计算数据,从而有助于进一步提高图像扭曲变换的效率。
在一些可选的实现方式中,控制模块101可以从数据存储器105中读取原始图像中的目标像素点的像素值,以及读取目标像素点的相邻像素点的像素值。
其中,目标像素点为插值点坐标对应的像素点。作为示例,插值点坐标为(x0,y0),则目标像素点s00的坐标为(x0,y0)相邻像素点包括s01(x0,y0+1),s10(x0+1,y0),s11(x0+1,y0+1)。
然后,控制模块101可以将目标像素点的像素值和相邻像素点的像素值确定为原始像素值。
继续上述示例,原始像素值包括点s00、s01、s10、s11的像素值。
像素值计算模块103可以基于插值计算数据,确定原始像素值的权重数据;基于权重数据和原始像素值,计算得到插入像素值。
继续上述示例,权重数据可以包括上述式(5)和式(6)所示的dec_x、dec_y,按照双线性插值算法,可以按照如下公式计算插入像素值:
(7)
(8)
(9)
其中,n为像素映射数据的位数,dec_x、dec_y,以及、/>均为权重数据,/>即为扭曲变换后的图像的(x0,y0)位置的插入像素值。
本实施例通过读取原始图像的多个像素点的像素值作为原始像素值,以及确定原始像素值的权重数据,基于权重数据和原始像素值计算插入像素值,实现了由像素值计算模块准确地向扭曲变换后的图像中的插值点坐标插入像素值,从而提高了电路进行图像扭曲变换的效率和准确性。
在一些可选的实现方式中,像素值计算模块103可以基于像素映射数据,对原始像素值对应的多个通道的数值进行并行计算,得到扭曲变换后的图像中在插值点坐标的多个通道的插入像素值。
其中,原始像素值对应的多个通道的数值是指同一像素点包含的表示不同特征的多个数据。通常,原始图像在维度上包括w(宽度)、h(高度)、c(通道数)三个维度,对于原始图像上的任一像素点,在c维度上可包含多个通道。由于同一像素点在多个通道上对应相同w和h坐标点的像素映射数据,因此,可以对每个像素包含的多个通道的数值进行并行计算,一次性得到该像素的每个通道的插入像素值。
通常,像素值计算模块103可以基于得到的每个插值点坐标,根据预设时序逐次计算每个插值点坐标的插入像素值,即在该时序的每个节拍内,像素值计算模块103执行一次并行计算。每次并行计算可以针对一个插值点坐标对应的全部或部分通道进行计算。例如,若原始图像包括N个通道,则可以在每个节拍内,计算对原始像素值的N个通道数据进行计算,得到插值点坐标对应的N个通道的插入像素值;也可以在每个节拍内,计算对原始像素值的N/2个通道数据进行计算,得到插值点坐标对应的N/2个通道的插入像素值。本实施例通过对原始像素值对应的多个通道的数值进行并行计算,可以极大提高图像扭曲变换的效率。
在一些可选的实现方式中,如图4所示,控制模块101包括读控制单元1011和写控制单元1012。读控制单元1011与数据存储器105、缓存模块104和像素值计算模块103连接。写控制单元1012与数据存储器105和像素值计算模块103连接。
可选的,如图6所示,读控制单元1011可以通过读写总线与数据存储器105、缓存模块104包括的第一缓存单元1041和像素值计算模块103连接。写控制单元1012可以通过读写总线与数据存储器105连接。
读控制单元1011可以从数据存储器105读取像素映射数据,并将像素映射数据存储至缓存模块104;获取插值点坐标,并从数据存储器105中读取原始像素值;将原始像素值发送到像素值计算模块103。
可选的,如图6所示,读控制单元1011可以从上述第二缓存单元1042读取插值点坐标。
写控制单元1012将插入像素值存入数据存储器105。
本实施例通过设置读控制单元和写控制单元,将控制模块的读写功能分离,从而有助于降低控制模块的数据处理量,有助于提高整个电路的运行效率。
在一些可选的实现方式中,如图5所示,该电路还包括读写总线106,数据存储器105通过读写总线106与读控制单元1011、写控制单元1012、缓存模块104和像素值计算模块103连接。
可选的,如图6所示,数据存储器105可以通过读写总线106与缓存模块104包括的第一缓存单元1041连接。
读控制单元1011通过读写总线106,从数据存储器105读取像素映射数据并存储至缓存模块104;以及通过读写总线106,从数据存储器105中读取原始像素值并发送至像素值计算模块103;写控制单元1012通过读写总线106,将插入像素值存入数据存储器105。
具体地,如图6所示,读控制单元1011可以通过读写总线106向数据存储器105发送读命令和读数据地址,数据存储器105通过读写总线106将读数据地址对应的像素映射数据发送到缓存模块104。读控制单元1011还可以通过读写总线106向数据存储器105发送读命令和插值点坐标对应的地址,数据存储器105通过读写总线106将该地址对应的存储单元保存的原始像素值发送到像素值计算模块103。
写控制单元1012可以通过读写总线106向数据存储器105发送写命令、插入像素值,以及扭曲变换后的图像的插值点坐标的地址,数据存储器105通过读写总线106接收插入像素值并将插入像素值写入该地址对应的存储单元。
本实施例通过设置读写总线,可以缩短电路包括的各模块之间的通信距离,降低数据链路的复杂性,从而有助于降低电路的面积和功耗,提高电路的运行效率。
示例性方法
图7是本公开一示例性实施例提供的对图像进行扭曲变换的方法的流程示意图。本实施例可应用在如图1所示的对图像进行扭曲变换的集成电路上,本实施例中涉及的各个电路模块可以参考上述图1所示电路包括的各电路模块。如图7所示,该方法包括如下步骤:
步骤701,坐标计算模块基于从缓存模块读取到的原始图像对应的像素映射数据,确定需要进行扭曲变换的插值点坐标。
步骤702,控制模块基于插值点坐标,从数据存储器中读取在原始图像中的原始像素值。
步骤703,像素值计算模块基于原始像素值和像素映射数据,确定扭曲变换后的图像中在插值点坐标的插入像素值。
步骤704,控制模块将插入像素值存入数据存储器。
本实施例中各步骤执行的具体过程,可以参考上述图1对应实施例描述的内容,这里不再赘述。
本公开的上述实施例提供的方法,通过由坐标计算模块基于像素映射数据,确定需要进行扭曲变换的插值点坐标,由像素值计算模块计算扭曲变换后的图像中在插值点坐标的插入像素值,由控制模块、缓存模块和数据存储器进行数据的读写、存储,即数据读写、存储操作由不同的电路模块配合执行,无需由同一处理器执行复杂的读写、存储操作,从而实现了通过硬件电路对图像扭曲变换过程进行加速,提高了图像扭曲变换的执行效率。
在一些可选的实现方式中,缓存模块包括第一缓存单元和第二缓存单元,如图8所示,上述步骤701之前,可以包括:
步骤705,第一缓存单元缓存由控制模块从存储器读取的像素映射数据。
步骤701可以包括:
步骤7011,坐标计算模块从第一缓存单元读取像素映射数据,基于像素映射数据,计算得到插值点坐标。
步骤7012,坐标计算模块将插值点坐标发送至第二缓存单元进行缓存。
进一步地,上述步骤702可以包括:
控制模块从第二缓存单元读取插值点坐标,根据插值点坐标从数据存储器中读取原始像素值。
本实施例中各步骤执行的具体过程,可以参考上述图2以及对应可选实施例描述的内容,这里不再赘述。
本实施例通过在电路中设置第一缓存单元和第二缓存单元,分别用来缓存像素映射数据和插值点坐标,可以使不同类型的数据缓存到不同的缓存单元中,降低因同一存储器存储不同类型的数据造成的读写复杂性,降低读写不同类型的数据造成的读写错误风险,从而提高了图像扭曲变换的效率。
在一些可选的实现方式中,如图9所示,上述步骤701中,坐标计算模块可以执行如下子步骤:
步骤7013,基于原始图像的像素值的采样方式,从像素映射数据中,提取坐标计算数据。
步骤7014,基于坐标计算数据,计算得到插值点坐标。
本实施例中各步骤执行的具体过程,可以参考上述示例性电路结构部分中的可选实施例的描述,这里不再赘述。
本实施例通过由坐标计算模块从像素映射数据中提取坐标计算数据,并根据坐标计算数据计算插值点坐标,实现了将像素值采样所需的数据和像素值插值计算所需的数据分离,即像素值采样和像素值插值计算分别由不同的硬件模块进行处理,从而有助于提高图像扭曲变换的效率。
在一些可选的实现方式中,在上述步骤7013中,坐标计算模块可以执行如下子步骤:
从像素映射数据中,提取像素映射数据中第一预设位数的数据作为坐标计算数据。
本实施例的具体过程,可以参考上述示例性电路结构部分中的可选实施例的描述,这里不再赘述。
本实施例通过将像素映射数据的第一预设位数的数据作为坐标计算数据,可以由坐标计算模块快速提取出坐标计算数据,从而有助于进一步提高图像扭曲变换的效率。
在一些可选的实现方式中,如图10所示,在上述步骤7014中,坐标计算模块可以执行如下子步骤:
步骤70141,确定原始图像中与像素映射数据对应的子图。
步骤70142,基于坐标计算数据和子图中的像素点的坐标,计算子图中的像素点各自对应的插值点坐标。
本实施例的具体过程,可以参考上述示例性电路结构部分中的可选实施例的描述,这里不再赘述。
本实施例通过将原始图像划分为多个子图,每个子图对应同一像素映射数据,可以减少读取像素映射数据的次数,降低坐标计算模块的计算量,从而进一步提高了图像扭曲变换的效率。
在一些可选的实现方式中,缓存模块包括第三缓存单元。如图11所示,在上述步骤703之前,该方法还包括:
步骤706,坐标计算模块从像素映射数据中,提取插值计算数据,并将插值计算数据发送至第三缓存单元进行缓存。
基于此,如图11所示,上述步骤703中,像素值计算模块可以执行如下子步骤:
步骤7031,像素值计算模块从第三缓存单元读取插值计算数据。
步骤7032,基于原始像素值和插值计算数据,确定扭曲变换后的图像中插值点坐标的插入像素值。
本实施例的具体过程,可以参考上述图3以及对应可选实施例描述的内容,这里不再赘述。
本实施例通过设置第三缓存单元用来缓存插值计算数据,可以进一步使不同类型的数据缓存到不同的缓存单元中,降低因同一存储器存储不同类型的数据造成的读写复杂性,降低读写不同类型的数据造成的读写错误风险,从而提高了图像扭曲变换的效率。
在一些可选的实现方式中,在上述步骤705中,坐标计算模块可以按照如下方式提取插值计算数据:
从像素映射数据中,提取像素映射数据中第二预设位数的数据作为插值计算数据。
本实施例的具体过程,可以参考上述示例性电路结构部分中的可选实施例的描述,这里不再赘述。
本实施例通过将像素映射数据的第二预设位数的数据作为插值计算数据,可以由坐标计算模块快速提取出插值计算数据,从而有助于进一步提高图像扭曲变换的效率。
在一些可选的实现方式中,如图12所示,上述步骤702中,控制模块可以执行如下子步骤:
步骤7021,从数据存储器中读取原始图像中的目标像素点的像素值。
步骤7022,读取目标像素点的相邻像素点的像素值。
其中,目标像素点为插值点坐标对应的像素点;
步骤7023,将目标像素点的像素值和相邻像素点的像素值确定为原始像素值。
基于此,如图12所示,上述步骤703中,像素值计算模块可以执行如下子步骤:
步骤7033,基于插值计算数据,确定原始像素值的权重数据。
步骤7034,基于权重数据和原始像素值,计算得到插入像素值。
本实施例的具体过程,可以参考上述示例性电路结构部分中的可选实施例的描述,这里不再赘述。
本实施例通过读取原始图像的多个像素点的像素值作为原始像素值,以及确定原始像素值的权重数据,基于权重数据和原始像素值计算插入像素值,实现了由像素值计算模块准确地向扭曲变换后的图像中的插值点坐标插入像素值,从而提高了电路进行图像扭曲变换的效率和准确性。
在一些可选的实现方式中,上述步骤703中,像素值计算模块可以按照如下方式确定插入像素值:
基于像素映射数据,对原始像素值对应的多个通道的数值进行并行计算,得到扭曲变换后的图像中在插值点坐标的多个通道的插入像素值。
本实施例的具体过程,可以参考上述示例性电路结构部分中的可选实施例的描述,这里不再赘述。
本实施例通过对原始像素值对应的多个通道的数值进行并行计算,可以极大提高图像扭曲变换的效率。
在一些可选的实现方式中,控制模块包括读控制单元和写控制单元。如图13所示,上述步骤701之前,由读控制单元执行如下步骤:
步骤707,从数据存储器读取像素映射数据,并将像素映射数据存储至缓存模块。
如图13所示,在上述步骤702中,由读控制单元执行如下子步骤:
步骤7024,获取插值点坐标,并从数据存储器中读取原始像素值。
步骤7025,将原始像素值发送到像素值计算模块。
进一步地,在上述步骤704中,可以由写控制单元执行如下子步骤:
将插入像素值存入数据存储器。
本实施例的具体过程,可以参考上述图4以及对应可选实施例中描述的内容,这里不再赘述。
本实施例通过设置读控制单元和写控制单元,将控制模块的读写功能分离,从而有助于降低控制模块的数据处理量,有助于提高整个电路的运行效率。
在一些可选的实现方式中,电路还包括读写总线。在上述步骤706中,读控制单元可以执行如下子步骤:
通过读写总线,从数据存储器读取像素映射数据并存储至缓存模块。
在上述步骤7024中,读控制单元可以进一步执行如下子步骤:
通过读写总线,从数据存储器中读取原始像素值并发送至像素值计算模块。
进一步地,在上述步骤704中,写控制单元可以进一步执行如下子步骤:
通过读写总线,将插入像素值存入数据存储器。
本实施例的具体过程,可以参考上述图5以及对应可选实施例中描述的内容,这里不再赘述。
本实施例通过设置读写总线,可以缩短电路包括的各模块之间的通信距离,降低数据链路的复杂性,从而有助于降低电路的面积和功耗,提高电路的运行效率。
示例性电子设备
本公开的实施例还提供了一种电子设备,如图14所示,该电子设备包括图像输入装置1401、上述对图像进行扭曲变换的集成电路1402和图像输出装置1403。
图像输入装置1401可以获取原始图像,并将原始图像存入对图像进行扭曲变换的集成电路1402包括的数据存储器;对图像进行扭曲变换的集成电路1402对数据存储器中存储的原始图像进行扭曲变换,得到扭曲变换后的图像;图像输出装置1403将扭曲变换后的图像输出。
上述对图像进行扭曲变换的集成电路1402的技术细节如图1-图13和相关描述所示,此处不再展开描述。
上述图像输入装置1401可以包括相机,用于拍摄原始图像,并将原始图像存入数据存储器。可选的,图像输入装置1401还可以包括诸如鼠标、键盘、触控屏、通信网络连接器等,用于输入各种命令等。
上述图像输出装置1402可以包括诸如显示器、打印机、以及通信网络及其所连接的远程输出设备等等,用于输出扭曲变换后的图像等。
上述数据存储器用于存储上述图像输入装置输入的数据,以及上述电路运行过程中产生的数据。数据存储器可以包括易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
以上结合具体实施例描述了本公开的基本原理,但是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为其是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本领域的技术人员可以对本公开进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (11)

1.一种对图像进行扭曲变换的集成电路,包括:控制模块、坐标计算模块、像素值计算模块、缓存模块和数据存储器;
所述坐标计算模块基于从所述缓存模块读取到的原始图像对应的像素映射数据,确定需要进行扭曲变换的插值点坐标,其中,所述像素映射数据为用于对所述原始图像进行图像扭曲变换的数据;
所述控制模块基于所述插值点坐标,从所述数据存储器中读取在所述原始图像中的原始像素值;
所述像素值计算模块基于所述原始像素值和所述像素映射数据,确定扭曲变换后的图像中在所述插值点坐标的插入像素值;
所述控制模块将所述插入像素值存入所述数据存储器;
所述坐标计算模块基于所述原始图像的像素值的采样方式,从所述像素映射数据中,提取坐标计算数据;基于所述坐标计算数据,计算得到所述插值点坐标;
所述坐标计算模块从所述像素映射数据中,提取插值计算数据;
所述像素值计算模块基于所述原始像素值和所述插值计算数据,确定扭曲变换后的图像中所述插值点坐标的插入像素值。
2.根据权利要求1所述的电路,其中,所述缓存模块包括第一缓存单元和第二缓存单元,所述第一缓存单元与所述数据存储器和所述坐标计算模块连接,所述第二缓存单元与所述控制模块和所述坐标计算模块连接;
所述第一缓存单元缓存由所述控制模块从所述存储器读取的像素映射数据;
所述坐标计算模块从所述第一缓存单元读取所述像素映射数据,基于所述像素映射数据,计算得到所述插值点坐标;
所述第二缓存单元缓存所述坐标计算模块计算得到的所述插值点坐标;
所述控制模块从所述第二缓存单元读取所述插值点坐标,根据所述插值点坐标从所述数据存储器中读取所述原始像素值。
3.根据权利要求1所述的电路,其中,所述坐标计算模块从所述像素映射数据中,提取所述像素映射数据中第一预设位数的数据作为所述坐标计算数据。
4.根据权利要求1所述的电路,其中,所述坐标计算模块确定所述原始图像中与所述像素映射数据对应的子图;
基于所述坐标计算数据和所述子图中的像素点的坐标,计算所述子图中的像素点各自对应的插值点坐标。
5.根据权利要求1所述的电路,其中,所述缓存模块包括第三缓存单元,所述第三缓存单元与所述坐标计算模块和所述像素值计算模块连接;
所述坐标计算模块从所述像素映射数据中,提取插值计算数据,并将所述插值计算数据发送至所述第三缓存单元进行缓存;
所述像素值计算模块从所述第三缓存单元读取所述插值计算数据,并基于所述原始像素值和所述插值计算数据,确定扭曲变换后的图像中所述插值点坐标的插入像素值。
6.根据权利要求5所述的电路,其中,所述坐标计算模块从所述像素映射数据中,提取所述像素映射数据中第二预设位数的数据作为所述插值计算数据。
7.根据权利要求5所述的电路,其中,所述控制模块从所述数据存储器中读取所述原始图像中的目标像素点的像素值,以及读取所述目标像素点的相邻像素点的像素值,其中,所述目标像素点为所述插值点坐标对应的像素点;
将所述目标像素点的像素值和所述相邻像素点的像素值确定为所述原始像素值;
所述像素值计算模块基于所述插值计算数据,确定所述原始像素值的权重数据;
基于所述权重数据和所述原始像素值,计算得到所述插入像素值。
8.根据权利要求1所述的电路,其中,所述像素值计算模块基于所述像素映射数据,对所述原始像素值对应的多个通道的数值进行并行计算,得到所述扭曲变换后的图像中在所述插值点坐标的多个通道的插入像素值。
9.根据权利要求1-8任一项所述的电路,其中,所述控制模块包括读控制单元和写控制单元;
所述读控制单元从所述数据存储器读取像素映射数据,并将所述像素映射数据存储至所述缓存模块;获取所述插值点坐标,并从所述数据存储器中读取所述原始像素值;将所述原始像素值发送到所述像素值计算模块;
所述写控制单元将所述插入像素值存入所述数据存储器。
10.根据权利要求9所述的电路,其中,所述电路还包括读写总线,所述数据存储器通过所述读写总线与所述读控制单元、所述写控制单元、所述缓存模块和所述像素值计算模块连接;
所述读控制单元通过所述读写总线,从所述数据存储器读取所述像素映射数据并存储至所述缓存模块;以及通过所述读写总线,从所述数据存储器中读取所述原始像素值并发送至所述像素值计算模块;所述写控制单元通过所述读写总线,将所述插入像素值存入所述数据存储器。
11.一种电子设备,所述电子设备包括:图像输入装置、权利要求1-10任一项所述的对图像进行扭曲变换的集成电路、图像输出装置;
所述图像输入装置获取原始图像,并将所述原始图像存入所述对图像进行扭曲变换的集成电路包括的数据存储器;
所述对图像进行扭曲变换的集成电路对所述数据存储器中存储的所述原始图像进行扭曲变换,得到扭曲变换后的图像;
所述图像输出装置将所述扭曲变换后的图像输出。
CN202311312782.8A 2023-10-11 2023-10-11 对图像进行扭曲变换的集成电路及电子设备 Active CN117057982B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311312782.8A CN117057982B (zh) 2023-10-11 2023-10-11 对图像进行扭曲变换的集成电路及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311312782.8A CN117057982B (zh) 2023-10-11 2023-10-11 对图像进行扭曲变换的集成电路及电子设备

Publications (2)

Publication Number Publication Date
CN117057982A CN117057982A (zh) 2023-11-14
CN117057982B true CN117057982B (zh) 2024-01-26

Family

ID=88664775

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311312782.8A Active CN117057982B (zh) 2023-10-11 2023-10-11 对图像进行扭曲变换的集成电路及电子设备

Country Status (1)

Country Link
CN (1) CN117057982B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108109181A (zh) * 2017-12-18 2018-06-01 珠海全志科技股份有限公司 读取图像压缩数据的电路及包含该电路的反畸变电路
CN108171662A (zh) * 2017-12-18 2018-06-15 珠海全志科技股份有限公司 读取图像压缩数据的方法及包含该方法的反畸变方法
CN109785265A (zh) * 2019-01-16 2019-05-21 西安全志科技有限公司 畸变矫正图像处理方法及图像处理装置
WO2022147964A1 (zh) * 2021-01-07 2022-07-14 稿定(厦门)科技有限公司 图像扭曲渲染方法及装置
CN115272051A (zh) * 2022-07-27 2022-11-01 北京地平线机器人技术研发有限公司 用于实现图像扭曲的方法、装置及计算机可读存储介质
CN115601223A (zh) * 2022-09-08 2023-01-13 重庆位图信息技术有限公司(Cn) 一种图像预处理装置、方法和芯片

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540742B2 (en) * 2017-04-27 2020-01-21 Apple Inc. Image warping in an image processor

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108109181A (zh) * 2017-12-18 2018-06-01 珠海全志科技股份有限公司 读取图像压缩数据的电路及包含该电路的反畸变电路
CN108171662A (zh) * 2017-12-18 2018-06-15 珠海全志科技股份有限公司 读取图像压缩数据的方法及包含该方法的反畸变方法
CN109785265A (zh) * 2019-01-16 2019-05-21 西安全志科技有限公司 畸变矫正图像处理方法及图像处理装置
WO2022147964A1 (zh) * 2021-01-07 2022-07-14 稿定(厦门)科技有限公司 图像扭曲渲染方法及装置
CN115272051A (zh) * 2022-07-27 2022-11-01 北京地平线机器人技术研发有限公司 用于实现图像扭曲的方法、装置及计算机可读存储介质
CN115601223A (zh) * 2022-09-08 2023-01-13 重庆位图信息技术有限公司(Cn) 一种图像预处理装置、方法和芯片

Also Published As

Publication number Publication date
CN117057982A (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
US20210174471A1 (en) Image Stitching Method, Electronic Apparatus, and Storage Medium
US10621446B2 (en) Handling perspective magnification in optical flow processing
US11593913B2 (en) Method and system for correcting a distorted input image
CN114494388B (zh) 一种大视场环境下图像三维重建方法、装置、设备及介质
CN103067671A (zh) 一种显示图像的方法及装置
CN110706332B (zh) 一种基于噪声点云的场景重建方法
WO2020092051A1 (en) Rolling shutter rectification in images/videos using convolutional neural networks with applications to sfm/slam with rolling shutter images/videos
CN110651475B (zh) 用于致密光学流的阶层式数据组织
CN117057982B (zh) 对图像进行扭曲变换的集成电路及电子设备
CN113034582A (zh) 位姿优化装置及方法、电子设备及计算机可读存储介质
CN115601223B (zh) 一种图像预处理装置、方法和芯片
US10846837B2 (en) Image processing apparatus, image processing method, and storage medium
JP2000354244A (ja) 画像処理装置、方法及びコンピュータ読み取り可能な記憶媒体
Seo et al. A new parallel hardware architecture for high-performance stereo matching calculation
WO2022247394A1 (zh) 图像拼接方法及装置、存储介质及电子设备
CN106780291B (zh) 一种实时畸变图像处理加速装置
CN111461995B (zh) 基于近似稠密光流法和基准帧更新的视频消旋方法及装置
JP2021131377A (ja) 生成装置、生成方法およびプログラム
CN115914497A (zh) 视频处理方法、装置、设备、介质及程序产品
JP2010033507A (ja) メモリコントローラおよび画像処理装置
CN116993924B (zh) 三维场景建模方法及装置、存储介质、计算机设备
JP4159798B2 (ja) 画像処理装置及び画像処理のプログラム
CN118134944A (zh) 图像处理方法、装置、终端设备及存储介质
KR20220099468A (ko) 오브젝트 회전 영상 생성 장치 및 방법
JP2004184738A (ja) 画像スケーリング装置、画像スケーリング方法、プログラムおよび記録媒体

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