打印
[DSP编程]

DM8168 HDVPSS EDE图像边缘细节增强

[复制链接]
1851|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
market1234|  楼主 | 2014-7-1 10:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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特点
模块支持下面关键特征:



  • 图像格式: YUV44410-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或垂直位置的边缘
  • 剪切模块剪切YC值用于保证输出数据在合理范围之内


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_poscfg_lti_pk_max_neg:定义剪切(clip)的最大值和最小值。
  • cfg_lti_pk_enable:使能水平peaking功能。


CTI
CTI操作于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_x16pk_ytbl_slope_p_high_x16:定义输入为正时,函数的斜率
  • pk_ytbl_slope_n_low_x16pk_ytbl_slope_n_high_x16:定义输入为负时,函数的斜率
  • pk_ytbl_th_p_low_x16pk_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_x16pk_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_maxcfg_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_x512cfg_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_yclip_min_y:定义剪切Y在最大值和最小值定义的范围内
  • clip_max_cclip_min_c:定义剪切C在最大值和最小值定义的范围内



DM8168 HDVPSS EDE图像边缘细节增强.pdf

726.89 KB

评分
参与人数 1威望 +6 收起 理由
zhangmangui + 6 很给力!

相关帖子

沙发
zhangmangui| | 2014-7-1 11:55 | 只看该作者
比较高端 谢谢分享啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

40

帖子

1

粉丝