---
title: hi_isp_clut_lut
description: "定义CLUT的查找表。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/ispdevug/ispdevapi_0276.html
sourcePath: /source/zh/canncommercial/900/others/ispdevug/ispdevapi_0276.html
indexId: 001a6c53907061c9eef6fd8c0bd772e8554836a00eef9eeaafd5ad03680a495465
---
# hi_isp_clut_lut

#### 说明

定义CLUT的查找表。


#### 定义

```
typedef struct {
hi_u32
lut[HI_ISP_CLUT_LUT_LENGTH];
} hi_isp_clut_lut;
```


#### 成员

| 成员名称 | 描述 |
| --- | --- |
| lut | 查找表取值范围：[0, 1073741823]。 注：lut表中每个元素的有效范围是30bit，若设置超过取值范围的值，实际生效范围仍是30bit \#define HI\_ISP\_CLUT\_LUT\_LENGTH 5508 |


#### 注意事项

用户需要自行生成3D LUT表，将17x17x17x3的LUT放入8x3的LUT，然后将8x3的LUT紧凑排列填入长度为5508的LUT。

17x17x17x3的LUT每个元素的范围为[-511, 511]，使用10bit有符号数表示。将17x17x17x3的LUT取成8x3的LUT的过程为：

三维表的下标为偶数时定义为0，下标为奇数时定义为1。R[i][j][k]，G[i][j][k]， B[i][j][k]中的i代表r的分格，j代表b的分格，k代表g的分格，即ijk代表三维表的地址坐标，对应的是rbg的排列顺序。R[i][j][k]，G[i][j][k]，B[i][j][k]的值是deltaR，deltaG，deltaB的值。用C代表RGB，真值表如下所示：


上图对应的伪代码如下所示：
```
for(k = 0; k < 17; k++) {
for(j = 0; j < 17; j++) {
for(i = 0; i < 17; i++) {
switch((i&1) + ((j&1)<<1) + ((k&1)<<2)) {
case 0:
R0[n0]=R[i][j][k];
G0[n0]=G[i][j][k];
B0[n0]=B[i][j][k];
case 1:
R1[n1]=R[i][j][k];
G1[n1]=G[i][j][k];
B1[n1]=B[i][j][k];
case 2:
R2[n2]=R[i][j][k];
G2[n2]=G[i][j][k];
B2[n2]=B[i][j][k];
case 3:
R3[n3]=R[i][j][k];
G3[n3]=G[i][j][k];
B3[n3]=B[i][j][k];
case 4:
R4[n4]=R[i][j][k];
G4[n4]=G[i][j][k];
B4[n4]=B[i][j][k];
case 5:
R5[n5]=R[i][j][k];
G5[n5]=G[i][j][k];
B5[n5]=B[i][j][k];
case 6:
R6[n6]=R[i][j][k];
G6[n6]=G[i][j][k];
B6[n6]=B[i][j][k];
case 7:
R7[n7]=R[i][j][k];
G7[n7]=G[i][j][k];
B7[n7]=B[i][j][k];
}
}
}
}
```


用C代表RGB，取出的8个LUT分别为c0[729]、c1[648]、c2[648]、c3[576]、 c4[648]、c5[576]、c6[576]、c7[512]。

下面的描述用_0代表一维数组c0[729]第0个数据，_1代表一维数组c0[729]第1个数据。

8x3的LUT按照每3个数据紧凑排列到1个32bit数据内的格式定义为：

{2' b00,B0_0,G0_0,R0_0},

{2' b00,B1_0,G1_0,R1_0},

{2' b00,B2_0,G2_0,R2_0},

{2' b00,B3_0,G3_0,R3_0},

{2' b00,B0_1,G0_1,R0_1},

{2' b00,B1_1,G1_1,R1_1},

{2' b00,B2_1,G2_1,R2_1},

{2' b00,B3_1,G3_1,R3_1},

{......},

上述格式可视化如下图所示：


整体看如下图所示：


8x3的LUT按照c0[729] 占用空间729 x 4 = 2916和c4[648]占用空间648 x 4 = 2592连续存储成一个长度为5508的一维数组。
