一种彩色图图像均值预处理的优化方法技术

技术编号:36648899 阅读:11 留言:0更新日期:2023-02-18 13:10
本发明专利技术提供了一种彩色图图像均值预处理的优化方法,针对RGB彩色图,每次加载64*3个图像数据,一个寄存器加载16个8bit数据,使用12个变量寄存器;再将加载的寄存器数据转化为16比特,增加6个中间转化的寄存器将其中3个变量寄存器进行转化,使用3个寄存器进行16bit数据的累加,累加后再对其余变量寄存器数据进行转化和累加;当3个寄存器累加到256次时,对数据进行右移位8位,等价计算为除以256,再使用3个新寄存器对移位后3个寄存器进行累加,该3个寄存器初始化为0再重新累加加载新数据;再使用所述3个新寄存器对移位后的3个寄存器进行累加,当累加到256次时,将结果保存到三个数组中;将数组数据再进行累加,再求RGB每个通道的均值。实现速度提升。实现速度提升。实现速度提升。

【技术实现步骤摘要】
一种彩色图图像均值预处理的优化方法


[0001]本专利技术涉及图像处理
,特别涉及一种彩色图图像均值预处理的优化方法。

技术介绍

[0002]在现有的图像处理技术中,图像处理的图像有两种情况,灰度图和彩色图,由于彩色图与灰色图的不同,使用灰色图的处理方法无法处理彩色图,对于结果处理,彩色图也是不同与灰度图的处理方法。在处理过程中经常会使用累加和求均值的方法,但是普通的加和、普通的均值计算,速度会很慢,例如北京君正T30、T31型号的芯片,计算均值的速度会拖延整体的运行速度。这个时间增加,导致增大整体的时间。使用普通的一个数一个数的累加,可以理解为C的一种实现,一般simd指令无法实现连续累加,没有相关的simd实现方法。对于彩色图累加,一般是对同一个通道的数据进行累加,跳跃着累加。simd实现更难,而且没有跳跃累加。
[0003]另外,现有技术中的常用术语如下:
[0004]1、均值:均值一般指平均数。平均数,统计学术语,是表示一组数据集中趋势的量数,是指在一组数据中所有数据之和再除以这组数据的个数。它是反映数据集中趋势的一项指标。解答平均数应用题的关键在于确定“总数量”以及和总数量对应的总份数。
[0005]2、RGB彩色图:有三个通道的图像,三个像素是按照RGB顺序存储。
[0006]3、simd指令(singleinstructionmultipledata),即一种以向量方式计算的指令。单指令流多数据流,也就是说一次运算指令可以执行多个数据流,这样在很多时候可以提高程序的运算速度。simd指令可以理解为运行一次指令,运行指定大小数组的运算。128bit的simd指令,数组大小是用128bit定义,放16个8bit数据,或放4个32比特数据,或放8个16bit数据。例如“两个数组”相加,一条simd指令直接就得到。

技术实现思路

