色彩 (3)AWB问题

本文探讨了自动白平衡(AWB)在相机调优中的问题,包括灰区设置、光源概率、特殊需求、混合光源处理、误导颜色排除及大面积单色场景的表现。AWB的难点在于如何准确判断不同光源下的白色,并处理混合光源和极端场景下的色彩偏移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#灵感# AWB 的问题,说难其实也不是很难。

目录

1、灰区设置

2、光源 probability---AWB 跳变

3、特殊需求-prefer color

4、混合光源----暂无解

5、误导颜色------mislead color/exclude color 

6、大面积单色------表现良好

7、极端场景

前提:

 对于特定的光信号输入,设备的输出信号取决于RGB三通道的频率响应,不同的sensor频率响应一般是不同的。QE曲线描述的就是图像传感器的光电转换效率.

1、灰区设置

标定用标准光源灯箱抓raw。

白平衡增益通常记为(R/G, B/G),即红色和蓝色相对于绿色的比例。大部分厂家将(R/G, B/G)定义为sensor捕捉到的图像中红色和蓝色的统计值,因此在高色温(如D65)下B/G大于R/G。下图D50的白点位置在3500k 的白点的左上。

灰区:

  • 以标定好的若干个色温点(A, TL84, D50, D65, D75等)为核心可以拟合出一条色温曲线。(上图)
  • 以色温曲线上的点为圆心,以一定半径画椭圆,可以得到一些列椭圆。
  • 所有椭圆所覆盖的(R/G,B/G)集合就认为是真实场景中的白色物体在全部色温下的可能值(灰区的定义)。不落在这个范围内的颜色不认为是白色,排除了来自非灰色物体的统计数据的干扰。

balance gain 图:

    下图曲线和 色温曲线形状一样,但色温标注不同。这称为增益图。描述不同色温下,AWB 应用的B/G、R/G增益。曲线周围的阴暗投影区域,定义了AWB的调整范围。

围绕着色温曲线的灰区,边界可以调整。通常D65端的 distance 要小一些,避免将蓝天也收成灰色。A、H端的distance 要大一些,把更多的昏黄暖光场景收白。

灰区胖瘦设置要均衡考虑,如果灰色区域太小,它可能会错过灰色统计数据,并且可能无法收集足够的灰色样本。如果它太大,可能会将非灰色统计信息包含到灰色区域中,并导致AWB结果丢失精度。

2、光源 probability---AWB 跳变

light source prob.---------不同亮度条件下,所有光源的可能性。简单的prob 设置只包含 标准光源:H、A、TL84、CWF、D50、D65。精细的prob,将两个色温中间再分割成几段,每个段可以精细设置prob,来控制插值prob。-------可以改善在当前环境下,因为一点角度差异,或者某个物体进入导致的 AWB 跳变问题。

prob 举例:亮环境可以减少A光和H光的比重降低混淆色的影响,暗环境增加A H 的prob,减小shade的prob。

建议D65、TL84的prob在暗环境、亮环境均设置的一样。

--------------------------新增AWB跳变分析---------------------------------------

AWB 跳变后,可以先设所有光源prob数值一样,如果没有改善,证明此场景的final point 并不在两个色温框边界的地方。

抓raw 分析场景白点落点,如果在某个色温框之外,且不是很远的地方。可以考虑扩大此色温框。扩大后,进行仿真,观察新的final point 落点。比如本来画面偏蓝,新的落点在色温轴更高色温的地方,那就可以推测此方法有效改正偏蓝。(扩大色温框也可以改正,同个灯泡但是偏色不一样)

------------------------------------某个光源AWB偏色---------------------------------------------

如果其它色温都OK,某个生活光源下AWB偏色,可以考虑此场景的prob 较低。修改prob ,增加后如果有改善,可以继续分析。如果增加到最大值,不能达到效果,可以减小相邻的其他色温值。调整过程中,要注意检查是否影响其他色温,如果亮度有变化,最好编译版本刷机检查。

如果某个色温偏色,prob 不能解决,可以单独调整此色温的 R B gain.

最好是辅助分析raw 的落点变化,后续再补充。有的平台,可以直接读出AWB的光源百分比。

--------------------------------------------------------------------------------------------------

3、特殊需求-prefer color

gain adjust /  prefer gain / prefer color

当某个色温需要有特殊的AWB 偏好,以lux 为限制条件,单独为此光源增加 R gain 或B gain。

一般考虑在暖光源下保留一点 AWB偏暖,以符合人眼常识和喜好,电视机大屏幕保留一点AWB 偏暖显得画面更干净。

下图是两个不同产品的D65和A 光下 AWB 对比,右图的A 光下AWB都保留了一些黄调、红调。 

(有另个算法,可以实现同样效果。原理:当‘当前点’到‘白点’的距离(log(R/G), log(B/G)) 低于偏移阈值时进行完全补偿,当距离高于偏移阈值时进行部分补偿【远离色温曲线的点,不要完全收敛为灰色】)

4、混合光源----暂无解

前景AWB 正确,但后景颜色偏蓝。环境:前景TL84光源,后景D65光源。

因为AWB 算法每次只输出一个全局的R_gainB_gain,这样的结果是,当占比大的光源AWB 准确时,另一个小面积的光源就会偏色。

两个方法:1,分区域做两个AWB,一个主色温,一个辅助色温。-------不能确定每次的区域位置,目前好像不能实现;2,综合两个色温,取一个插值AWB。-------当一个冷色温,一个暖色温,并不能得到好效果。

