CN117372495A - 一种加速数字图像处理中不同位宽点积的计算方法 - Google Patents
一种加速数字图像处理中不同位宽点积的计算方法 Download PDFInfo
- Publication number
- CN117372495A CN117372495A CN202311195824.4A CN202311195824A CN117372495A CN 117372495 A CN117372495 A CN 117372495A CN 202311195824 A CN202311195824 A CN 202311195824A CN 117372495 A CN117372495 A CN 117372495A
- Authority
- CN
- China
- Prior art keywords
- register
- data
- coefficient
- input
- channel
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 55
- 238000000034 method Methods 0.000 claims description 33
- 238000013139 quantization Methods 0.000 claims description 2
- 230000007480 spreading Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 4
- 230000000052 comparative effect Effects 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
-
- 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/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
-
- 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/10004—Still image; Photographic image
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Processing (AREA)
Abstract
本发明属于图像处理领域,公开了一种加速数字图像处理中不同位宽点积的计算方法。将不同位宽的输入数据和系数数据分别按特定的排布放入第一寄存器和第二寄存器。保证了第一寄存器和第二寄存器在元素位宽不同的情况下,有相同的数据总长度,方便硬件读入数据。同时,该排布在对输入数据和系数数据进行点积运算时,利用不同通道间系数一样的特点,将系数数据进行了复用,有效减少了数据重复被读入执行单元的次数。
Description
技术领域
本发明属于图像处理领域,具体涉及一种加速数字图像处理中不同位宽点积的计算方法。
背景技术
随着数字图像处理算法在日常生活中的普遍使用,及视觉AI算法的大规模落地,相关算法的性能变得越来越重要。在AI应用中,的网络需要分辨率的图像作为输入。但是各视频设备的输出分辨率都不一样,且基本都大于网络需求的分辨率。因此,需要通过缩放图像,以满足网络的输入需求。在人脸识别等场景中,需要调整图像中,某些物体的角度,使得更好的被算法识别。这些场景,都离不开数字图像处理领域的调整图像尺寸算法(resize算法),数值重映射算法(remap算法)和仿射算法(affine算法)。这些算法中比较关键的计算是插值计算,而插值方式有线性插值,最临近插值等,其中使用最频繁的就是双线性插值计算。另外,神经网络对于图像的输入格式也有一定要求,一般为RGB,而摄像头输出原始数据一般为YUV格式,因此需要用到图像格式转换的算法。
不管是双线性插值计算,还是图像格式转换,其核心计算都是点积计算。下面以双线性插值计算为例,进行描述。
双线性插值法也叫双线性内插,其核心思想是在XY两个方向分别进行一次线性插值。双线性插值作为数值分析中的一种插值算法,广泛应用在信号处理,数字图像和视频处理等方面。
双线性插值是两个变量的插值函数的线性插值扩展,双线性插值的核心思想是在两个方向上分别进行一次线性插值。如图1所示,假设(x,y)为待求点,而(x1,y1),(x1,y2),(x2,y1),(x2,y2)为最邻近的四个点。这四个点的值分别为Q11,Q12,Q21,和Q22。想要得到P点的值,可以先在X方向上,进行两次插值,然后在Y方向上进行一次插值。
P的计算可以简单表示为:
P=W1×Q11+W2×Q12+W3×Q21+W4×Q22;
其中,W1=(x2-x)/(x2-x1)×((y2-y)/(y2-y1)),
W2=(x2-x)/(x2-x1)×((y-y1)/(y2-y1)),
W3=(x-x1)/(x2-x1)×((y2-y)/(y2-y1)),
W4=(x-x1)/(x2-x1)×((y-y1)/(y2-y1))。
而在图像处理中,对于一个目的像素,其对应的源像素点的坐标,基本是浮点数(需要乘除缩放倍数,缩放倍数大概率是浮点数)。假定此坐标为(i+u,j+v),其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数,则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定。计算P的公式中的W1,W2,W3,W4中分母项,(x2-x1)和(y2-y1)都等于1。其计算公式就可以转化为:
f(i+u,j+v)=(1-u)×(1-v)×f(i,j)+(1-u)×v×f(i,j+1)+u×(1-v)×f(i+1,j)+u×v×f(i+1,j+1)。
可以看到,其关键计算为四个输入和四个系数的点积计算。
而在图像处理领域中,会经常遇到需要进行点积的两个操作数的位宽是不一样的。因为像素点灰度值固定为8位无符号整数(uint8),而系数会被量化到2N的定点数值。为了保证精度系数会被量化到16位有符号整数(int16),或者32位有符号整数(int32)。还是以双线性插值计算为例,系数量化到int16就可以满足精度要求,其计算过程可以转化为result=a0×b0+a1×b1+a2×b2+a3×b3,a0,a1,a2,a3分别对应上图中的Q12,Q22,Q11,Q21。加速这个计算过程就可以加速双线新插值计算。
对于当前通用的CPU来说,可以使用单指令多数据(SIMD)技术来加速相关计算。但是面对不同位宽的乘累加计算,需要先进行扩位操作,保证两个输入位宽对齐,才能进行乘累加计算。基于SIMD指令和现有硬件,其计算流程主要有两种方式,以128位寄存器描述如下:
方式一,排布如图2所示,把四个输入数据和四个系数,分别放入五个寄存器中。其计算过程主要有扩位和扩位乘累加两个步骤。该方式需要先将uint8的输入数据,扩位到int16的数据,再进行一次扩位乘法,三次扩位乘累加。
C0=a00×b00+a01×b01+a02×b02+a03×b03,
C1=a10×b00+a11×b01+a12×b02+a13×b03,
C2=a20×b00+a21×b01+a22×b02+a22×b03,
C3=a30×b00+a31×b01+a32×b02+a33×b03,
C0为通道0的输出图像计算结果,C1为通道1的输出图像计算结果,C2为通道2的输出图像计算结果,C3为通道3的输出图像计算结果。
不管是单纯的扩位,还是扩位乘累加计算,总共涉及到八次扩位操作。
方式二,排布如图3所示,把四个输入数据和四个系数,分别放入四个寄存器中。其计算过程主要有扩位和16位点积(dot)计算两个步骤。该方式需要先将uint8的输入数据,扩位到int16的数据,再进行两次16位dot计算。
C0=a00×b00+a01×b01+a02×b02+a03×b03,
C1=a10×b00+a11×b01+a12×b02+a13×b03,
C2=a20×b00+a21×b01+a22×b02+a22×b03,
C3=a30×b00+a31×b01+a32×b02+a33×b03,
C0为通道0的输出图像计算结果,C1为通道1的输出图像计算结果,C2为通道2的输出图像计算结果,C3为通道3的输出图像计算结果。
相比于方式一,方式二使用16位点积计算替代了扩位乘累加计算,减少了四次扩位操作,还需要四次扩位计算。
这些扩位操作,从整个双线性插值计算来看,都只是中间值,不是必须的。而且对于硬件来说,扩位操作回写成本较高,开销较大。一次扩位操作至少需要两个执行周期,或拆分成两条指令执行。而且这两个方式的计算过程中,使用的都是16x16的乘法器,占用较多资源。
发明内容
本发明的目的在于提供一种加速数字图像处理中不同位宽点积的计算方法,通过的元素排布,在复用系数数据的同时,保证了点积的两个输入,有相同的数据总位宽,以便于硬件处理。
为了达到上述目的,本发明采用如下技术方案:
一种加速数字图像处理中不同位宽点积的计算方法,包括如下步骤:
(1)将输入数据按排布放入寄存器,将系数数据按排布放入寄存器,使寄存器和寄存器的总数据长度一致;
(2)取出寄存器中的输入数据和寄存器中的系数数据,将不同位宽的输入数据和系数数据进行点积运算,得到输出图像计算结果。
将输入图像通过缩放生成输出图像,将输入图像像素值作为输入数据放入第一寄存器,即寄存器Vn,将系数数据放入第二寄存器,即寄存器Vp。一般来说图像数据为8bit,系数数据为16bit或者32bit。假设寄存器Vn存有x组输出图像像素值,为了使寄存器Vn和寄存器Vp总数据长度一致,对于16bit的系数数据来说,寄存器Vp存有x/2组系数数据,对于32bit的系数数据来说,寄存器Vp存有x/4组系数数据。
以16bit的系数数据为例,从寄存器Vn中取出第一组输出图像像素值,从寄存器Vp中取出第一组系数数据,通过8×16乘法器进行点积运算,得到结果,重复上述步骤。两组输入图像像素值对应一组系数数据,比如寄存器Vn中第一组和第二组输入图像像素值与寄存器Vp中第一组系数数据进行点积计算,寄存器Vn+1中第三组和第四组输入图像像素值与寄存器Vp中第二组系数数据进行点积计算,依次类推,最后得到输出图像像素值。在16位场景中,16bit的系数,被复用了两次。
对于32bit的系数数据,则是四组组输入图像像素值对应一组系数数据。在32位场景中,32bit的系数,可以被复用四次。
一种使用加速数字图像处理中不同位宽点积的计算方法的双线性差值算法,包括如下步骤:
(1)根据输入图像和输出图像得到缩放系数,并计算输出图像对应到输入图像的像素点坐标;
(2)输出图像像素点的坐标乘以缩放系数,得到对应的输入图像像素点坐标的整数部分和小数部分,整数部分为输入图像坐标值放入内存,小数部分进行量化后计算得到系数值,小数部分量化的方法为:横坐标的小数部分乘以128得到系数u,用128减去u得到(1-u),纵坐标的小数部分乘以128得到系数v,用128减去v得到(1-v),将u和(1-u)记为系数组1,v和(1-v)记为系数组2,系数组1和系数组2进行扩位乘法,得到(1-u)×(1-v),u×(1-v)和u×(1-v),u×v两组系数数据,进行元素交织后重新排序为(1-u)×(1-v),(1-u)×v,u×(1-v),u×v放入第二寄存器,将输入图像像素值作为输入数据按顺序放入第一寄存器,使第一寄存器和第二寄存器总数据长度一致;
(3)从第一寄存器取出输入图像像素值,从第二寄存器取出系数数据,通过乘法器进行点积运算,重复上述步骤直至第一寄存器中所有输出图像像素数据都进行点积运算,得到所有的输出图像像素值。
由于采用上述技术方案,本发明具有以下有益效果:
1、有效解决了不同位宽元素排布问题,保证了元素位宽不同,输入寄存器总长度依然保持对齐。硬件不需要额外增加读口资源,就能高效执行。
2、由于数字图像中,不同通道间系数数据一样,本发明通过该特点实现了通道间系数的复用,有效减少了数据的重复读入执行单元的次数,偶数通道的场景,加速效果尤其明显。
3、省去了计算中需要进行的扩位操作,光从指令数上看,就有非常大的提升。
4、有效的减少了乘法器资源。
附图说明
下面根据附图对本发明作进一步说明。
图1为双线性插值法的原理图。
图2为背景技术中方式一的排布图。
图3为背景技术中方式二的排布图。
图4为实施例1中的排布图。
图5为实施例2中的排布图。
图6为实施例3中的排布图。
图7为实施例4中的排布计算图。
图8为实施例4中的四通道双线性插值法的原理图。
图9为实施例4中的流程图。
具体实施方式
实施例1
一种加速数字图像处理中不同位宽点积的计算方法,包括如下步骤:
(1)在输入图像有2个通道且系数数据是16bit的情况下,假设每个通道的输入值为ack,其中c为通道值,k为每组内像素点索引,系数数据记为b0,b1,b2,b3,通过交织指令,使第一寄存器中的输入数据排布为a00、a01、a02、a03、a10、a11、a12、a13,第二寄存器中系数数据排布为b0、b1、b2、b3,输入数据被放入一个第一寄存器内,排布图如图4所示;
(2)将排布后的两组输入数据a00、a01、a02、a03和a10、a11、a12、a13,分别和系数数据b0、b1、b2、b3通过8×16的乘法器进行一次点积计算,即
C00=a00×b0+a01×b1+a02×b2+a03×b3,
C10=a10×b0+a11×b1+a12×b2+a13×b3,
C00为通道0的输出图像计算结果,C10为通道1的输出图像计算结果。
实施例2
一种加速数字图像处理中不同位宽点积的计算方法,包括如下步骤:
(1)在输入图像有4个通道且系数数据是16bit的情况下,假设每个通道的输入值为ack,其中c为通道值,k为每组内像素点索引,系数数据记为b0,b1,b2,b3,通过交织指令,使其中一个第一寄存器中的输入数据排布为a00、a01、a02、a03、a10、a11、a12、a13,另一个第一寄存器中的输入数据排布为a20、a21、a22、a23、a30、a31、a32、a33,第二寄存器中系数数据排布为b0、b1、b2、b3,输入数据被放入两个第一寄存器内,排布图如图5所示;
(2)在输入图像有4个通道且系数数据是16bit的情况下,基于步骤(1)的排布,通过8×16的乘法器,需要进行两次点积计算,
第一次,两组输入数据a00、a01、a02、a03和a10、a11、a12、a13,分别和系数数据b0、b1、b2、b3通过8×16的乘法器进行点积计算,即
C00=a00×b0+a01×b1+a02×b2+a03×b3,
C10=a10×b0+a11×b1+a12×b2+a13×b3,
第二次,两组输入数据a20、a21、a22、a22和a30、a31、a32、a33,分别和系数数据b0、b1、b2、b3通过8×16的乘法器进行点击计算,即
C20=a20×b0+a21×b1+a22×b2+a22×b3,
C30=a30×b0+a31×b1+a32×b2+a33×b3,
C00为通道0的输出图像计算结果,C10为通道1的输出图像计算结果,C20为通道2的输出图像计算结果,C30为通道3的输出图像计算结果。
实施例3
一种加速数字图像处理中不同位宽点积的计算方法,包括如下步骤:
(1)在输入图像有4个通道且系数数据是32bit的情况下,假设每个通道的输入值为ack,其中c为通道值,k为每组内像素点索引,系数数据记为b0,b1,b2,b3,通过交织指令,使第一寄存器中的输入数据排布为a00、a01、a02、a03、a10、a11、a12、a13、a20、a21、a22、a23、a30、a31、a32、a33,第二寄存器中系数数据排布为b0、b1、b2、b3,输入数据被放入一个第一寄存器内,排布图如图6所示;
(2)在输入图像有4个通道且系数数据是32bit的情况下,基于步骤(1)的排布,通过8×32的乘法器,需要进行一次点积计算,即
C00=a00×b0+a01×b1+a02×b2+a03×b3,
C10=a10×b0+a11×b1+a12×b2+a13×b3,
C20=a20×b0+a21×b1+a22×b2+a22×b3,
C30=a30×b0+a31×b1+a32×b2+a33×b3,
C00为通道0的输出图像计算结果,C10为通道1的输出图像计算结果,C20为通道2的输出图像计算结果,C30为通道3的输出图像计算结果。
实施例4
一种加速数字图像处理中不同位宽点积的计算方法,其中排布如图7所示。以双线性插值法为例,对于四通道的图像,以f(i,j)表示该图像(i,j)点的像素值。四通道的双线性插值原理如图8所示,每个通道的像素点用一个形状(菱形、圆形、三角形和六边形)表示,相同形状的像素点分别表示同一个通道的数据,需要对四个通道分别进行一次插值计算。其中Q11,Q12,Q21和Q22四个点的位置选取,原理与背景技术表述中一致。不一样的是,得到每个Q点位置后,需要连续读取四个点(分别来自四个通道),用以四个通道的插值计算。如图9所示,具体实施步骤如下。
1、根据输入图像和输出图像计算横向缩放系数PW=W输入/W输出,纵向缩放系数PH=H输入/H输出。其中H输入为输入图像尺寸的长,W输入为输入图像尺寸的宽,H输出为输出图像尺寸的长,W输出为输出图像尺寸的宽。
2、将输出图像每个像素点P横坐标的值[0,W输出),分别乘以横向缩放系数PW得到对应输入图像横坐标值[0,Wfloat),将每一项表示为整数部分加小数部分的形式,m表示横坐标整数部分。通过对[0,Wfloat)向下取整,得到其整数部分[0,Wm),然后计算每一项横坐标和对应整数部分的差值,得到相对应的横坐标小数部分。同理,可以得到纵坐标的值[0,H输出),对应的输入坐标的整数部分[0,Hn)和纵坐标小数部分,n表示纵坐标整数部分。
如图8所示,每个输出像素点P对应的四个输入像素点Q11、Q12、Q21、Q22,Q11为f(i,j),Q12为f(i,j+1),Q21为f(i+1,j),Q22为f(i+1,j+1),其中i属于[0,Wm),j属于[0,Hn)。将横坐标整数部分和纵坐标整数部分记为表格T,放入内存备用。将横坐标小数部分和纵坐标小数部分分别乘以128量化到uint8,得到u和v,u为量化后横坐标小数部分,v为量化后纵坐标小数部分,然后用128减去u得到(1-u),用128减去v得到(1-v)。将u,(1-u)记为系数组1,v,(1-v)记为系数组2。将系数组1按照(1-u),u的顺序放入内存,将系数组2按照(1-v),v的顺序放入内存。
3、以寄存器宽度位128位为例,从内存中加载表格T,通过表格T,从输入图像中获取输出图像对应的32个像素点,总共8组,每个通道有2组,每组4个。每组通道的四个点的位置为Q11(i,j),Q12(i,j+1),Q21(i+1,j),Q22(i+1,j+1)。
如图7所示,将每个像素点的灰度值记为ack,其中c为通道值,k为每组内像素点索引。通过交织指令(可见ARM指令集描述手册),将通道1的两组像素点,即a00-a03和a04-a07,按顺序排列放入其中一个第一寄存器,即寄存器Vn,的[0,31]位和[64,95]位,将通道2的两组像素点,即a10-a13和a14-a17,按顺序排列放入寄存器Vn的[32,63]位和[95,127]位。寄存器Vn中存放像素点值,其数据类型为uint8。
此时,通道3和通道4的四组数据,也以相同的排布,放到了另一个第一寄存器,即寄存器Vn+1里面。
4、加载两组系数组1放入寄存器Vm,加载两组系数组2,将每组系数组2各放入寄存器Xk和寄存器Xq。然后使用扩位乘法。此时Vm中为2组(1-u),u数据对,Xk中为得到1组(1-v),v的数据对。分别用Vm和Xk、Xq进行扩位乘法,可以得到(1-u)×(1-v),u×(1-v)和u×(1-v),u×v两组系数。通过交织指令,重新排序为(1-u)×(1-v)即b0,(1-u)×v即b1,u×(1-v)即b2,u×v即b3,放入第二寄存器,即寄存器Vp。如图9所示,寄存器Vp中存放系数,数据类型为int16,排布方式按组连续排布。
5、通过步骤3和步骤4,像素点和对应的系数已经按照图7排布完成。如图4所示,将寄存器Vn中的像素点数据和寄存器Vp中的系数数据进行点积运算,此时用到了8x16的乘法器。具体计算方式如下:
C00=a00×b0+a01×b1+a02×b2+a03×b3
C10=a10×b0+a11×b1+a12×b2+a13×b3
C01=a04×b4+a05×b5+a06×b6+a07×b7
C11=a14×b4+a15×b5+a16×b6+a17×b7
将结果C00、C10、C01、C11存入寄存器C,其中C00、C10、C01、C11数据类型为int32。同理可以得到剩余两个通道的计算结果。
该计算过程,在寄存器Vn和寄存器Vp中数据位宽不一样的情况下,即保证寄存器总数据长度的对齐,又对寄存器Vp中的元素进行了复用。
6、通过两次带饱和截断的操作,把结果从int32缩位到uint8。然后将结果进行一次交织,就可以使用连续存储指令,放入内存。
缩位方法可以如CN202211664911.5所示。
对比例1
同样也是双线性插值法,其中点积的计算如背景技术中的方式一,背景技术中提到的方式一,在整个计算过程中,不同点主要有:
1.步骤3中,方式一每组的四个像素点,分别放在四个寄存器中,如图2所示。
2.步骤4中,方式一不需要进行扩位乘法和排序操作,只需要进行扩位操作。
3.步骤5中,方式一需要先对像素点进行扩位操作,然后使用扩位乘累加操作,分别乘以系数数据进行乘累加。需要用到一次扩位乘法,三次扩位乘累加。这四次乘法计算,对应的是本方案的点积计算。相比于实施例,总共多出8次扩位操作。并且,使用的是16×16的乘法器资源,系数也没有在通道间复用。
4.步骤6中,在存储的时候,由于各个通道分开计算,相比于本方案,需要额外两次的交织操作。
下面,以开源计算机视觉算法库(opencv)为实现平台,分别将基于第五代开源精简指令集(riscv)标准向量1.0的版本和基于riscv标准向量1.0增加本方案实现的版本的resize算法进行了对比,结果如表1所示。
表1
表1中,分别使用实施例4和对比例1进行了图像尺寸缩小1280x720到640x480和图像尺寸放大640x480到1280x720两种计算。其中总指令数表示执行整个resize算法需要的所有指令数总和,包括总通用指令数和总向量指令数;而总向量指令数,仅表示所有的向量指令数的总和。可以看到,不管是图像尺寸缩小,还是图像尺寸放大,实施例1相比于对比例1,都有大于一半的指令数减少。本方案极大的减少了指令数。对应到硬件性能,可以有1倍以上的提升。
以上仅为本发明的具体实施例,但本发明的技术特征并不局限于此。任何以本发明为基础,为解决基本相同的技术问题,实现基本相同的技术效果,所作出地简单变化、等同替换或者修饰等,皆涵盖于本发明的保护范围之中。
Claims (10)
1.一种加速数字图像处理中不同位宽点积的计算方法,其特征在于,包括如下步骤:
(1)将输入数据按排布放入第一寄存器,将系数数据按排布放入第二寄存器,使第一寄存器和第二寄存器的总数据长度一致;
(2)取出第一寄存器中的输入数据和第二寄存器中的系数数据,将不同位宽的输入数据和系数数据进行点积运算,得到输出图像计算结果。
2.根据权利要求1所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于:步骤(1)中,每一个输出数据都会对应n个输入数据和t个系数数据,将相应的n个输入数据和t个系数数据连续排布,满足点积计算的排布需求,其中n和t分别为大于零的整数。
3.根据权利要求1所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于:步骤(2)中,点积运算时对第二寄存器中的系数进行复用,对于同一个第一寄存器内的不同组输入数据,其乘以的系数值相同,复用次数为系数位宽/输入数据位宽。
4.根据权利要求2所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于,步骤(1)中,使第一寄存器和第二寄存器的总数据长度一致的方法如下:在输入图像有2个通道且系数数据是16bit的情况下,假设每个通道的输入值为ack,其中c为通道值,k为每组内像素点索引,系数数据记为b0,b1,b2,b3,通过交织指令,使第一寄存器中的输入数据排布为a00、a01、a02、a03、a10、a11、a12、a13,第二寄存器中系数数据排布为b0、b1、b2、b3,输入数据被放入一个第一寄存器内。
5.根据权利要求4所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于:步骤(2)中,基于步骤(1)的排布,将排布后的两组输入数据a00、a01、a02、a03和a10、a11、a12、a13,分别和系数数据b0b1b2b3通过8×
16的乘法器进行一次点积计算,即
C00=a00×b0+a01×b1+a02×b2+a03×b3,
C10=a10×b0+a11×b1+a12×b2+a13×b3,
C00为通道0的输出图像计算结果,C10为通道1的输出图像计算结果。
6.根据权利要求2所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于,步骤(1)中,使第一寄存器和第二寄存器的总数据长度一致的方法如下:在输入图像有4个通道且系数数据是16bit的情况下,假设每个通道的输入值为ack,其中c为通道值,k为每组内像素点索引,系数数据记为b0,b1,b2,b3,通过交织指令,使其中一个第一寄存器中的输入数据排布为a00、a01、a02、a03、a10、a11、a12、a13,另一个第一寄存器中的输入数据排布为a20、a21、a22、a23、a30、a31、a32、a33,第二寄存器中系数数据排布为b0、b1、b2、b3,输入数据被放入两个第一寄存器内。
7.根据权利要求6所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于:步骤(2)中,在输入图像有4个通道且系数数据是16bit的情况下,基于步骤(1)的排布,通过8×16的乘法器,需要进行两次点积计算,
第一次,两组输入数据a00、a01、a02、a03和a10、a11、a12、a13,分别和系数数据b0、b1、b2、b3通过8×16的乘法器进行点积计算,即
C00=a00×b0+a01×b1+a02×b2+a03×b3,
C10=a10×b0+a11×b1+a12×b2+a13×b3,
第二次,两组输入数据a20、a21、a22、a22和a30、a31、a32、a33,分别和系数数据b0、b1、b2、b3通过8×16的乘法器进行点击计算,即
C20=a20×b0+a21×b1+a22×b2+a22×b3,
C30=a30×b0+a31×b1+a32×b2+a33×b3,
C00为通道0的输出图像计算结果,C10为通道1的输出图像计算结果,C20为通道2的输出图像计算结果,C30为通道3的输出图像计算结果。
8.根据权利要求2所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于,步骤(1)中,使第一寄存器和第二寄存器的总数据长度一致的方法如下:在输入图像有4个通道且系数数据是32bit的情况下,假设每个通道的输入值为ack,其中c为通道值,k为每组内像素点索引,系数数据记为b0,b1,b2,b3,通过交织指令,使第一寄存器中的输入数据排布为a00、a01、a02、a03、a10、a11、a12、a13、a20、a21、a22、a23、a30、a31、a32、a33,第二寄存器中系数数据排布为b0、b1、b2、b3,输入数据被放入一个第一寄存器内。
9.根据权利要求8所述一种加速数字图像处理中不同位宽点积的计算方法,其特征在于:步骤(2)中,在输入图像有4个通道且系数数据是32bit的情况下,基于步骤(1)的排布,通过8×32的乘法器,需要进行一次点积计算,即
C00=a00×b0+a01×b1+a02×b2+a03×b3,
C10=a10×b0+a11×b1+a12×b2+a13×b3,
C20=a20×b0+a21×b1+a22×b2+a22×b3,
C30=a30×b0+a31×b1+a32×b2+a33×b3,
C00为通道0的输出图像计算结果,C10为通道1的输出图像计算结果,C20为通道2的输出图像计算结果,C30为通道3的输出图像计算结果。
10.一种使用如权利要求1-9任意一项所述加速数字图像处理中不同位宽点积的计算方法的双线性差值算法,其特征在于,包括如下步骤:
(1)根据输入图像和输出图像得到缩放系数,并计算输出图像对应到输入图像的像素点坐标;
(2)输出图像像素点的坐标乘以缩放系数,得到对应的输入图像像素点坐标的整数部分和小数部分,整数部分为输入图像坐标值放入内存,小数部分进行量化后计算得到系数值,小数部分量化的方法为:横坐标的小数部分乘以128得到系数u,用128减去u得到(1-u),纵坐标的小数部分乘以128得到系数v,用128减去v得到(1-v),将u和(1-u)记为系数组1,v和(1-v)记为系数组2,系数组1和系数组2进行扩位乘法,得到(1-u)×(1-v),u×(1-v)和u×(1-v),u×v两组系数数据,进行元素交织后重新排序为(1-u)×(1-v),(1-u)×v,u×(1-v),u×v放入第二寄存器,将输入图像像素值作为输入数据按顺序放入第一寄存器,使第一寄存器和第二寄存器总数据长度一致;
(3)从第一寄存器取出输入图像像素值,从第二寄存器取出系数数据,通过乘法器进行点积运算,重复上述步骤直至第一寄存器中所有输出图像像素数据都进行点积运算,得到所有的输出图像像素值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311195824.4A CN117372495A (zh) | 2023-09-15 | 2023-09-15 | 一种加速数字图像处理中不同位宽点积的计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311195824.4A CN117372495A (zh) | 2023-09-15 | 2023-09-15 | 一种加速数字图像处理中不同位宽点积的计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117372495A true CN117372495A (zh) | 2024-01-09 |
Family
ID=89395385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311195824.4A Granted CN117372495A (zh) | 2023-09-15 | 2023-09-15 | 一种加速数字图像处理中不同位宽点积的计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117372495A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030225998A1 (en) * | 2002-01-31 | 2003-12-04 | Khan Mohammed Noshad | Configurable data processor with multi-length instruction set architecture |
US20160125263A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
CN109298886A (zh) * | 2017-07-25 | 2019-02-01 | 合肥君正科技有限公司 | Simd指令执行方法、装置及处理器 |
CN109726806A (zh) * | 2017-10-30 | 2019-05-07 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
CN114064122A (zh) * | 2021-11-12 | 2022-02-18 | 龙芯中科技术股份有限公司 | 指令处理方法、装置、设备及存储介质 |
US20230108629A1 (en) * | 2021-10-04 | 2023-04-06 | Arm Limited | Matrix Multiply Accelerator For Variable Bitwidth Operands |
-
2023
- 2023-09-15 CN CN202311195824.4A patent/CN117372495A/zh active Granted
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030225998A1 (en) * | 2002-01-31 | 2003-12-04 | Khan Mohammed Noshad | Configurable data processor with multi-length instruction set architecture |
US20160125263A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
CN109298886A (zh) * | 2017-07-25 | 2019-02-01 | 合肥君正科技有限公司 | Simd指令执行方法、装置及处理器 |
CN109726806A (zh) * | 2017-10-30 | 2019-05-07 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
US20230108629A1 (en) * | 2021-10-04 | 2023-04-06 | Arm Limited | Matrix Multiply Accelerator For Variable Bitwidth Operands |
CN114064122A (zh) * | 2021-11-12 | 2022-02-18 | 龙芯中科技术股份有限公司 | 指令处理方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
石蕤: "基于RISC-Ⅴ架构的扩展指令微处理器设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 March 2022 (2022-03-15), pages 137 - 59 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4635292A (en) | Image processor | |
JP2628493B2 (ja) | コサイン変換計算装置並びに計算装置等を備えた画像コード装置及び画像デコード装置 | |
JP4064989B2 (ja) | パック・データの乗加算演算を実行する装置 | |
US5825680A (en) | Method and apparatus for performing fast division | |
US8094164B1 (en) | Decompression of block encoded texture data | |
US20060112159A1 (en) | Processor | |
JP4635087B2 (ja) | 拡張関数のための向上した浮動小数点演算部 | |
KR100331136B1 (ko) | 멀티미디어정보용역코사인변환함수를수행하는컴퓨터시스템 | |
US20040062308A1 (en) | System and method for accelerating video data processing | |
US6330282B1 (en) | Block matching arithmetic device and recording medium readable program-recorded machine | |
KR100919236B1 (ko) | 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법 | |
US8681173B2 (en) | Device, system, and method for improving processing efficiency by collectively applying operations | |
US5742529A (en) | Method and an apparatus for providing the absolute difference of unsigned values | |
US5933160A (en) | High-performance band combine function | |
WO1996004733A9 (en) | System and method for inverse discrete cosine transform implementation | |
US5864372A (en) | Apparatus for implementing a block matching algorithm for motion estimation in video image processing | |
CN117372495A (zh) | 一种加速数字图像处理中不同位宽点积的计算方法 | |
JPH06149861A (ja) | Dct及び逆dct演算装置並びにその演算方法 | |
JP4243277B2 (ja) | データ処理装置 | |
CN112712168A (zh) | 一种实现神经网络高效计算的方法及*** | |
JP3052516B2 (ja) | 符号化データ処理装置 | |
JP3155383B2 (ja) | 2モード処理装置、2次元変換装置及び静止画像データの圧縮システム | |
US5984515A (en) | Computer implemented method for providing a two dimensional rotation of packed data | |
CN116227507B (zh) | 一种用于进行双线性插值处理的运算装置 | |
CN117376582A (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 |