---
title: hi_isp_cmos_drc
description: "定义DRC的CMOS参数。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/ispdevug/ispdevapi_0111.html
sourcePath: /source/zh/canncommercial/900/others/ispdevug/ispdevapi_0111.html
indexId: 7112b5005098052b785eb85224bc5281e1a46ed55fc8a753e0ce644b5d65f9b165
---
# hi_isp_cmos_drc

#### 说明

定义DRC的CMOS参数。


#### 定义

```
typedef struct {
hi_bool
enable;
hi_op_mode
op_type;
hi_u16
manual_strength;
hi_u16
auto_strength;
hi_u8
spatial_flt_coef;
hi_u8
range_flt_coef;
hi_u8
contrast_control;
hi_s8
detail_adjust_factor;
hi_u8
range_ada_max;
hi_u8
grad_rev_max;
hi_u8
grad_rev_thr;
hi_u8
bright_gain_lmt;
hi_u8
bright_gain_lmt_step;
hi_u8
dark_gain_lmt_y;
hi_u8
dark_gain_lmt_c;
hi_u8
purple_reduction_strength;
hi_u8
local_mixing_bright_max;
hi_u8
local_mixing_bright_min;
hi_u8
local_mixing_bright_thr;
hi_s8
local_mixing_bright_slo;
hi_u8
local_mixing_dark_max;
hi_u8
local_mixing_dark_min;
hi_u8
local_mixing_dark_thr;
hi_s8
local_mixing_dark_slo;
hi_u16
color_correction_lut[HI_ISP_DRC_CC_NODE_NUM];
hi_u16
tone_mapping_value[HI_ISP_DRC_TM_NODE_NUM];
hi_u8
asymmetry;
hi_u8
second_pole;
hi_u8
stretch;
hi_u8
compress;
hi_u8
curve_sel;
} hi_isp_cmos_drc;
```


#### 成员

| 成员名称 | 描述 |
| --- | --- |
| enable | 使能开关。 取值范围： HI\_FALSE：关闭； HI\_TRUE：使能。 |
| op\_type | DRC工作类型。 取值范围： HI\_OP\_MODE\_AUTO：自动； HI\_OP\_MODE\_MANUAL ：手动。 |
| manual\_strength | 手动模式下DRC的强度，值越大，阴影和高光之间的差分增益就越高。 取值范围：[0x0, 0x3FF]。 |
| auto\_strength | 自动模式DRC的强度，参数可以读写，值越大，整体强度越大。 取值范围：[0x0, 0x3FF]。 |
| spatial\_flt\_coef | Filter空域滤波系数。值越大，运动halo越不明显，细节越少，值越小，细节表现越好，运动halo越明显。 取值范围：[0x0, 0x5] |
| range\_flt\_coef | Filter值域滤波系数。值越大，halo越明显；值越小，halo表现越好，但是在强边缘处可能会出现描边现象。 取值范围：[0x0, 0xA] |
| contrast\_control | 局部对比度控制，参数效果与图像亮度分布相关，一般场景下建议值为6到10之间。 取值范围：[0x0, 0xF] |
| detail\_adjust\_factor | Filter细节微调系数。值越大，整体细节越强。 取值范围：[\-0xF, 0xF] |
| range\_ada\_max | 控制值域滤波系数的自适应范围。实际生效滤波系数在[range\_flt\_coef, MIN(range\_flt\_coef+range\_ada\_max, 0xA)]范围内。调大该值有助于减弱边线，但同时可能造成背光物体细节损失。 取值范围：[0x0, 0x8] |
| grad\_rev\_max | 去边线强度。值越大，边线减弱越明显，但是可能会带来细节损失。 取值范围：[0x0, 0x40] |
| grad\_rev\_thr | 边线检测阈值。值越大，边线减弱越明显，但是可能会带来细节损失。 取值范围：[0x0, 0x80] |
| bright\_gain\_lmt | 亮区亮度增益限制目标值；值越大，限制越大。 取值范围：[0x0, 0xF] |
| bright\_gain\_lmt\_step | 亮区亮度增益限制自适应步长；值越小，限制越大。 取值范围：[0x0, 0xF] |
| dark\_gain\_lmt\_y | 暗区亮度增益限制；值越大，限制越大。 取值范围：[0x0, 0x85] |
| dark\_gain\_lmt\_c | 暗区色度增益限制；值越大，限制越大。 取值范围：[0x0, 0x85] |
| purple\_reduction\_strength | 紫边校正强度，值越大，紫边校正强度越大。 取值范围：[0x0, 0x80] |
| local\_mixing\_bright\_max | 线性细节增强：用来控制正向细节的增益的最大值。 取值范围：[0x0, 0x80] |
| local\_mixing\_bright\_min | 线性细节增强：用来控制正向细节的增益的最小值。 取值范围：[0x0, 0x40] |
| local\_mixing\_bright\_thr | 线性细节增强：用来控制正向细节增益随亮度自适应的阈值。当像素亮度超过该阈值，增益将从最大值向最小值过渡（或反之，取决于斜率参数的符号）。 取值范围：[0x0, 0xFF] |
| local\_mixing\_bright\_slo | 线性细节增强：用来控制正向细节增益随亮度自适应的斜率。绝对值越大，从最小值到最大值（或反之）过渡越快。 取值范围：[\-0x7, 0x7] |
| local\_mixing\_dark\_max | 线性细节增强：用来控制负向细节的增益最大值。 取值范围：[0x0, 0x80] |
| local\_mixing\_dark\_min | 线性细节增强：用来控制负向细节的增益最小值。 取值范围：[0x0, 0x40] |
| local\_mixing\_dark\_thr | 线性细节增强：用来控制负向细节增益随亮度自适应的阈值。当像素亮度超过该阈值，增益将从最小值向最大值过渡（或反之，取决于斜率参数的符号）。 取值范围：[0x0, 0xFF] |
| local\_mixing\_dark\_slo | 线性细节增强：用来控制负向细节增益随亮度自适应的斜率。绝对值越大，从最小值到最大值（或反之）过渡越快。 取值范围：[\-0x7, 0x7] |
| color\_correction\_lut | 颜色校正系数LUT，值越小，饱和度越低。 取值范围：[0x0, 0x400] \#define HI\_ISP\_DRC\_CC\_NODE\_NUM 33 |
| tone\_mapping\_value | 用户自定义Tone Mapping曲线LUT。 取值范围：[0x0, 0xFFFF] \#define HI\_ISP\_DRC\_TM\_NODE\_NUM 200 |
| asymmetry | 用于生成Asymmetry Curve，值越小，暗区亮度拉伸越明显。 取值范围：[1, 30] |
| second\_pole | 用于生成Asymmetry Curve，值越小，亮区亮度压制越强，有利于保留高亮细节。 取值范围：[150, 210] |
| stretch | 用于生成Asymmetry Curve，值越小，整体亮度越亮。 取值范围：[30, 60] |
| compress | 用于生成Asymmetry Curve，值越小，整体亮度越亮。 取值范围：[100, 200] |
| curve\_sel | DRC Tone mapping曲线选择。 取值范围： 0：Asymmetry curve； 1：用户自定义曲线 |
