在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4177|回复: 0

x264 有一个denoise的程序,怎么理解?

[复制链接]
发表于 2009-5-24 18:17:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
程序如下: 感觉是一个低通滤波,但不知道是什么原理?各位高手指点下,万分感谢

static void x264_denoise_dct( int16_t *dct, uint32_t *sum, uint16_t *offset, int size )//*sum就是h->nr_residual_sum, *offset就是h->nr_offset
{
    int i;
    for( i=1; i<size; i++ )
    {
        int level = dct;
        int sign = level>>15;
        level = (level+sign)^sign;
        sum += level;
        level -= offset;
        dct = level<0 ? 0 : (level^sign)-sign;
    }
}

void x264_noise_reduction_update( x264_t *h )
{
    int cat, i;
    for( cat = 0; cat < 2; cat++ )
    {
        int size = cat ? 64 : 16;
        const uint16_t *weight = cat ? x264_dct8_weight2_tab : x264_dct4_weight2_tab;
        if( h->nr_count[cat] > (cat ? (1<<16) : (1<<18)) )
        {
            for( i = 0; i < size; i++ )
                h->nr_residual_sum[cat] >>= 1;
            h->nr_count[cat] >>= 1;
        }
        for( i = 0; i < size; i++ )
            h->nr_offset[cat] =
                ((uint64_t)h->param.analyse.i_noise_reduction * h->nr_count[cat]
                 + h->nr_residual_sum[cat]/2)
              / ((uint64_t)h->nr_residual_sum[cat] * weight/256 + 1);
    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-27 19:10 , Processed in 0.029359 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表