market1234 发表于 2014-7-1 10:43

DM8168 HDVPSS EDE图像边缘细节增强

本帖最后由 market1234 于 2014-7-15 17:09 编辑

DM8168 HDVPSS EDE图像边缘细节增强1.边缘细节增强器(EDE)1.1概述放大后的图像看起来会变得平滑而让人感觉清晰度不够,EDE(边缘和细节增强器:Edge and Detail Enhancement)用来恢复因放大而失去的高频信息或者增强高频信息,以便使画面看得显得更加清晰一些,EDE模块的组成是:LTI(Luma Transit Improvement)、CTI(ChromaTransit Improvement)和2D Peaking、水平和垂直peaking。它还提供一些高级特征,包括Negative Coring用来避免放大噪声,因为通常噪声看起来也像是一个peaking、基于coring的肤色检测以便估计特别是在人皮肤上的轮廓(contouring)和噪声(noiseflicker)。LTI(CTI)和peaking都是为了锐化图像。LTI(CTI)通常使用非线性技术以改善灰度和色度的边缘变化。Peaking通常使用线性技术(一般是FIR滤波)来提升图像中的高频信息。LTI(CTI)并不是像Peaking那样提升(boost)高频信息而是产生(create)高频信息以使画面看得更加清晰。尽管LTI(CTI)都会使画面尖锐,但是它们通常应用于不同目的,比如像人脸这样相对平缓变化的区域,一般使用Peaking,而LTI(CTI)一般更倾向于应用于强烈变化的边缘区域,因为LTI(CTI)会导致尖锐的变化边缘和轮廓效果。在我们的设计里,除了锐化色度变化边缘,CTI还能使色度跳变中心向灰度跳变中心移动,以消除灰度和色度跳变位置的失配。在EDE中的peaking模块能是2D-peaking或者垂直peaking,2D-peaking可应用于灰度和色度,而垂直peaking仅应用于灰度,在2D-peaking中使用5x5的FIR滤波器,所有系数用户可编程,滤波输出值被剪切(clip)在规定的范围内。1.1特点模块支持下面关键特征:


[*]图像格式: YUV4:4:4,10-bit数据;

[*] LTI/CTI

                   LTI(灰度边缘锐化)、CTI(色度边缘锐化)增强边缘            灰度和色度对齐,以获得更好的registration和清晰度            基于Coring的肤色检测,用来估计轮廓和噪声


[*]Peaking

            2D peaking和垂直peaking,用来增强细节                        2D peaking:Negative Coring非线性模块用来减少噪声            2D peaking:5x5peaking滤波器系数可编程             垂直peaking:软化的limiting,减少剪切造成的缺陷


[*]噪声鲁棒性

             Negative Noise Coring阻止放大噪声             阻止剪切和轮廓化造成的缺陷1.1功能描述图87显示了EDE模块的方块图,EDE模块由LTI、水平Peaking、CTI、线性缓冲和peaking模块组成。输入数据格式是YCbCr444,输出数据格式也是YCbCr444。


[*]LTI锐化Y边缘

[*]水平peaking提升水平方向的peak

[*]CTI锐化色度边缘,并将色度的变化边缘与灰度变化边缘对齐

[*]行缓冲存储数据用于peaking模块的垂直处理

[*]Peaking模块用于在峰值的2D或垂直位置的边缘

[*]剪切模块剪切Y和C值用于保证输出数据在合理范围之内


1.1.1操作原理图88描述了LTI和peaking模块锐化图像示意
为了执行水平peaking或LTI,首先在一个搜索窗口里搜索水平突变。搜索窗口是26个像素,灰度变化的起始点(min/max)和终点(min/max)与中心值(均值),沿着斜坡,LTI算法发挥作用,基本方法是朝最大值移动斜坡的上半部分,朝最小值方向移动斜坡的下半部分,在边缘(起点和终点)使用Peaking,在其他部分啥也不做,LTI和peaking的增益由一个增益曲线来定义,斜坡越窄增益越强,斜坡约宽,增益越弱,除了规则的Peaking和LTI外,可变的基于核的肤色检测算法用来估计轮廓和噪声。图89描述了CTI的算法,除了与LTI一样外,CTI搬移色度的斜坡中心到灰度的斜坡中心位置,以减少灰度和色度位置的失配。
CTI算法类似于LTI,有自己的独立的配置参数,水平Peaking并不应用于色度数据,用户能选择是否将色度和灰度的变化位置对齐,如果它们的中心不是匹配的,这一点我们在模拟视频源中经常看到,当这个特征被使能的时候,色度的变化中心将被搬移到灰度变化中心一致的位置上,搬移数量的设置由CTI对齐增益来确定。2D peaking模块执行5x5的2Dpeaking,5x5peaking滤波器系数是可编程的,由于系数矩阵是对称的,所以它们当中有8个系数需要编程。在peaking期间,通常噪声也会被放大,NegativeCoring在Coring区域引入了一个负的增益,这样,在输入端噪声能被消除,Coring阈值依赖于对噪声的测量,软化的limiting限制的设计减少了clipping造成瑕疵,比如极强光和极弱光。在EDE模块中,用户可以选择2Dpeaking或垂直peaking,垂直peaking跨越5行的5个像素上,在peaking像素上,peaking仅应用于灰度,在peak附近的斜坡上,peaking应用于灰度和色度。8.3.2子系统概述LTI         图90显示了一个斜坡边缘的定义。在peak处的像素定义为斜坡(LTI)边缘,如果像素值得改变小于cfg_lti_uni_y_th,像素被看作斜坡斜坡(LTI)边缘,如图中所描述,LTI改善作用并不应用与距离长于cfg_lti_len_max的Y斜坡。
         图91定义LTI增益,LTI-gain = 0意味着LTI不起作用。


