一种利用均值均衡图像像素的优化方法技术

技术编号:36648918 阅读:15 留言:0更新日期:2023-02-18 13:10
本发明专利技术提供了一种利用均值均衡图像像素的优化方法,所述方法应用于具有simd指令集的芯片,对相应的指令集进行优化处理,处理的目标图像的长*宽为2048的倍数,使用乘法指令和移位指令实现等价的除法运算,即对数据采取乘以一个乘数再移动移位数的方法实现处理;通过计算出乘数和移位数,进而完成对灰度图或彩色图的优化操作。使用本发明专利技术大幅度提高计算均值的速度,简单易操作,很好的实现了优化的目的。很好的实现了优化的目的。很好的实现了优化的目的。

【技术实现步骤摘要】
一种利用均值均衡图像像素的优化方法


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

技术介绍

[0002]在现有的图像处理技术中,经常会使用求均值的方法,但是普通的加和、普通的均值计算,速度会很慢,芯片的应用也因为需求不同所有不同,例如北京君正集成电路股份有限公司(简称:北京君正)的芯片,现有技术的方法应用于北京君正的T30、T31型号的芯片时,计算均值的速度会严重影响整体的运行速度。
[0003]现有技术中的常用术语如下:
[0004]1、均值:均值一般指平均数。平均数,统计学术语,是表示一组数据集中趋势的量数,是指在一组数据中所有数据之和再除以这组数据的个数。它是反映数据集中趋势的一项指标。解答平均数应用题的关键在于确定“总数量”以及和总数量对应的总份数。
[0005]2、特征图:输入数据通过卷积计算后得到的结果称之为特征图,数据通过全连接后生成的结果也称为特征图。特征图大小一般表示为长
×

×
深度,或1
×
深度。

技术实现思路

[0006]为了解决上述现有技术中的问题,本申请的目的在于:提高芯片的计算均值的速度,特别是针对具有simd指令集的芯片的计算。
[0007]具体地,本专利技术提供一种利用均值均衡图像像素的优化方法,所述方法应用于具有simd指令集的芯片,对相应的指令集进行优化处理,处理的目标图像的长*宽为2048的倍数,使用乘法指令和移位指令实现等价的除法运算,即对数据采取乘以一个乘数再移动移位数的方法实现处理;通过计算出乘数和移位数,进而完成对灰度图或彩色图的优化操作。
[0008]所述方法进一步包括:
[0009]S1,计算记为mul的乘数和记为shift的移位数:
[0010]设均值为avgr,avgg,avgb,均衡的目标均值为avg0;
[0011]设sacle=avg0/avgr,循环次数为count,初始化count=0;
[0012]S1.1,如果sacle>1:则sacle=sacle/2;count=count+1;
[0013]否则,
[0014]mul=round(sacle*(256>>count)),即mul为通过round()函数返回的一个数值,该数值是sacle乘以(256右移count位)的结果;
[0015]shift=8

