8. DPC¶
8.1. 功能描述¶
DPC 全称为 Defect Pixel Correction,可以修正 Sensor 上有问题的坏点。
修正方法有两种,分别为静态校正与动态校正。
静态校正:校正时分为暗点校正与亮点校正。
亮点校正时,把镜头遮黑,启动坏点标定程序。
暗点校正时,不遮黑在平坦背景时如灰度箱前,调整曝光让图像整体亮度约为 50%.
静态坏点最多允许 4095 个坏点。
动态校正:使用此方法时,不使用校正数据而是直接动态判断坏点,并且加以修正。在低噪时对画面偏色有帮助,但若强度太强可能会致画面细节降低。
8.2. API 参考¶
CVI_ISP_SetDPDynamicAttr: 设置动态坏点校正属性
CVI_ISP_GetDPDynamicAttr: 获取动态坏点校正属性
CVI_ISP_SetDPCalibrate: 设置静态坏点标定参数
CVI_ISP_GetDPCalibrate: 获取静态坏点标定参数
CVI_ISP_SetDPStaticAttr: 设置静态坏点校正属性
CVI_ISP_GetDPStaticAttr: 获取静态坏点校正属性
8.2.1. CVI_ISP_SetDPDynamicAttr¶
【描述】
设置动态坏点校正属性
【语法】
CVI_S32 CVI_ISP_SetDPDynamicAttr(VI_PIPE ViPipe, const ISP_DP_DYNAMIC_ATTR_S *pstDPCDynamicAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstDPCDynamicAttr |
动态坏点校正属性 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无。
【举例】
无。
【相关主题】
8.2.2. CVI_ISP_GetDPDynamicAttr¶
【描述】
获取动态坏点校正属性参数
【语法】
CVI_S32 CVI_ISP_GetDPDynamicAttr(VI_PIPE ViPipe, ISP_DP_DYNAMIC_ATTR_S *pstDPCDynamicAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstDPDynamicAttr |
静态坏点标定参数 |
输出 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无。
【举例】
无。
【相关主题】
8.2.3. CVI_ISP_SetDPCalibrate¶
【描述】
设置静态坏点校正属性
【语法】
CVI_S32 CVI_ISP_SetDPCalibrate(VI_PIPE ViPipe, const ISP_DP_CALIB_ATTR_S *pstDPCalibAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstDPCalibrateAttr |
静态坏点校正属性 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无。
【举例】
无。
【相关主题】
8.2.4. CVI_ISP_GetDPCalibrate¶
【描述】
获取静态坏点标定参数
【语法】
CVI_S32 CVI_ISP_GetDPCalibrate(VI_PIPE ViPipe, ISP_DP_CALIB_ATTR_S *pstDPCalibAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstDPCalibrateAttr |
静态坏点标定参数 |
输出 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无。
【举例】
无。
【相关主题】
8.2.5. CVI_ISP_SetDPStaticAttr¶
【描述】
设置静态坏点校正属性
【语法】
CVI_S32 CVI_ISP_SetDPStaticAttr(VI_PIPE ViPipe, const ISP_DP_STATIC_ATTR_S *pstDPStaticAttr);
【参数】
参数名称 描述 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstDPStaticAttr |
静态坏点校正属性 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无。
【举例】
无。
【相关主题】
8.2.6. CVI_ISP_GetDPStaticAttr¶
【描述】
获取静态坏点校正属性
【语法】
CVI_S32 CVI_ISP_GetDPStaticAttr(VI_PIPE ViPipe, ISP_DP_STATIC_ATTR_S *pstDPStaticAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstDPStaticAttr |
静态坏点校正属性 |
输出 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无。
【举例】
无。
【相关主题】
8.3. 数据类型¶
ISP_DP_DYNAMIC_MANUAL_ATTR_S: 动态坏点校正手动属性
ISP_DP_DYNAMIC_AUTO_ATTR_S: 动态坏点校正自动属性
ISP_DP_DYNAMIC_ATTR_S: 动态坏点校正属性
ISP_DP_CALIB_ATTR_S: 静态坏点标定参数
ISP_DP_STATIC_ATTR_S: 静态坏点校正属性
8.3.1. ISP_DP_DYNAMIC_MANUAL_ATTR_S¶
【说明】
动态坏点校正手动属性
【定义】
typedef struct _ISP_DP_DYNAMIC_MANUAL_ATTR_S {
CVI_U8 ClusterSize;
CVI_U8 BrightDefectToNormalPixRatio;
CVI_U8 DarkDefectToNormalPixRatio;
CVI_U8 FlatThreR;
CVI_U8 FlatThreG;
CVI_U8 FlatThreB;
CVI_U8 FlatThreMinG;
CVI_U8 FlatThreMinRB;
} ISP_DP_DYNAMIC_MANUAL_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
ClusterSize |
群 聚坏点面积上限,值越高越能修正群聚坏点,但可能会造成高频区域解像力的衰减 取值范围: [0x0, 0x3] 数据类型: CVI_U8 |
BrightDefectToNormalPixRatio |
可视亮坏点值与周围像素的倍率 (Q4.4) 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
DarkDefectToNormalPixRatio |
可视暗坏点值与周围像素的倍率 (Q4.4) 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreR |
R通道判别 平坦区临界值,值越小越能保留边缘信息 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreG |
G通道判别 平坦区临界值,值越小越能保留边缘信息 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreB |
B通道判别 平坦区临界值,值越小越能保留边缘信息 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreMinG |
G通道判别平坦区最小临界值 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreMinRB |
RB通道判别平坦区最小临界值 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
【注意事项】
无。
【相关数据类型及接口】
8.3.2. ISP_DP_DYNAMIC_AUTO_ATTR_S¶
【说明】
动态坏点校正自动属性
【定义】
typedef struct _ISP_DP_DYNAMIC_AUTO_ATTR_S {
CVI_U8 ClusterSize[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U8 BrightDefectToNormalPixRatio[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U8 DarkDefectToNormalPixRatio[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U8 FlatThreR[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U8 FlatThreG[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U8 FlatThreB[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U8 FlatThreMinG[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U8 FlatThreMinRB[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_DP_DYNAMIC_AUTO_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
ClusterSize |
群 聚坏点面积上限,值越高越能修正群聚坏点,但可能会造成高频区域解像力的衰减 取值范围: [0x0, 0x3] 数据类型: CVI_U8 |
BrightDefectToNormalPixRatio |
可视亮坏点值与周围像素的倍率 (Q4.4) 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
DarkDefectToNormalPixRatio |
可视暗坏点值与周围像素的倍率 (Q4.4) 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreR |
R通道判别 平坦区临界值,值越小越能保留边缘信息 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreG |
G通道判别 平坦区临界值,值越小越能保留边缘信息 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreB |
B通道判别 平坦区临界值,值越小越能保留边缘信息 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreMinG |
G通道判别平坦区最小临界值 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
FlatThreMinRB |
RB通道判别平坦区最小临界值 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
【注意事项】
无。
【相关数据类型及接口】
8.3.3. ISP_DP_DYNAMIC_ATTR_S¶
【说明】
动态坏点校正属性
【定义】
typedef struct _ISP_DP_DYNAMIC_ATTR_S {
CVI_BOOL Enable;
CVI_U32 DynamicDPCEnable;
ISP_OP_TYPE_E enOpType;
CVI_U8 UpdateInterval;
ISP_DP_DYNAMIC_MANUAL_ATTR_S stManual;
ISP_DP_DYNAMIC_AUTO_ATTR_S stAuto;
} ISP_DP_DYNAMIC_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
Enable |
DPC模块使能 0: 关闭 1: 使能 取值范围: [0, 1] 数据类型: CVI_BOOL |
DynamicDPCEnable |
动态坏点校正功能使能 数据类型: CVI_U32 |
enOpType |
工作类型 OP_TYPE_AUTO: 自动模式 OP_TYPE_MANUAL: 手动模式 |
UpdateInterval |
影响参数更新间隔, 值越大画面变化越慢, 效能越好。 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
stManual |
手动模式下参数 |
stAuto |
自动模式下参数 |
【注意事项】
无。
【相关数据类型及接口】
8.3.4. ISP_DP_CALIB_ATTR_S¶
【说明】
静态坏点标定参数
【定义】
typedef struct _ISP_DP_CALIB_ATTR_S {
CVI_BOOL EnableDetect;
CVI_STATIC_DP_TYPE_E StaticDPType;
CVI_U8 StartThresh;
CVI_U16 CountMax;
CVI_U16 CountMin;
CVI_U16 TimeLimit;
CVI_BOOL saveFileEn;
// read only
CVI_U32 Table[STATIC_DP_COUNT_MAX];
CVI_U8 FinishThresh;
CVI_U16 Count;
ISP_STATUS_E Status;
} ISP_DP_CALIB_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
EnableDetect |
静态坏点标定使能 取值范围: [0, 1] 数据类型: CVI_BOOL |
StaticDPType |
静态坏点标定类型 取值范围: [0x0, 0x1] 数据类型: CVI_STATIC_DP_TYPE_E |
StartThresh |
静态坏点标定开始时的检测门限值 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
CountMax |
允许静态坏点的最大个数 取值范围: [0x0, 0xfff] 数据类型: CVI_U16 |
CountMin |
允许静态坏点的最小个数 取值范围: [0x0, 0xfff] 数据类型: CVI_U16 |
TimeLimit |
允许标定超时门限值 取值范围: [0x0, 0x640] 数据类型: CVI_U16 |
saveFileEn |
是否保存raw图 取值范围: [0, 1] 数据类型: CVI_BOOL |
Table[4096] |
只读, 亮暗坏点坐标值查找表,低 29bit有效, [12:0]bit 为坏点的水平坐标, [28:16]bit 为坏点的垂直坐标 取值范围: [0x0, 0x1fff1fff] 数据类型: CVI_U32 |
FinishThresh |
只读, 静态坏点标定结束时的检测门限值 取值范围: [0x0, 0xff] 数据类型: CVI_U8 |
Count |
只读, 标定出的静态坏点的个数 取值范围: [0x0, 0xfff] 数据类型: CVI_U16 |
Status |
只读, 静态坏点标定结果状态信息 取值范围: [0x0, 0x2] 数据类型: ISP_STATUS_E |
【注意事项】
无。
【相关数据类型及接口】
8.3.5. ISP_DP_STATIC_ATTR_S¶
【说明】
静态坏点校正属性
【定义】
typedef struct _ISP_DP_STATIC_ATTR_S {
CVI_BOOL Enable;
CVI_U16 BrightCount;
CVI_U16 DarkCount;
CVI_U32 BrightTable[STATIC_DP_COUNT_MAX];
CVI_U32 DarkTable[STATIC_DP_COUNT_MAX];
CVI_BOOL Show; // not support yet
} ISP_DP_STATIC_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
Enable |
静态坏点DPC使能 0: 关闭 1: 使能 取值范围: [0, 1] 数据类型: CVI_BOOL |
BrightCount |
亮坏点个数 取值范围: [0x0, 0xfff] 数据类型: CVI_U16 |
DarkCount |
暗坏点个数 取值范围: [0x0, 0xfff] 数据类型: CVI_U16 |
BrightTable[4095] |
亮坏点坐标信息,低 29bit 有效, [12:0]bit 为坏点水平坐标,[28:16]bit为坏点垂直坐标。 取值范围: [0x0, 0x1fff1fff] 数据类型: CVI_U32 |
DarkTable[4095] |
暗的坏点坐标值,低 29bit 有效, [12:0]bit 为坏点水平坐标,[28:16]bit为坏点垂直坐标。 取值范围: [0x0, 0x1fff1fff] 数据类型: CVI_U32 |
Show |
静态坏点显示使能 not support yet 取值范围: [0, 1] 数据类型: CVI_BOOL |
【注意事项】
无。
【相关数据类型及接口】