本发明涉及图像处理,特别是涉及一种高性能渲染子像素图像压缩方法及装置。
背景技术:
::1、一般情况下,lcd面板的标准像素排列对应rgb三个子像素,而三星首次将amoled(有源矩阵有机发光二极体,其中包括有机发光二极体oled,是描述薄膜显示技术的具体类型,即有机电激发光显示;以及有源矩阵体或称主动式矩阵体am,是指背后的像素寻址技术)应用于手机面板上时,没有使用标准的rgb排列,这是因为oled有自发光的特性,且rgb三个子像素的寿命不一样,尤其是蓝色子像素老化的更快、寿命最短。如果使用标准的rgb排列,容易出现烧屏的现象,为了平衡不同子像素间的衰减问题,三星使用了rgbg pentile排列。然而从galaxy s4开始,三星全面采用了沿用至今的diamond钻石排列(参见图1),由于其采用了菱形排列的方式,在显示垂直、水平及斜线文字和内容时,都会减少很多锯齿现象。同时,钻石排列的子像素密度也比rgbg pentile排列高,在显示清晰度上也更好。目前为止,钻石排列仍然是手机oled屏最优的子像素排列。随着国产oled面板的崛起,几大国产oled面板供应商近几年都推出了各自的类钻子像素排列,类钻子像素排列也变得越来越普及,已然成为趋势。2、当今手机面板与显示屏之间采用的主流接口模式有:dsi(video mode)视频模式和dcs(command mode)命令模式。如图2所示,在command模式下,mipi总线控制器会使用显示命令报文向显示器发送数据流,而显示屏有一个全帧大小的帧缓冲器来存储所有的像素数据。当前主流的屏分辨率基本在fhd+及以上,更高一点能达到qhd或qhd+,所以这个帧缓冲器如果存储原始像素数据的话,存储空间要求会很大,同样会增加显示屏的成本和功耗。3、为了满足显示屏低功耗、低成本、高刷新率的要求,压缩算法必须有高效率、低功耗、低延迟、高呑吐率的特点。针对单帧图像进行压缩的国际标准有jpeg、jpeg2000、jpeg-xs、dsc、vdc-m、vc-2、tico等。但是,这些算法都不同程度的存在着复杂度过高、占用linebuffer(行缓存)资源过多、延迟较大、呑吐率低等缺陷,极不适合集成在显示屏这样的低功耗、低成本、高刷新率的实时系统中。目前,针对渲染子像素图像的压缩方法,主要分为以下两类:4、(1)利用已有的图像压缩算法(如jpeg、jpeg2000、jpeg-xs、dsc、vdc-m、vc-2、tico等),对渲染子像素图像直接压缩。5、(2)对渲染子像素图像格式进行空间重排列、矩阵变换等方面的处理,可消除部分冗余信息,然后再用已有压缩算法进行压缩。6、但现有技术有以下三个不足之处:7、第一,已有标准图像压缩算法复杂度高,且需要使用多条linebuffer对数据进行缓存,这样无法满足低功耗、低成本的硬件要求。8、第二,已有标准图像压缩算法呑吐率低,不适宜手机显示屏越来越大的分辨率及越来越高的刷新率。9、第三,已有标准图像压缩算法延迟较大,无法满足显示屏实时处理这一要求。10、因此,亟需一种降低算法复杂度,同时提高压缩效率,满足显示屏系低能耗、低面积、低延迟、高呑吐率的技术方法。技术实现思路1、为克服上述现有技术存在的不足,本发明之目的在于提供一种高性能渲染子像素图像压缩方法及装置,对经过子像素渲染后的渲染子像素图像进行宏块分割,随后进行宏块分析,控制码率,在测试编码模式后选择最优编码模式进行熵编码,能够降低算法复杂度,提高压缩效率,实现显示屏系统低能耗、低面积、低延迟、高呑吐率。2、为达上述目的,本发明提出一种高性能渲染子像素图像压缩方法,包括如下步骤:3、步骤s1,对输入的图像进行宏块分割,所述图像为原始像素图像经过子像素渲染后的渲染子像素图像;4、步骤s2,进行宏块分析,计算出当前宏块的代价satd和下一宏块的代价satd,得出所述当前宏块是否为平滑块,并得到所述当前宏块的复杂度;5、步骤s3,综合相关信息,计算出最优量化等级,所述相关信息包括但不限于所述当前宏块的复杂度、前一宏块的最优量化等级和前一宏块的最优编码比特数;6、步骤s4,测试编码模式,选择最优编码模式,所述编码模式包括但不限于基于特殊方向预测编码模式、mpp编码模式和mppf编码模式;7、步骤s5,利用所述最优编码模式进行熵编码,输出最优编码模式对应的码流。8、进一步地,于步骤s2中,包括如下步骤:9、步骤s21,获取当前宏块的代价satd,所述当前宏块的代价satd通过如下公式获得:10、11、其中,m为方阵的大小,h为归一化的mxm hadamard矩阵;12、步骤s22,根据所述当前宏块的代价satd,将宏块的平滑度分为0-3四个等级,其中,0等级为非常平滑,1等级为一般平滑,2等级为复杂到平滑,3等级为平滑到复杂,判断所述当前宏块的平滑度等级,并得到所述当前宏块的复杂度。13、进一步地,于所述步骤s3中,包括如下步骤:14、步骤s31,根据前一宏块的最优编码比特数,更新缓冲充盈度buffer_fullness,利用更新后的所述缓冲充盈度buffer_fullness计算出当前缓存的状态buffer_idx,依次通过如下公式实现:15、buffer_fullness=buffer_fullness+prev_blk_bits-budget_bits16、buffer_idx=buffer_fullness>>norm_bits17、其中,prev_blk_bits为前一宏块的最优编码比特数,budget_bits为宏块目标比特数,norm_bits为归一化参数;18、步骤s32,获取最终目标比特数target_bits,计算所述最终目标比特数与前一宏块编码比特数的编码比特数差diff_bits,依次通过如下公式实现:19、target_bits=budget_bits+delta_lut[buffer_idx]20、diff_bits=prev_blk_bits-target_bits21、其中,budget_bits为宏块目标比特数,buffer_idx为当前缓存的状态,prev_blk_bits为前一宏块的最优编码比特数;22、步骤s33,根据更新后的所述缓冲充盈度buffer_fullness,计算量化等级更新模式qp_update_mode,根据所述编码比特数差diff_bits,得到量化等级的变化等级qp_idx,利用所述量化等级更新模式qp_update_mode和所述量化等级的变化等级qp_idx,查表得到qp调整幅度delta_qp,通过前一宏块的最优量化等级pre_qp和所述qp调整幅度delta_qp,得到量化等级qp,通过所述宏块的平滑度,调整量化等级qp,得到当前宏块的最优量化等级blk_qp。23、进一步地,所述步骤s33具体包括如下步骤:24、步骤s331,根据所述缓冲充盈度buffer_fullness,依照如下公式,得到量化等级更新模式qp_update_mode:25、26、步骤s332,根据所述编码比特数差,依照如下公式,得到量化等级的变化等级qp_idx:27、qp_idx=diff_lut[diff_bits]28、其中,diff_bits为编码比特数差,diff_lut为一映射表;29、步骤s333,根据所述量化等级更新模式qp_update_mode和所述量化等级的变化等级qp_idx,查表得到qp调整幅度delta_qp,通过如下公式实现:30、delta_qp=qp_table[qp_update_mode][qp_idx]31、其中,qp_table为映射表,qp_update_mode为量化等级更新模式,qp_idx为量化等级的变化等级;32、步骤s334,利用所述qp调整幅度delta_qp和前一宏块的最优量化等级pre_qp,依照如下公式,得到量化等级qp:33、qp=pre_qp+delta_qp34、步骤s335,通过所述宏块的平滑度,依照如下公式,调整量化等级,得到当前宏块的最优量化等级blk_qp:35、36、其中,qp_flat0、qp_flat1为参数,qp_flat_table为平滑度量化表。37、进一步地,于所述步骤s4中,包括如下步骤:38、步骤s41,获取基于特殊方向预测编码模式、mpp编码模式和mppf编码模式三种编码模式的率失真代价rd_cost,所述率失真代价rd_cost通过如下公式实现:39、rd_cost=d+lambda*rate40、其中,d为量化失真,lambda为拉格朗日乘子,rate为编码比特数;41、步骤s42,判断当前模式是否属于valid,得到当前模式判断结果,通过如下公式实现:42、rc_buffer_size=buffer_fullness+mode_bits-budget_bits43、44、其中,rc_buffer_size为码率控制缓冲大小,buffer_fullness为缓冲充盈度,mode_bits为当前模式的编码比特数,budget_bit为宏块目标编码比特数,max_buffer_size为码率控制缓冲允许的最大比特数;45、步骤s43,利用所述当前模式判断结果和所述率失真代价rd_cost,根据编码模式判别公式,选择最优编码模式,所述编码模式判别公式cmp_mode为:46、47、其中,0表示基于特殊方向预测编码模式,1表示mpp编码模式,2表示mppf编码模式。48、进一步地,于所述步骤s5中,包括如下步骤:49、步骤s51,响应于最优编码模式为所述基于特殊方向预测编码模式,通过特殊方向预测的方法计算当前像素点的预测残差,获得第一预测残差,利用所述最优量化等级对所述第一预测残差量化,对量化后的第一预测残差进行delta size变长编码,输出对应的码流,重建当前像素点;50、步骤s52,响应于最优编码模式为所述mpp编码模式,获取mpp编码模式的预测值,计算当前像素点的预测残差,获得第二预测残差,对所述第二预测残差量化,重建当前像素点,通过mpp编码模式编码并输出对应的码流;51、步骤s53,响应于最优编码模式为所述mppf编码模式,获取mppf编码模式的预测值,计算当前像素点的预测残差,获得第三预测残差,对所述第三预测残差量化,重建当前像素点,通过mppf编码模式编码并输出对应的码流。52、进一步地,于所述步骤s51中,包括如下步骤:53、步骤s511,获取当前宏块的八个预测方向,于所述八个预测方向中,分别计算r/g/b三个分量的均方误差,合并所述三个分量的均方误差,得到当前宏块的最优预测方向,根据所述最优预测方向,获取当前像素点的最优预测像素值;54、所述步骤s511具体包括如下步骤:55、步骤s5111,进行median预测,得到预测方向为0的一个预测方向,其中,所述median预测通过如下公式实现:56、max_ab=max(rec[j,i-1],rec[j-1,i])57、min_ab=min(rec[j,i-1],rec[j-1,i])58、59、其中,rec[]表示已重建像素,j表示像素点纵坐标,i表示像素点横坐标;60、步骤s5112,进行方向预测,包括偶行时方向预测和奇行时方向预测,分别获得偶行时和奇行时的其余七个预测方向,即预测方向1-7,其中,所述偶行时方向预测通过如下公式实现:61、62、其中,rec[]表示已重建像素,j表示像素点纵坐标,i表示像素点横坐标;63、所述奇行时方向预测通过如下公式实现:64、65、其中,rec[]表示已重建像素,j表示像素点纵坐标,i表示像素点横坐标;66、步骤s5113,根据均方误差规则,于所述八个预测方向中,分别计算r/g/b三个分量的均方误差,合并所述三个分量的均方误差,获取所述八个预测方向中的最优预测方向以及对应的最优预测像素值,其中,所述均方误差mse规则通过如下公式实现:67、68、其中,表示所有所有像素的均值,n表示当前宏块像素点数;69、步骤s512,根据所述最优预测像素值,获取第一预测残差,利用所述当前宏块的最优量化等级blk_qp对所述第一预测残差量化,得到量化后的第一预测残差;70、所述步骤s512具体包括如下步骤:71、步骤s5121,获取所述第一预测残差,通过如下公式实现:72、diff=pix_cur-pix_pred73、其中,diff为第一预测残差,pix_cur为当前像素值,pix_pred为最优预测像素值;74、步骤s5122,利用所述当前宏块的最优量化等级blk_qp对所述第一预测残差量化,得到量化后的第一预测残差,通过如下公式实现:75、76、其中,diff为第一预测残差,near_round为四舍五入量,blk_qp为当前宏块的最优量化等级。77、步骤s513,对所述量化后的第一预测残差进行delta size变长编码,对r/g/b三分量的码流合并输出,重建像素点,其中,所述delta size变长编码使用有限长度的编码;78、所述步骤s513具体包括如下步骤:79、步骤s5131,获取当前分量的编码长度和码字,对r/g/b三分量的码流合并输出,所述当前分量的编码长度code_len通过如下公式获得:80、code_len=prefix_len+max_size*n81、其中,prefix_len为前缀玛长度,n为量化后的第一预测残差的个数,max_size为n个量化后的第一预测残差的最大编码长度;82、所述当前分量的码字code_word通过如下公式获得:83、mask=(1<<max_size)-184、code_word=[prx_word,diff0'&mask,diff1'&mask,...,diffn'-1&mask]85、其中,n为量化后的第一预测残差的个数,max_size为n个量化后残差的最大编码长度,prefix_len为前缀码长度,prx_word为前缀码,[]为数据连续合并操作,diff'表示量化后的第一预测残差;86、步骤s5132,重建像素点通过如下公式实现:87、pix_rec=pix_pred+(diff'<<blk_qp);88、pix_rec=clip(max_v al,0,pix_rec);89、其中,pix_rec为重建的像素点,pix_pred为预测像素值,diff'为量化后的第一预测残差,blk_qp为当前宏块的最优量化等级,max_val为最大像素值。90、进一步地,于步骤s52中,包括如下步骤:91、步骤s521,获取mpp编码模式的预测值,所述mpp编码模式的预测值通过如下公式实现:92、93、top_ref[j,i]=(rec[j-1,i-1]+2*rec[j-1,i+]+rec[j-1,i+1])/494、pred_mid[j,i]=clip(max_val,med_val,top_ref[j,i]+2*bias)95、其中,blk_qp为当前宏块的最优量化等级,rec[]表示已重建像素,j表示像素点纵坐标,i表示像素点横坐标,max_val为最大值,med_val为中间值,pred_mid表示mpp编码模式的预测值;96、步骤s522,计算当前像素点的预测残差,获得第二预测残差,对所述第二预测残差量化,通过如下公式实现:97、t=bit_depth-blk_qp-198、99、100、101、diff'=clip(max_quant,min_quant,diff')102、其中,bit_depth为像素的比特深度,max_val为最大值,blk_qp为当前宏块的最优量化等级,diff'表示量化后的第二预测残差;103、步骤s523,重建像素点,通过如下公式实现:104、pix_rec=pred_mid+(diff'<<blk_qp);105、pix_rec=clip(max_val,0,pix_rec);106、其中,所述pix_rec为重建的像素点,pred_mid为预测像素值,blk_qp为当前宏块的最优量化等级,max_val为最大像素值,diff'为量化后的第二预测残差;107、步骤s524,通过所述mpp编码模式编码,对r/g/b三分量的码流合并输出,其中,所述mpp编码模式的编码长度code_len和码字code_word通过如下公式获得:108、code_len=(bit_depth-blk_qp)*n109、mask=(1<<(bit_depth-blk_qp))-1110、code_word=[diff0'&mask,diff1'&mask,...,diffn'-1&mask]111、其中,&表示与操作,bit_depth为像素的比特深度,n为量化后的第二预测残差的个数,diff'为量化后的第二预测残差,prefix_len为前缀码长度,[]为数据连续合并操作。112、进一步地,于步骤s53中,包括如下步骤:113、步骤s531,获取mppf编码模式的预测值,所述mppf编码模式的预测值通过如下公式实现:114、115、top_ref[j,i]=(rec[j-1,i-1]+2*rec[j-1,i+]+rec[j-1,i+1])/4116、pred_mid[j,i]=clip(max_val,med_val,top_ref[j,i]+2*bias)117、其中,qp_mppf为mppf模式量化参数,rec[]表示已重建像素,j表示像素点纵坐标,i表示像素点横坐标,med_val为中间值,max_val为最大值;118、步骤s532,计算当前像素点的预测残差,获得第三预测残差,对所述第三预测残差量化,通过如下公式实现:119、t=bit_depth-qp_mppf-1120、121、122、diff=pix_cur-pred_mid123、124、diff'=clip(max_quant,min_quant,diff')125、其中,bit_depth为像素的比特深度,max_val为最大值,pix_cur为当前像素值,pred_mid由步骤s531获取,qp_mppf为mppf模式量化参数,diff表示第三预测残差,diff'表示量化后的第三预测残差,near_round为四舍五入量;126、步骤s533,重建像素点,通过如下公式实现:127、pix_rec=pred_mid+diff'<<qp_mppf;128、pix_rec=clip(max_val,0,pix_rec);129、其中,pix_rec为重建后的像素点,pred_mid为预测像素值,qp_mppf为mppf编码模式量化参数,max_val为最大值;130、步骤s534,通过所述mppf编码模式编码,对r/g/b三分量的码流合并输出,其中,所述mppf编码模式的编码长度code_len和码字code_word通过如下公式获得:131、code_len=(bit_depth-qp_mppf)*n132、mask=(1<<(bit_depth-qp_mppf))-1133、code_word=[diff0'&mask,diff1'&mask,...,diffn'-1&mask]134、其中,n为量化后残差的个数,diff'为量化后的第三预测残差,所述prefix_len为前缀码长度,qp_mppf为mppf编码模式量化参数,[]为数据连续合并操作。135、为达到上述目的,本发明还提供一种高性能渲染子像素图像压缩装置,包括:136、宏块分割模块,用于对输入的图像进行宏块分割,所述图像为原始像素图像经过子像素渲染后的渲染子像素图像;137、宏块分析模块,用于进行宏块分析,计算出当前宏块的代价satd和下一宏块的代价satd,得出所述当前宏块是否为平滑块,并得到所述当前宏块的复杂度;138、码率控制模块,用于综合相关信息,计算出最优量化等级,所述相关信息包括但不限于所述当前宏块的复杂度、前一宏块的最优量化等级和前一宏块的最优编码比特数;139、模式选择模块,用于测试编码模式,选择最优编码模式,所述编码模式包括但不限于基于特殊方向预测编码模式、mpp编码模式和mppf编码模式;140、熵编码模块,用于利用所述最优编码模式进行熵编码,输出最优编码模式对应的码流。141、与现有技术相比,本发明公开的一个方面具有如下有益效果:142、(1)本发明针对当前主流钻石和类钻排列屏,在原始像素数据进入缓冲器之前,显示屏对接受到的rgb图像先做子像素渲染(sub-pixel rendering,spr),这样就直接减少了1/3的数据量。然后,再在spr后加入一个压缩器,对渲染后的子像素做3倍左右的视觉无损压缩,然后才进入帧缓冲器(ddr),这样缓冲器的存储大小仅需要原始像素数据量的2/9即可,有效降低帧缓冲器的大小。143、(2)对渲染后的r/b分量子像素,偶行与奇行采用特殊的预测方向,判别最优方向时,使用mse作为判别规则,能够提升预测方向的准确度,编码效率更高,重建图像质量更好。144、(3)本发明一次可以处理n个像素,编码性能可以自定义,满足大分辨率、高刷新率需求。当前第1页12当前第1页12
技术特征:1.一种高性能渲染子像素图像压缩方法,其特征在于,所述方法包括如下步骤:
2.如权利要求1所述的一种高性能渲染子像素图像压缩方法,其特征在于,于步骤s2中,包括如下步骤:
3.如权利要求2所述的一种高性能渲染子像素图像压缩方法,其特征在于,于所述步骤s3中,包括如下步骤:
4.如权利要求3所述的一种高性能渲染子像素图像压缩方法,其特征在于,所述步骤s33具体包括如下步骤:
5.如权利要求4所述的一种高性能渲染子像素图像压缩方法,其特征在于,于所述步骤s4中,包括如下步骤:
6.如权利要求5所述的一种高性能渲染子像素图像压缩方法,其特征在于,于所述步骤s5中,包括如下步骤:
7.如权利要求6所述的一种高性能渲染子像素图像压缩方法,其特征在于,于所述步骤s51中,包括如下步骤:
8.如权利要求6所述的一种高性能渲染子像素图像压缩方法,其特征在于,于步骤s52中,包括如下步骤:
9.如权利要求6所述的一种高性能渲染子像素图像压缩方法,其特征在于,于步骤s53中,包括如下步骤:
10.一种高性能渲染子像素图像压缩装置,其特征在于,所述装置包括:
技术总结本发明涉及图像处理领域,公开了一种高性能渲染子像素图像压缩方法及装置,该方法包括:对输入的图像进行宏块分割,图像为原始像素图像经过子像素渲染后的渲染子像素图像;进行宏块分析,计算出当前宏块的代价SATD和下一宏块的代价SATD,得出当前宏块是否为平滑块,并得到当前宏块的复杂度;综合相关信息,计算出最优量化等级,相关信息包括但不限于当前宏块的复杂度、前一宏块的最优量化等级和前一宏块的最优编码比特数;测试编码模式,选择最优编码模式,编码模式包括但不限于基于特殊方向预测编码模式、mpp编码模式和mppf编码模式;利用最优编码模式进行熵编码,输出最优编码模式对应的码流,可降低算法复杂度,提高压缩效率。
技术研发人员:王洪剑,林江,陈涛,陈本强
受保护的技术使用者:上海通途半导体科技有限公司
技术研发日:技术公布日:2024/5/29