count;
[0016]S1.2,如果sacle<1:则sacle=sacle*2;count=count+1;
[0017]否则,
[0018]mul=round(sacle*(256<<count)),即mul为通过round()函数返回的一个数值,该数值是sacle*(256左移count位)的结果;
[0019]shift=8+count;
[0020]设预处理的一个值为a0,sacle=avg0/avgr;
[0021]设a2=(a0*mul)>>shift,即使用本方法求得值a2为(a0*mul)的数值右移shift位;
[0022]如果sacle>1,则
[0023]a2=={a0*[round(sacle*(256>>count))]}>>shift,即
[0024]a2为a0乘以round()函数返回的数值后再右移shift位,所述返回的数值是sacle乘以(256右移count位)的结果;
[0025]a2={round[a0*(sacle*(256>>count))]}>>shift,即
[0026]a2为round()函数返回的数值后再右移shift位,所述返回的数值是a0乘以sacle乘以(256右移count位)的结果;
[0027]a2=[round(a0*sacle*(256>>count))]>>(8

count),即
[0028]a2为round()函数返回的数值后再右移(8

count)位,所述返回的数值是a0乘以sacle乘以(256右移count位)的结果;
[0029]a2=[round(a0*sacle*256)]>>8,即
[0030]a2为round()函数返回的数值后再右移8位,所述返回的数值是a0乘以sacle乘以256的结果;
[0031]a2=round(a0*sacle),即
[0032]a2为round()函数返回的一个数值,所述数值是a0乘以sacle的结果;
[0033]如果sacle<1,则
[0034]a2=={a0*[round(sacle*(256<<count))]}>>shift,即
[0035]a2为a0乘以round()函数返回的数值后再右移shift位,所述返回的数值是sacle乘以(256左移count位)的结果;
[0036]a2={round[a0*(sacle*(256<<count))]}>>shift,即
[0037]a2为round()函数返回的数值后再右移shift位,所述返回的数值是a0乘以sacle乘以(256左移count位)的结果;
[0038]a2=[round(a0*sacle*(256<<count))]>>(8+count),即
[0039]a2为round()函数返回的数值后再右移(8+count)位,所述返回的数值是a0乘以sacle乘以(256左移count位)的结果;
[0040]a2=[round(a0*sacle*256)]>>8,即
[0041]a2为round()函数返回的数值后再右移8位,所述返回的数值是a0乘以sacle乘以256的结果;
[0042]a2=round(a0*sacle),即
[0043]a2为round()函数返回的数值,所述返回的数值是a0乘以sacle的结果;
[0044]S1.3,sacle=1,灰度图不用计算,而彩色图,如果三个通道的sacle都为1,那么就不用计算,如果有一个不是1,那么就需要计算;
[0045]S2,对图像进行优化处理;
[0046]加载图像数据到变量寄存器,再对indata本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种利用均值均衡图像像素的优化方法,其特征在于,所述方法应用于具有simd指令集的芯片,对相应的指令集进行优化处理,处理的目标图像的长*宽为2048的倍数,使用乘法指令和移位指令实现等价的除法运算,即对数据采取乘以一个乘数再移动移位数的方法实现处理;通过计算出乘数和移位数,进而完成对灰度图或彩色图的优化操作。2.根据权利要求1所述的一种利用均值均衡图像像素的优化方法,其特征在于,所述方法进一步包括:S1,计算记为mul的乘数和记为shift的移位数:设均值为avgr,avgg,avgb,均衡的目标均值为avg0;设sacle=avg0/avgr,循环次数为count,初始化count=0;S1.1,如果sacle>1:则sacle=sacle/2;count=count+1;否则,mul=round(sacle*(256>>count)),即mul为通过round()函数返回的一个数值,该数值是sacle乘以(256右移count位)的结果;shift=8

