7E3 Banding

7e3是xbox360经常使用的一个HDR格式,edram只有10mb,因为7e3占32个字节是16f的一半,所以优势就很明显(节省显存,提升贴图采样性能)。但是7e3的banding问题也很明显。
尝试一些方法来有效降低7e3banding
首先尝试对7e3加了colorscale之后会有效降低banding,但是美术需要手动调整colorscale,即便是夜晚场景也会存在场景比较亮的时候这时候colorscale如果是个全局的参数就不合适了,如果能够根据场景亮度算出来一个colorscale就比较合适。 
正好搜到Disney的一个ppt讲的就是提高7e3banding,一般来说tonemapping是由一个exposure加一个color remapping组成,一般的hdr流程是在finalpass一起做这两个操作,然而f16转换到7e3的时候精度已经丢失了,尤其是像素值比较低的区域,这就带来了banding。
Disney的做法是将exposure放在每个物体算lighting的时候,final pass只做color remapping,这里的exposure是根据场景的亮度算出来的。
 
banding得到明显改善;但是在场景很暗的时候exposure会是个比较大的值5-10之间(取决于HDR参数)这样如果场景里还有像素值比较高的像素的话就会饱和。
u8 SCCB_WR_Reg(sccb_bus_t * bus,u8 reg,u8 data) { u8 res=0; SCCB_Start(bus); //启动传输的标志 if(SCCB_WR_Byte(bus,SCCB_ID))res=1; //写入OV7670传感器ID delay_us(100); if(SCCB_WR_Byte(bus,reg))res=1; //写寄存器地址 delay_us(100); if(SCCB_WR_Byte(bus,data))res=1; //写要向寄存器写入的数据 SCCB_Stop(bus); //结束传输的标志 return res; } const uint8_t OV7670_Reg[][2]= { //Frame Rate Adjustment for 24Mhz input clock //30fps PCLK=24MHz {0x11, 0x80},//软件应用手册上设置的是0x80,例程设置的是0x00 {0x6b, 0x0a},//PLL控制,软件应用手册上设置的是0x0a,例程设置的是0x40,将PLL调高的话就会产生花屏 {0x2a, 0x00}, {0x2b, 0x00}, {0x92, 0x00}, {0x93, 0x00}, {0x3b, 0x0a}, //Output format {0x12, 0x14},//QVGA(320*240)、RGB //RGB555/565 option(must set COM7[2] = 1 and COM7[0] = 0) {0x40, 0x10},//RGB565,effective only when RGB444[1] is low {0x8c, 0x00}, //Special effects - 特效 //normal {0x3a, 0x04}, {0x67, 0xc0}, {0x68, 0x80}, //Mirror/VFlip Enable - 水平镜像/竖直翻转使能 {0x1e, 0x37},//修改配置值将产生图像显示上下或左右颠倒 //Banding Filter Setting for 24Mhz Input Clock - 条纹滤波器 //30fps for 60Hz light frequency //{0x13, 0xe7},//banding filer enable //{0x9d, 0x98},//50Hz banding filer //{0x9e, 0x7f},//60Hz banding filer //{0xa5, 0x02},//3 step for 50Hz //{0xab, 0x03},//4 step for 60Hz //{0x3b, 0x02},//select 60Hz banding filer //Simple White Balance - 白平衡 //{0x13, 0xe7},//AWB、AGC、AGC Enable and ... //{0x6f, 0x9f},//simple AWB //AWBC - 自动白平衡控制(Automatic white balance control) //{0x43, 0x14},//用户手册里这些寄存器的值都是保留(Reserved),不用设置的呀? //{0x44, 0xf0}, //{0x45, 0x34}, //{0x46, 0x58}, //{0x47, 0x28}, //{0x48, 0x3a}, //AWB Control //{0x59, 0x88},//用户手册连寄存器都是保留,初始值都没提供 //{0x5a, 0x88}, //{0x5b, 0x44}, //{0x5c, 0x67}, //{0x5d, 0x49}, //{0x5e, 0x0e}, //AWB Control //{0x6c, 0x0a}, //{0x6d, 0x55}, //{0x6e, 0x11}, //{0x6f, 0x9f}, //AGC/AEC - Automatic Gain Control自动增益补偿/Automatic exposure Control自动曝光控制 //{0x00, 0x00}, //{0x14, 0x20}, //{0x24, 0x75}, //{0x25, 0x63}, //{0x26, 0xA5}, //AEC algorithm selection - AEC公式选择 //{0xaa, 0x94},//基于平均值的AEC算法Average-based AEC algorithm/基于直方图的AEC算法Histogram-based AEC algorithm //基于直方图的AGC/AEC的控制 //{0x9f, 0x78}, //{0xa0, 0x68}, //{0xa6, 0xdf}, //{0xa7, 0xdf}, //{0xa8, 0xf0}, //{0xa9, 0x90}, //Fix Gain Control - 固定增益控制 //{0x69, 0x5d},//Fix gain for Gr channel/for Gb channel/for R channel/for B channel //Color saturation 颜色饱和度 + 0 //{0x4f, 0x80}, //{0x50, 0x80}, //{0x51, 0x00}, //{0x52, 0x22}, //{0x53, 0x5e}, //{0x54, 0x80}, //{0x58, 0x9e}, //Brightness - 亮度 + 0 //{0x55, 0x00}, //Contrast - 对比度 + 0 //{0x56, 0x40}, //Gamma Curve - 伽马曲线 //{0x7a, 0x20}, //{0x7b, 0x1c}, //{0x7c, 0x28}, //{0x7d, 0x3c}, //{0x7e, 0x55}, //{0x7f, 0x68}, //{0x80, 0x76}, //{0x81, 0x80}, //{0x82, 0x88}, //{0x83, 0x8f}, //{0x84, 0x96}, //{0x85, 0xa3}, //{0x86, 0xaf}, //{0x87, 0xc4}, //{0x88, 0xd7}, //{0x89, 0xe8}, //Matrix Coefficient - 色彩矩阵系数 //{0x4f, 0x80}, //{0x50, 0x80}, //{0x51, 0x00}, //{0x52, 0x22}, //{0x53, 0x5e}, //{0x54, 0x80}, //Lens Correction Option - 镜头补偿选项 //{0x62, 0x00}, //{0x63, 0x00}, //{0x64, 0x04}, //{0x65, 0x20}, //{0x66, 0x05}, //{0x94, 0x04},//effective only when LCC5[2] is high //{0x95, 0x08},//effective only when LCC5[2] is high //注释这些配置的话,就倾斜显示,并显示多块,这到底是控制什么的?跟时序图有关? {0x17, 0x16},//行频Horizontal Frame开始高八位(低三位在HREF[2:0]) {0x18, 0x04},//行频Horizontal Frame结束高八位(低三位在HREF[5:3]) {0x19, 0x02},//场频Vertical Frame开始高八位(低二位在VREF[1:0]) {0x1a, 0x7b},//场频Vertical Frame结束高八位(低二位在VREF[3:2]) {0x32, 0x80},//HREF {0x03, 0x06},//VREF //注释这个配置的话,就显示花屏了 {0x15, 0x02},//配置PCLK、HREF、VSYNC相关 //Automatic black Level Compensation - 自动黑电平校正 {0xb0, 0x84},//调试时注释这项配置时,颜色显示不正常了,红色练绿色,绿色变红色,但用户手册对这寄存器是保留RSVD //{0xb1, 0x0c}, //{0xb2, 0x0e}, //{0xb3, 0x82}, //{0xb8, 0x0a}, //SCALING_xx寄存器 //{0x70, 0x00}, //{0x71, 0x00}, //{0x72, 0x11}, //{0x73, 0x08}, //{0x3e, 0x00}, //ADC //{0x37, 0x1d},//ADC控制ADC Control //{0x38, 0x71},//ADC和模拟共模控制ADC and Analog Common Mode Control //{0x39, 0x2a},//ADC偏移控制ADC Offset Control //零杂的寄存器 //{0x92, 0x00},//空行低八位Dummy Line low 8 bits //{0xa2, 0x02},//像素时钟延时 //{0x0c, 0x0c}, //{0x10, 0x00}, //{0x0d, 0x01}, //{0x0f, 0x4b}, //{0x3c, 0x78}, //{0x74, 0x19}, //用户手册里这几个寄存器都是保留RSVD //{0x0e, 0x61}, //{0x16, 0x02}, //{0x21, 0x02}, //{0x22, 0x91}, //{0x29, 0x07}, //{0x33, 0x0b}, //{0x35, 0x0b}, //{0x4d, 0x40}, //{0x4e, 0x20}, //{0x8d, 0x4f}, //{0x8e, 0x00}, //{0x8f, 0x00}, //{0x90, 0x00}, //{0x91, 0x00}, //{0x96, 0x00}, //{0x9a, 0x80}, }; 一次性配置这个寄存器数组
06-12
数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)内容概要:本文围绕“数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究”展开,提出了一种结合数据驱动与分布鲁棒优化方法的建模框架,用于解决电热综合能源系统在不确定性环境下的优化调度问题。研究采用两阶段优化结构,第一阶段进行预决策,第二阶段根据实际场景进行调整,通过引入1-范数和∞-范数约束来构建不确定集,有效刻画风电、负荷等不确定性变量的波动特性,提升模型的鲁棒性和实用性。文中提供了完整的Matlab代码实现,便于读者复现和验证算法性能,并结合具体案例分析了不同约束条件下系统运行的经济性与可靠性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事综合能源系统、鲁棒优化、不确定性建模等相关领域研究的专业人士。; 使用场景及目标:①掌握数据驱动的分布鲁棒优化方法在综合能源系统中的应用;②理解1-范数和∞-范数在构建不确定集中的作用与差异;③学习两阶段鲁棒优化模型的建模思路与Matlab实现技巧,用于科研复现、论文写作或工程项目建模。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现细节,重点关注不确定集构建、两阶段模型结构设计及求解器调用方式,同时可尝试更换数据或调整约束参数以加深对模型鲁棒性的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值