[*]cfg_lti_gain_max:定义最大LTI_gain

[*]cfg_lti_gain_slope_shift:定义函数的斜率

[*]cfg_lti_gain_th:定义斜坡阈值


水平Peaking图92显示了水平peaking,在水平peak处,像素值被提升。
         图93显示了水平peaking模块的方块图,peak检测器模块发现水平peak区域,计算提升数值。


[*]cfg_lti_gain_x8:定义水平peaking的增益。

[*]cfg_lti_pk_max_pos和cfg_lti_pk_max_neg:定义剪切(clip)的最大值和最小值。

[*]cfg_lti_pk_enable:使能水平peaking功能。


CTICTI操作于YCbCr444域,图94显示输入色度的斜坡边缘的定义,在peak处的像素被定义为斜坡(CTI)边缘,如果像素值得改变小于cfg_cti_uni_y_th,像素被看作斜坡斜坡(CTI)边缘,如图中所描述,CTI改善作用并不应用与距离长于cfg_cti_len_max的Y斜坡。
图95定义色度锐化斜率的增益,CTI_gain= 0意味着LTI不起作用。


[*]cfg_cti_gain_max:定义最大CTI_gain

[*]cfg_cti_gain_slope_shift:定义函数的斜率

[*]cfg_cti_gain_th:定义斜坡阈值


         图96显示了输入参考Y的斜坡边缘的定义,在peak处的像素定义为Y斜坡的边缘,如果像素值改变小于cfg_cti_uni_ref_th,这个像素被看作Y斜坡的边缘,如图中96所示。
图97显示了将C变化中心与Y变化中心对齐的增益,Gain=0意味着对C的处理与对Y的处理是一样的。


[*]cfg_cti_adj_decay_slope_shift:定义函数斜率

[*]cfg_cti_adj_decay_th:定义斜坡的阈值

         在图97中,水平轴“distance_fr_C_edge”代表从C斜坡边缘到Y中心的距离。
         图98显示“distance_fr_C_edge”定义,距离测量是在色度域。
Peaking         图99显示peaking的方块图,peaking模块是由2D-peaking和垂直-peaking组成,输出来自二者其一,由cfg_pk_alg选择。
2D Peaking         图100显示了2D peaking方块图,peaking应用于Y和C,5x5增益矩阵的细节、非线性函数、Cpeaking增益函数随后说明。
图101显示了5x5系数矩阵的对应寄存器名称,pk_hpf_gain0到pk_hpf_gain8。
         图102显示了2D-peaking的非线性函数及对应的寄存器名称。


[*]pk_ytbl_slope_p_low_x16和pk_ytbl_slope_p_high_x16:定义输入为正时,函数的斜率

[*]pk_ytbl_slope_n_low_x16和pk_ytbl_slope_n_high_x16:定义输入为负时,函数的斜率

[*]pk_ytbl_th_p_low_x16和pk_ytbl_th_p_high_x16:定义输入为正时,斜坡的阈值

[*]pk_ytbl_th_p_low_x16:必须大于等于0

[*]pk_ytbl_th_p_low_x16:必须小于等于pk_ytbl_th_p_high_x16

[*]pk_ytbl_th_n_low_x16和pk_ytbl_th_n_high_x16:定义输入为负的时候,斜坡阈值

[*]pk_ytbl_th_n_low_x16:必须小于等于0

[*]pk_ytbl_th_n_low_x16:必须大于等于pk_ytbl_th_n_high_x16

[*]cfg_peaking_y_max和cfg_peaking_y_min:定义函数的最大值和最小值

[*]cfg_peaking_y_table_neg_core_limit:设置核化(coring)操作的负极限点(negayive limit   point


         图103显示了2D peaking的Cpeaking增益函数及对应的寄存器名称定义。


[*]cfg_peaking_c_slope_p_x512:定义输入为正时的斜率

[*]cfg_peaking_c_slope_n_x512:定义输入为负时的斜率

[*]cfg_peaking_c_gain_max_x512和cfg_peaking_c_gain_min_x512定义函数的最大值和最小值

[*]cfg_peaking_c_gain_max_x512:必须大于等于512

[*]cfg_peaking_c_gain_min_x512:必须大于等于512

垂直Peaking         图104显示了在peak位置和邻近peak的一个像素处的垂直peaking处理,在peak位置,peaking仅应用于Y,在peak周围,peaking处理则应用于Y和C
         图105显示垂直peaking处理的方块图


[*]水平边缘检测器计算垂直边缘可信度索引

[*]Peak检测器计算提升的数值,且提升的数值会被剪切在pk_v_diff_y_max之内

[*]difference-from-neighbor模块计算与邻居像素的数据值的差

水平边缘增益函书和斜坡增益函数解释如下。
         图106显示垂直peaking的水平边缘增益函数、对应的寄存器名。在图106中,pk_gain_hor_slope定义函数的斜率
         图107显示了垂直peaking的斜坡增益函数及对应的寄存器名称:


[*]pk_gain_edge_max_y定义函数的最大值

[*]pk_gain_edge_slope_y定义函数的最大值


剪切(Clip)         图108显示了clip模块的函数,Y、Cb、Cr的值按照寄存器设计来剪切。


[*]clip_max_y和clip_min_y:定义剪切Y在最大值和最小值定义的范围内

[*]clip_max_c和clip_min_c:定义剪切C在最大值和最小值定义的范围内



zhangmangui 发表于 2014-7-1 11:55

比较高端 谢谢分享啦
页: [1]
查看完整版本: DM8168 HDVPSS EDE图像边缘细节增强