count;S1.2,如果sacle<1:则sacle=sacle*2;count=count+1;否则,mul=round(sacle*(256<<count)),即mul为通过round()函数返回的一个数值,该数值是sacle*(256左移count位)的结果shift=8+count;设预处理的一个值为a0,sacle=avg0/avgr;设a2=(a0*mul)>>shift,即使用本方法求得值a2为(a0*mul)的数值右移shift位;如果sacle>1,则a2=={a0*[round(sacle*(256>>count))]}>>shift,即a2为a0乘以round()函数返回的数值后再右移shift位,所述返回的数值是sacle乘以(256右移count位)的结果;a2={round[a0*(sacle*(256>>count))]}>>shift,即a2为round()函数返回的数值后再右移shift位,所述返回的数值是a0乘以sacle乘以(256右移count位)的结果;a2=[round(a0*sacle*(256>>count))]>>(8

count),即a2为round()函数返回的数值后再右移(8

count)位,所述返回的数值是a0乘以sacle乘以(256右移count位)的结果;a2=[round(a0*sacle*256)]>>8,即a2为round()函数返回的数值后再右移8位,所述返回的数值是a0乘以sacle乘以256的结果;a2=round(a0*sacle),即a2为round()函数返回的一个数值,所述数值是a0乘以sacle的结果;如果sacle<1,则a2=={a0*[round(sacle*(256<<count))]}>>shift,即a2为a0乘以round()函数返回的数值后再右移shift位,所述返回的数值是sacle乘以(256左移count位)的结果;
a2={round[a0*(sacle*(256<<count))]}>>shift,即a2为round()函数返回的数值后再右移shift位,所述返回的数值是a0乘以sacle乘以(256左移count位)的结果;a2=[round(a0*sacle*(256<<count))]>>(8+count),即a2为round()函数返回的数值后再右移(8+count)位,所述返回的数值是a0乘以sacle乘以(256左移count位)的结果;a2=[round(a0*sacle*256)]>>8,即a2为round()函数返回的数值后再右移8位,所述返回的数值是a0乘以sacle乘以256的结果;a2=round(a0*sacle),即a2为round()函数返回的数值,所述返回的数值是a0乘以sacle的结果;S1.3,sacle=1,灰度图不用计算,而彩色图,如果三个通道的sacle都为1,那么就不用计算,如果有一个不是1,那么就需要计算;S2,对图像进行优化处理;加载图像数据到变量寄存器,再对indata指针进行变化,使用设置好的选择顺序实现对数据由8bit转化为16bit;进行乘法运算和移位运算;使用设置好的选择顺序实现对数据由16bit转化为8bit;对寄存器里的数据进行保存,保存到savedata里面,然后对savedata指针进行变化,重复上述步骤直到最后一个像素处理完。3.根据权利要求2所述的一种利用均值均衡图像像素的优化方法,其特征在于,所述步骤S2进一步包括,S2.1,对灰度图进行优化处理:设乘数为mul_0,移位数为shift_0;S2.1.1,加载128个图像数据到8个变量寄存器,再对indata指针进行变化,即indata=indata+128;S2.1.2,使用设置好的选择顺序实现对数据由8bit转化为16bit;S2.1.3,进行乘法运算和移位运算;S2.1.4,使用设置好的选择顺序实现对数据由16bit转化为8bit;S2.1.5,对寄存器里的数据进行保存,保存到savedata里面,然后对savedata指针进行变化,即savedata=savedata+128;S2.1.6,重复S2.1.1,S2.1.2,S2.1.3,S2.1.4,S2.1.5,直到最后一个像素处理完。4.根据权利要求2所述的一种利用均值均衡图像像素的优化方法,其特征在于,所述步骤S2进一步包括:S2.2,对彩色图进行优化处理:设计算得到的乘数为mul_r,mul_g,mul_b,移位数为shift_r,shitf_g,shitf_b;S2.2.1,加载64*3个图像数据到12个变量寄存器,再对indata指针进行变化,即indata=indata+64*3;S2.2.2,使用设置好的选择顺序实现对数据由8bit转化为16bit;再进行乘法指令运算和移位指令运算;将乘法运算和移位运算结果转化为8bit并存放到寄存器中;S2.2.3,对寄存器里的数据进行保存,保存到savedata里面,然后对savedata指针进行变化,即savedata=savedata+64*3;
S2.2.4,重复S2.2.1,S2.2.2,S2.2.3,直到最后一个像素处理完。5.根据权利要求3或4所述的一种利用均值均衡图像像素的优化方法,其特征在于,所述方法的图像均值预处理要求的精度误差在1以内,使用的相应的指令集有加法指令、移位指令、任意取值指令、除法指令、加载数据指令、保存数据指令。6.根据权利要求5所述的一种利用均值均衡图像像素的优化方法,其特征在于,所述指令,进一步包括:a)移位指令:将变量里的每个元素进行移位,对应位置移动vri[i]位,这里的移位运算带有四舍五入的运算,vrs里面每个数据移位的多少与vri中数据对应;左移移位simd指令vrd=ingenic_vshift_left(vrs,vri);右移移位simd指令vrd=ingenic_vshift_right(vrs,vri);b)任意取值指令:从变量vrs和vrt中根据vri设置的编号选择出4个或8个或16个数据,在使用该指令时,需要占有一个永久寄存器vri,用于指令选择具体位置的数据,vrd=ingenic_choise_h(vrs,vrt,vri);c)加载数据指令:输入的待载入的数据,当前是数据的指针indata,从该数据indata在内存里指向的位置m开始加载128bit的数据,如果是8bit的数据是加载16个,如果是16bit数据加载8个,如果是32bit,加载4个数据;数据加载到变量vrd寄存器中,其中m是按照byte,即8bit为一个单位计算,vrd=ingenic_load(indata,m);d)保存数据指令:待保存数据的寄存器变量vrd,存储数据的指针savedata,从该指针位置开始存储寄存器里的数据,将vrd里面的128bit数据存储到savedata,m是按照byte,即8bit为一个单位计算,从该数据savedata在内存里指向的位置m开始加载128bit的数据,ingenic_save(vrd,savedata,m);e)乘法simd指令:vrd=ingenic_mul_h(vrs,vrt);输入变量vrs,vrt,输出变量是vrd,vrd存储的是8个int16_t的数据,vrs和vrt存储的是8个int16_t数据;等价的运算:vrd0:=vrs0*vrt0;vrd1:=vrs1*vrt1;
……
vrd7:=vrs7*vrt7。7.根据权利要求6所述的一种利用均值均衡图像像素的优化方法,其特征在于,所述步骤S2中灰度图的优化进一步包括:使用的变量寄存器的声明:vrd0,vrd1,