[0007]为了解决上述现有技术中的问题,本申请的目的在于:提高计算均值的速度。可以实现40倍的提升。
[0008]具体地,本专利技术提供一种彩色图图像均值预处理的优化方法,所述方法针对RGB彩色图,每次加载64*3个图像数据,一个寄存器加载16个8bit数据,使用12个变量寄存器,分别为vrdr0,vrdg0,vrdb0,vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3;再将加载的寄存器数据转化为16比特,增加6个中间转化的寄存器vrd_r0、vrd_r1,vrd_g0、vrd_g1,vrd_b0、vrd_b1,将vrdr0,vrdg0,vrdb0,转化为vrd_r0、vrd_r1,vrd_g0、vrd_g1,vrd_b0、vrd_b1,使用3个寄存器sum_hr0,sum_hg0sum_hb0进行16bit数据的累加,累加后,再对vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3进行转化和累加;当sum_hr0,sum_hg0 sum_hb0累加到256次时,对数据进行右移位8位,等价计算为除以256,再使用3个寄存器sum_hr1、sum_hg1、sum_hb1对移位后的sum_hr0、sum_hg0、sum_hb0进行累
加,而sum_hr0、sum_hg0、sum_hb0初始化为0,再重新累加加载的新的数据;使用sum_hr1、sum_hg1、sum_hb1对移位后的sum_hr0、sum_hg0、sum_hb0进行累加,sum_hr1、sum_hg1、sum_hb1累加到256次时,将sum_hr1、sum_hg1、sum_hb1的结果保存到三个数组中;最后将三个数组的数据,再进行累加,再求RGB每个通道的均值。
[0009]所述方法进一步包括:
[0010]S1,初始化和使用的变量寄存器声明:
[0011]设vri0为将8bit寄存器中的前8个数据转化为16bit的选择寄存器,vri1为将8bit寄存器中的后8个数据转化为16bit的选择寄存器;
[0012]预处理的数据为indata,数据宽为width,长为height,数据总数为piel_count=width*height;
[0013]设一个数据组为vsave[3][8],一个常规临时变量sum_intr,sum_intg,sum_intb,均值为avgr,avgg,avgb,统计sum_hr1、sum_hg1、sum_hb1累加次数的计算器count,初始为0;
[0014]S2,加载64*3个图像数据到vrdr0,vrdg0,vrdb0,vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3,然后再对indata指针进行变化,即indata=indata+64*3;
[0015]S3,使用设置好的选择顺序实现对数据由8bit转化为16bit,即设置两个选择的寄存器vri0,vri1,并对里面的具体选择顺序预先设计好;转化16bit的寄存器为vrd_r1、vrd_r0、vrd_g1、vrd_g0、vrd_b1、vrd_b0;使用3个寄存器sum_hr0,sum_hg0,sum_hb0进行16bit数据vrd_r1、vrd_r0、vrd_g1、vrd_g0、vrd_b1、vrd_b0的累加;累加后,再对vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3进行转化为16bit,再进行累加,第一次累计和需要初始化时,sum_hr0,sum_hg0,sum_hb0内数据为0;
[0016]S4,重复步骤S2、S3直到循环次数达到256次时,对sum_hr0,sum_hg0,sum_hb0进行移位处理,再将处理后结果累加到sum_hr1,sum_hg1,sum_hb1中,最后将sum_hr0,sum_hg0,sum_hb0内的数据置0,同时count加1;
[0017]S5,重复步骤S2、S3、S4,直到循环次数达到256次时,将sum_hr1,sum_hg1,sum_hb1保存到vsave[0][8],vsave[1][8],vsave[2][8],中,对vsave的数据进行求和为sum_intr,sum_intg,sum_intb;sum_hr1,sum_hg1,sum_hb1内的数据置为0,重复步骤S2、S3、S4,直至所有数据计算完;
[0018]S6,将sum_hr1,sum_hg1,sum_hb1保存到vsave[0][8],vsave[1][8],vsave[2][8]中,对vsave的数据进行求和为sum_intr,sum_intg,sum_intb.累加的次数为count;
[0019]S7,求均值:求和除以累加的次数。
[0020]所述方法应用于具有simd指令的芯片,对相应的指令集进行优化处理,处理的目标的长*宽为2048的倍数的图像,这里图像均值预处理要求的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种彩色图图像均值预处理的优化方法,其特征在于,所述方法针对RGB彩色图,每次加载64*3个图像数据,一个寄存器加载16个8bit数据,使用12个变量寄存器,分别为vrdr0,vrdg0,vrdb0,vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3;再将加载的寄存器数据转化为16比特,增加6个中间转化的寄存器vrd_r0、vrd_r1,vrd_g0、vrd_g1,vrd_b0、vrd_b1,将vrdr0,vrdg0,vrdb0,转化为vrd_r0、vrd_r1,vrd_g0、vrd_g1,vrd_b0、vrd_b1,使用3个寄存器sum_hr0,sum_hg0sum_hb0进行16bit数据的累加,累加后,再对vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3进行转化和累加;当sum_hr0,sum_hg0 sum_hb0累加到256次时,对数据进行右移位8位,等价计算为除以256,再使用3个寄存器sum_hr1、sum_hg1、sum_hb1对移位后的sum_hr0、sum_hg0、sum_hb0进行累加,而sum_hr0、sum_hg0、sum_hb0初始化为0,再重新累加加载的新的数据;使用sum_hr1、sum_hg1、sum_hb1对移位后的sum_hr0、sum_hg0、sum_hb0进行累加,sum_hr1、sum_hg1、sum_hb1累加到256次时,将sum_hr1、sum_hg1、sum_hb1的结果保存到三个数组中;最后将三个数组的数据,再进行累加,再求RGB每个通道的均值。2.根据权利要求1所述的一种彩色图图像均值预处理的优化方法,其特征在于,所述方法进一步包括:S1,初始化和使用的变量寄存器声明:设vri0为将8bit寄存器中的前8个数据转化为16bit的选择寄存器,vri1为将8bit寄存器中的后8个数据转化为16bit的选择寄存器;预处理的数据为indata,数据宽为width,长为height,数据总数为piel_count=width*height;设一个数据组为vsave[3][8],一个常规临时变量sum_intr,sum_intg,sum_intb,均值为avgr,avgg,avgb,统计sum_hr1、sum_hg1、sum_hb1累加次数的计算器count,初始为0;S2,加载64*3个图像数据到vrdr0,vrdg0,vrdb0,vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3,然后再对indata指针进行变化,即indata=indata+64*3;S3,使用设置好的选择顺序实现对数据由8bit转化为16bit,即设置两个选择的寄存器vri0,vri1,并对里面的具体选择顺序预先设计好;转化16bit的寄存器为vrd_r1、vrd_r0、vrd_g1、vrd_g0、vrd_b1、vrd_b0;使用3个寄存器sum_hr0,sum_hg0,sum_hb0进行16bit数据vrd_r1、vrd_r0、vrd_g1、vrd_g0、vrd_b1、vrd_b0的累加;累加后,再对vrdr1,vrdg1,vrdb1,vrdr2,vrdg2,vrdb2,vrdr3,vrdg3,vrdb3进行转化为16bit,再进行累加,第一次累计和需要初始化时,sum_hr0,sum_hg0,sum_hb0内数据为0;S4,重复步骤S2、S3直到循环次数达到256次时,对sum_hr0,sum_hg0,sum_hb0进行移位处理,再将处理后结果累加到sum_hr1,sum_hg1,sum_hb1中,最后将sum_hr0,sum_hg0,sum_hb0内的数据置0,同时count加1;S5,重复步骤S2、S3、S4,直到循环次数达到256次时,将sum_hr1,sum_hg1,sum_hb1保存到vsave[0][8],vsave[1][8],vsave[2][8],中,对vsave的数据进行求和为sum_intr,sum_intg,sum_intb;sum_hr1,sum_hg1,sum_hb1内的数据置为0,重复步骤S2、S3、S4,直至所有数据计算完;S6,将sum_hr1,sum_hg1,sum_hb1保存到vsave[0][8],vsave[1][8],vsave[2][8]中,对vsave的数据进行求和为sum_intr,sum_intg,sum_intb,累加的次数为count;
S7,求均值:求和除以累加的次数。3.根据权利要求2所述的一种彩色图图像均值预处理的优化方法,其特征在于,所述方法应用于具有simd指令的芯片,对相应的指令集进行优化处理,处理的目标的长*宽为2048的倍数的图像,这里图像均值预处理要求的精度误差在1以内,使用的相应的指令集有加法指令、移位指令、任意取值指令、除法指令、加载数据指令、保存数据指令。4.根据权利要求3所述的一种彩色图图像均值预处理的优化方法,其特征在于,所述方法应用于北京君正T30、T31型号芯片。5.根据权利要求3所述的一种彩色图图像均值预处理的优化方法,其特征在于,所述的加法指令、移位指令、任意取值指令、除法指令、加载数据指令、保存数据指令,如下:a)加法指令,表示为:vrd=ingenic_add_h(vrs,vrt);输入变量vrs,vrt,输出变量是vrd;vrd存储的是8个int16_t的数据,vrs和vrt存储的是8个int16_t数据;等价的运算:vrd0:=vrs0+vrt0;vrd1:=vrs1+vrt1;
……
vrd7:=vrs7+vrt7;b)移位指令:将变量里的每个元素进行移位,移动i位;左移移位指令,表示为:vrd=ingenic_shift_left(vrs,i)右移移位指令,表示为:vrd=ingenic_shift_right(vrs,i);c)任意取值指令:从变量vrs和vrt中根据vri设置的编号选择出4个或8个或16个数据,在使用该指令时,需要占有一个永久寄存器vri,用于指令选择具体位置的数据;表示为:vrd=ingenic_choise_h(vrs,vrt,vri);d)除法指令:表示为:vrd=ingenic_div_d(vrs,vrt);输入变量vrs,vrt...

【专利技术属性】
技术研发人员:田凤彬于晓静
申请(专利权)人:北京君正集成电路股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1