5、误导颜色------mislead color/exclude color 

解决许多不受信任的白点参与 AWB 计算的问题。

下图中,室外的黄色木材落点比较多,以“黄色木材”落点为色温判定依据,色温判定在H框内,则画面整体偏蓝(参考色卡的灰色块)。所以要add 一个新框,框选住大部分的“木材落点”,将其exclude 白点的计算。

另一个常用例子:TL84 光源下,出现蓝色衣服,导致AWB整体偏黄or 偏红(图右为改之前)。

6、大面积单色------表现良好

下图是常见的,黄背景下物体会偏蓝,蓝背景则物体会偏黄。一部分AWB 原因,一部分CCM的黄色、蓝色校准原因。目前成熟的ISP,基本可以将这两个问题场景做的很好。

7、极端场景

a、某个灯管的色温,画面的AWB 极端偏蓝。仿真发现 该场景的落点完全在 灰区之外。

b、全屏草地时,AWB颜色偏冷,落点在中色温框内,但是此lux下中色温的prob 设置的较低。

这两个场景都可以添加新的额外的色温框(extra color),以新的色温框进行独立的AWB 计算。

 

<think>好的,我需要帮助用户了解如何在Spring Cloud中进行微服务网关的配置,并提供教程示例。首先,我应该回顾用户提供的引用内容,特别是引用[2]和[3],因为它们直接提到了网关的配置步骤和组件。 用户的问题集中在网关配置的教程和示例,所以我需要按照步骤详细说明。根据引用[2],创建网关微服务需要创建模块、引入依赖、编写启动类和配置路由。引用[3]提到了路由谓词工厂和内置的断言机制,这些也应该包含在配置说明中。 接下来,我需要确保结构清晰,分步骤讲解。首先,创建项目并添加依赖,比如Spring Cloud Gateway和Nacos服务发现。然后配置路由规则,可能包括路径匹配、断言和过滤器。示例部分需要具体,比如图书管理系统的API路由,这样用户能更好地理解。 还要注意使用正确的代码格式,如YAML配置示例,并解释每个部分的作用。同时,需要提到动态路由和服务发现集成,如结合Eureka或Nacos,这样展示网关的实际应用场景。最后,添加常见配置项,比如全局过滤器和超时设置,帮助用户扩展知识。 需要检查是否所有技术术语都正确,比如路由、断言、过滤器,并确保示例代码的语法正确。另外,引用标识要正确对应到参考资料,比如引用[2]和[3]的相关内容。最后,生成相关问题时要围绕网关配置的扩展知识和常见问题,帮助用户深入学习。</think>### Spring Cloud 微服务网关配置教程与示例 #### 1. **创建网关微服务模块** 首先创建一个独立的Spring Boot项目作为网关服务,并添加以下依赖: ```xml <!-- Spring Cloud Gateway --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- Nacos 服务发现(若使用其他注册中心可替换为Eureka等) --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` --- #### 2. **配置路由规则** 在`application.yml`中定义路由规则。以下示例展示了如何将请求路由到图书管理系统的两个服务(用户服务和图书服务)[^2][^3]: ```yaml spring: cloud: gateway: routes: - id: user-service-route uri: lb://user-service # lb表示负载均衡,user-service是服务注册名 predicates: # 断言配置 - Path=/api/users/** # 匹配以/api/users开头的请求 filters: - StripPrefix=1 # 移除路径中的第一个前缀(即/api) - id: book-service-route uri: lb://book-service predicates: - Path=/api/books/** - After=2024-01-01T00:00:00.000+08:00 # 内置断言工厂示例:仅在该时间后生效 filters: - AddRequestHeader=X-Gateway-Request, true # 添加请求头 ``` --- #### 3. **启用服务发现与动态路由** 若需动态从注册中心(如Nacos)获取服务列表,添加以下配置: ```yaml spring: cloud: gateway: discovery: locator: enabled: true # 开启通过服务ID动态路由 lower-case-service-id: true # 服务ID转为小写 ``` --- #### 4. **自定义全局过滤器示例** 创建一个全局过滤器记录请求日志: ```java @Component public class LoggingGlobalFilter implements GlobalFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("请求路径: " + exchange.getRequest().getURI()); return chain.filter(exchange); } } ``` --- #### 5. **API网关统一入口测试** 假设用户服务接口为`http://user-service:8080/users`,通过网关访问的路径变为: ``` http://gateway-host:port/api/users -> 转发至 user-service:8080/users ``` --- ### 常见配置项说明 | 配置项 | 作用 | |-------------------------|----------------------------------------------------------------------| | `Path` 断言 | 匹配请求路径 | | `Before/After` 断言 | 按时间范围限制路由生效 | | `Header` 断言 | 检查请求头是否符合条件 | | `StripPrefix` 过滤器 | 截断请求路径的前缀 | | `Retry` 过滤器 | 配置失败重试策略 | | `CircuitBreaker` 过滤器 | 集成Hystrix实现熔断 | --- ### 引用说明 - **动态路由与断言工厂**:Spring Cloud Gateway通过内置的路由谓词工厂(如`Path`、`Header`)实现灵活的请求匹配逻辑[^3]。 - **服务发现集成**:网关结合Nacos或Eureka可自动发现服务实例并实现负载均衡[^2]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

search7

请为我点赞!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值