,vrd7;被乘数使用的寄存器vmul,里面存放8个一样的mul_0,是16bit的8个数据;移位数使用的寄存器为vshift,存放8个一样的shift_0;所述步骤S2.1.1进一步包括,表示如下:
vrd0=ingenic_load(indata,0);vrd2=ingenic_load(indata,16);vrd4=ingenic_load(indata,32);vrd6=ingenic_load(indata,48);vrd8=ingenic_load(indata,64);vrd10=ingenic_load(indata,80);vrd12=ingenic_load(indata,96);vrd14=ingenic_load(indata,112);indata=indata+128;所述步骤S2.1.2进一步包括,设置两个选择的寄存器vri0,vri1,并对里面的具体选择顺序预先设计好,表示如下:vrd1=ingenic_choise_h(vrd0,vrd0,vri1);vrd0=ingenic_choise_h(vrd0,vrd0,vri0);vrd3=ingenic_choise_h(vrd2,vrd2,vri1);vrd2=ingenic_choise_h(vrd2,vrd2,vri0);vrd5=ingenic_choise_h(vrd4,vrd4,vri1);vrd4=ingenic_choise_h(vrd4,vrd4,vri0);vrd7=ingenic_choise_h(vrd6,vrd6,vri1);vrd6=ingenic_choise_h(vrd6,vrd6,vri0);vrd9=ingenic_choise_h(vrd8,vrd8,vri1);vrd8=ingenic_choise_h(vrd8,vrd8,vri0);vrd11=ingenic_choise_h(vrd10,vrd10,vri1);vrd10=ingenic_choise_h(vrd10,vrd10,vri0);vrd13=ingenic_choise_h(vrd12,vrd12,vri1);vrd12=ingenic_choise_h(vrd12,vrd12,vri0);vrd15=ingenic_choise_h(vrd14,vrd14,vri1);vrd14=ingenic_choise_h(vrd14,vrd14,vri0);S2.1.3进一步包括,进行乘法运算和移位运算,表示如下:vrd0=ingenic_mul_h(vrd0,mul_0);vrd0=ingenic_shift_right(vrd0,shi...

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

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

1