一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

信息:3x3的CCM矩陣如何標定?CCM矩陣色彩校正方法

來源:CSDN 時間:2023-03-06 08:02:33

CCM 標定的原理是,使用 sensor 抓拍到的 24 色卡場景下前 18 個色塊的實際顏色信息和其期望值,計算 3x3 的 CCM 矩陣。輸入顏色經 CCM 矩陣處理得到的顏色與其期望值差距越小,則 CCM 矩陣就越理想。

海思CCM矩陣:8bit 小數精度。bit 15是符號位,0 表示正數,1表示負數。典型的三組 CCM 為D50,TL84,A 三個光源下的 CCM。典型的五組 CCM為 10K,D65,D50,TL84,A 五個光源下的CCM。優先紅、綠、藍純色;然后膚色塊


【資料圖】

采集步驟:(1)標準 X-Rite 24 色卡,照度為 600Lux 均勻光源;(2)調整 AE 目標亮度,最亮灰階(Block 19)的 G 分量亮度在飽和值的 0.8 倍左右

手動調試CCM步驟:

(1)優先確認顏色問題是由于AWB模塊引入還是CCM引入

(2)過燈箱客觀指標,確認是否需要重新標定

(3)最后再考慮手動調整CCM

a.一般都是針對單一顏色進行微調整(比如車牌天藍,想要深藍;人臉偏紅或是偏黃綠),所以單一顏色都會有個當前RGB值,想要調整的目標RGB值,其實調整CCM的目的就是通過CCM使得當前RGB值趨于目標RGB值

b.針對a所述,調整RGB值,調整R:a00、a01、a02(RinR、GinR、BinR);調整G:a10、a11、a12(RinG、GinG、BinG);調整B:a20、a21、a22(RinB、GinB、BinB)。

CCM矩陣色彩校正的方法_一只特立獨行的zhu..-CSDN博客_ccm調試

WDR模式下標定CCM,CCM 容易受到 DRC 的影響,容易造成顏色難以矯正:

(1)曝光比手動最大,同時也要調整亮度值,避免長幀過曝,采集長幀的 RAW 數據進行 CCM 的標定。標定過程中可以適當的降低飽和度,不能選擇開啟 autoGain 功能。

(2)適當減少 DRC 曲線對圖像亮度的大幅度提升,這樣 DRC 對顏色的改變會較弱。此時,圖像的亮度會有所降低達不到想要的亮度,這時,可以用 gamma 對亮度進行適當的提升。這樣聯調 DRC 和 gamma 模塊,可以讓整體的顏色調節更準確一些。

(3)對于 WDR 模式,因為大多場景是混合光源場景,容易出現亮處顏色偏色,人臉顏色偏紅等問題,除了可以降低飽和度值以外,還可以使用 CA 模塊對這些區域適當的降低飽和度。

反gamma后圖像和gamma 1.0存在些許差異:

(1)CSC模塊

CCM模塊代碼:

https://github.com/WaterdropsKun/isppipeline_Python/tree/main/lecture14

Python實現ISP pipeline代碼:

GitHub - WaterdropsKun/isppipeline_Python: isppipeline_Python

如有幫助,希望幫忙github幫忙點個star

def degamma_hisi(data, clip_range, gamma_txt):    # gamma degamma    hisi_gamma_x = 1024-1    hisi_gamma_y = 4096-1    hisi_degamma_x = 256-1    hisi_degamma_y = 1.0    gamma_hisi_x1023_y4095 = []    degamma_x255_y1 = []    with open(gamma_txt, "r") as f:        for i, line in enumerate(f.readlines()):            line = line.split(",")            gamma_hisi_x1023_y4095 = [float(x) for x in line]            # for j, value in enumerate(line):            #     print(j, value)            # x = np.arange(0, 1024+1, 1)  # np.arange(start, end+step, step)  [start, end] end/step+1            # plt.plot(x, gamma_hisi_x1023_y4095)            # plt.show()        for i in range(hisi_degamma_x+1):  # for i in range(0, hisi_degamma_x+1, 1):            for j, value in enumerate(gamma_hisi_x1023_y4095):                if (value / hisi_gamma_y * hisi_degamma_x) >= i:                    degamma_x255_y1.append(j/hisi_gamma_x)                    break        # x = np.arange(0, hisi_degamma_x+1, 1)        # plt.plot(x, degamma_x255_y1)        # plt.show()    # degamma    data = np.clip(data, clip_range[0], clip_range[1])    data = np.divide(data, clip_range[1])    height = data.shape[0]    weight = data.shape[1]    channels = data.shape[2]    for row in range(height):               # 遍歷高        for col in range(weight):           # 遍歷寬            pv0 = data[row, col, 0]            pv1 = data[row, col, 1]            pv2 = data[row, col, 2]            data[row, col, 0] = degamma_x255_y1[int(pv0*255)]            data[row, col, 1] = degamma_x255_y1[int(pv1*255)]            data[row, col, 2] = degamma_x255_y1[int(pv2*255)]    data_show = data.copy()    data_show = np.clip(data_show * clip_range[1], clip_range[0], clip_range[1])    # gbr = rgb[...,[2,0,1]]    # data_show = data_show[..., ::-1]    data_show = data_show[..., [2,1,0]]    cv2.imshow("data", data_show.astype(np.uint8))    cv2.waitKey(0)    return np.clip(data * clip_range[1], clip_range[0], clip_range[1])def gamma_hisi(data, clip_range, gamma_txt):    # gamma degamma    hisi_gamma_x = 1024-1    hisi_gamma_y = 4096-1    hisi_degamma_x = 256-1    hisi_degamma_y = 1.0    gamma_hisi_x1023_y4095 = []    degamma_x255_y1 = []    with open(gamma_txt, "r") as f:        for i, line in enumerate(f.readlines()):            line = line.split(",")            gamma_hisi_x1023_y4095 = [float(x) for x in line]            # for j, value in enumerate(line):            #     print(j, value)            # x = np.arange(0, 1024+1, 1)  # np.arange(start, end+step, step)  [start, end] end/step+1            # plt.plot(x, gamma_hisi_x1023_y4095)            # plt.show()        for i in range(hisi_degamma_x+1):  # for i in range(0, hisi_degamma_x+1, 1):            for j, value in enumerate(gamma_hisi_x1023_y4095):                if (value / hisi_gamma_y * hisi_degamma_x) >= i:                    degamma_x255_y1.append(j/hisi_gamma_x)                    break        # x = np.arange(0, hisi_degamma_x+1, 1)        # plt.plot(x, degamma_x255_y1)        # plt.show()    # gamma    data = np.clip(data, clip_range[0], clip_range[1])    data = np.divide(data, clip_range[1])    height = data.shape[0]    weight = data.shape[1]    channels = data.shape[2]    for row in range(height):               # 遍歷高        for col in range(weight):           # 遍歷寬            pv0 = data[row, col, 0]            pv1 = data[row, col, 1]            pv2 = data[row, col, 2]            data[row, col, 0] = gamma_hisi_x1023_y4095[int(pv0*1023)] / 4095.0            data[row, col, 1] = gamma_hisi_x1023_y4095[int(pv1*1023)] / 4095.0            data[row, col, 2] = gamma_hisi_x1023_y4095[int(pv2*1023)] / 4095.0    data_show = data.copy()    data_show = np.clip(data_show * clip_range[1], clip_range[0], clip_range[1])    # gbr = rgb[...,[2,0,1]]    # data_show = data_show[..., ::-1]    data_show = data_show[..., [2,1,0]]    cv2.imshow("data", data_show.astype(np.uint8))    cv2.waitKey(0)    return np.clip(data * clip_range[1], clip_range[0], clip_range[1])def CCM_convert(data, CCM, color_space="srgb", clip_range=[0, 255]):    # CCM工作在線性RGB因此需要先進行degamma    if (color_space == "srgb"):        data = color.degamma_srgb(data, clip_range)        data = np.float32(data)        data = np.divide(data, clip_range[1])  # 歸一化    elif (color_space == "hisi"):        data = degamma_hisi(data, clip_range, "./gamma_hisi_int.txt")        data = np.float32(data)        data = np.divide(data, clip_range[1])  # 歸一化    # matrix multiplication    output = np.empty(np.shape(data), dtype=np.float32)    output[:, :, 0] = data[:, :, 0] * CCM[0,0] + data[:, :, 1] * CCM[0,1] + data[:, :, 2] * CCM[0,2]    output[:, :, 1] = data[:, :, 0] * CCM[1,0] + data[:, :, 1] * CCM[1,1] + data[:, :, 2] * CCM[1,2]    output[:, :, 2] = data[:, :, 0] * CCM[2,0] + data[:, :, 1] * CCM[2,1] + data[:, :, 2] * CCM[2,2]    # gamma    if (color_space == "srgb"):        output = output*clip_range[1]        output = color.gamma_srgb(output, clip_range)    elif (color_space == "hisi"):        output = output*clip_range[1]        output = gamma_hisi(output, clip_range, "./gamma_hisi_int.txt")    return outputif __name__ == "__main__":    # CCM = np.array([    #     [1.507812, -0.546875, 0.039062],    #     [-0.226562, 1.085938, 0.140625],    #     [-0.062500, -0.648438, 1.718750],    #     ])    CCM = np.array([        [1.0, 0.0, 0.0],        [0.0, 1.0, 0.0],        [0.0, 0.0, 1.0],        ])    maxvalue = 255    # image = plt.imread("kodim19.png")    image = plt.imread("test02.png")    if (np.max(image) <= 1):        image = image * maxvalue    new_image = CCM_convert(image, CCM, color_space="hisi", clip_range=[0, maxvalue])    color.rgb_show(image / 255)    color.rgb_show(new_image / 255)

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四
亚洲免费在线观看视频| 亚洲国产高清不卡| 日精品一区二区| 欧美日韩第一区日日骚| 日韩vs国产vs欧美| 欧美一级免费大片| 激情深爱一区二区| 中文字幕精品一区| 欧美性淫爽ww久久久久无| 亚洲成va人在线观看| 91精品欧美久久久久久动漫| 蜜桃91丨九色丨蝌蚪91桃色| 久久看人人爽人人| 色综合久久中文字幕综合网| 日本一不卡视频| 久久欧美一区二区| 99久久er热在这里只有精品15| 一区av在线播放| 日韩欧美国产综合一区| 国产风韵犹存在线视精品| 亚洲色欲色欲www| 91精品婷婷国产综合久久竹菊| 黄色日韩网站视频| 一区二区在线观看不卡| 欧美日韩视频专区在线播放| 激情国产一区二区| 亚洲人一二三区| 91精品国产综合久久久久久久 | 亚洲综合在线电影| 91精品福利在线一区二区三区| 狠狠色狠狠色综合系列| 亚洲在线视频一区| 久久精品男人的天堂| 精品视频在线看| 国产精品 欧美精品| 亚洲福利一二三区| 国产精品免费久久久久| 欧美精品久久久久久久久老牛影院| 国产一区二区在线视频| 亚洲综合一区二区三区| 国产亚洲欧美日韩日本| 欧美喷水一区二区| 成人福利视频在线| 九一九一国产精品| 亚洲国产精品欧美一二99| 国产欧美日韩不卡| 日韩一区二区三区高清免费看看 | 日本不卡免费在线视频| 国产精品嫩草99a| 日韩久久免费av| 欧美揉bbbbb揉bbbbb| 成人黄页在线观看| 精品一区二区三区在线播放视频| 亚洲综合小说图片| 亚洲色图色小说| 亚洲国产精品av| 久久色.com| 欧美白人最猛性xxxxx69交| 欧美视频在线一区| 97se亚洲国产综合自在线不卡| 韩国成人精品a∨在线观看| 五月天国产精品| 亚洲高清不卡在线观看| 亚洲人xxxx| 亚洲欧美另类在线| 国产精品久久久久久户外露出 | 日韩av不卡一区二区| 一区二区免费视频| 亚洲欧洲日产国码二区| 国产欧美日韩中文久久| 日韩欧美高清一区| 日韩一本二本av| 日韩视频一区二区三区在线播放| 欧美日韩视频第一区| 在线观看91精品国产入口| av电影一区二区| 92精品国产成人观看免费| 国产69精品久久久久毛片| 国v精品久久久网| 国产精品12区| 粉嫩高潮美女一区二区三区| 国产福利视频一区二区三区| 成人小视频在线观看| 国产成人av自拍| 成人成人成人在线视频| 成人一级黄色片| 9人人澡人人爽人人精品| 成人精品在线视频观看| 91麻豆免费视频| 日本电影亚洲天堂一区| 日本电影欧美片| 欧美男男青年gay1069videost | 日韩美一区二区三区| 日韩一区二区三区视频在线 | 国产成人免费xxxxxxxx| 高清成人免费视频| 波多野结衣欧美| 一本到高清视频免费精品| 欧美性生活一区| 日韩一区二区免费视频| 26uuu精品一区二区在线观看| 久久久久久久久久久久久久久99 | 欧美日韩国产免费一区二区| 亚洲男帅同性gay1069| 久久久久亚洲综合| 国产精品乱人伦中文| 一区二区三区资源| 午夜精品久久久久久久99水蜜桃| 奇米色一区二区三区四区| 国产一区二区三区久久悠悠色av| 99在线精品一区二区三区| 欧美综合视频在线观看| 日韩精品综合一本久道在线视频| 久久久国产午夜精品| 亚洲乱码国产乱码精品精98午夜| 三级在线观看一区二区 | 国产suv精品一区二区6| 91成人国产精品| 日韩精品一区二区三区中文不卡| 中文字幕+乱码+中文字幕一区| 一区二区在线观看免费| 久草这里只有精品视频| 91在线精品一区二区| 777精品伊人久久久久大香线蕉| 日韩精品一区二| 亚洲日本在线天堂| 美女高潮久久久| 在线一区二区三区| 精品乱人伦小说| 亚洲一区二区三区四区不卡| 久久99精品久久久久久国产越南 | 91成人在线免费观看| 精品久久久久久久久久久院品网| 日韩码欧中文字| 久久国产麻豆精品| 色婷婷综合五月| 久久九九全国免费| 日本成人超碰在线观看| 91蜜桃在线观看| 国产亚洲精品精华液| 水蜜桃久久夜色精品一区的特点| 成人app网站| 2021国产精品久久精品| 丝袜美腿一区二区三区| 91一区在线观看| 国产校园另类小说区| 人人狠狠综合久久亚洲| 欧美色综合影院| 亚洲男女毛片无遮挡| 成人激情校园春色| 久久亚洲精精品中文字幕早川悠里| 亚洲电影激情视频网站| av一二三不卡影片| 国产拍揄自揄精品视频麻豆| 日韩精品亚洲一区| 在线观看视频一区| 18成人在线视频| 成人国产精品视频| 日本一区二区视频在线观看| 精品一区二区综合| 精品日韩在线观看| 青青青伊人色综合久久| 欧美日本在线播放| 亚洲小少妇裸体bbw| 色婷婷精品大视频在线蜜桃视频 | 1000部国产精品成人观看| 成人黄色小视频在线观看| 久久精品视频一区二区三区| 精品无人码麻豆乱码1区2区| 日韩欧美国产午夜精品| 蜜桃免费网站一区二区三区| 91精品国产全国免费观看| 日一区二区三区| 91精品国产综合久久精品麻豆| 亚洲福利电影网| 欧美三级一区二区| 日日夜夜精品免费视频| 日韩欧美高清dvd碟片| 美腿丝袜亚洲一区| 精品处破学生在线二十三| 黄色资源网久久资源365| 久久精品夜夜夜夜久久| 丁香婷婷深情五月亚洲| 日韩伦理免费电影| 欧美在线免费观看亚洲| 亚洲成人动漫精品| 日韩亚洲欧美成人一区| 狠狠色综合色综合网络| 国产精品色眯眯| 色天使色偷偷av一区二区| 三级欧美在线一区| 精品裸体舞一区二区三区| 成人自拍视频在线| 一区二区在线免费观看| 7777女厕盗摄久久久| 国产一区亚洲一区| 亚洲精品网站在线观看| 欧美精品九九99久久| 久久99精品国产| 亚洲三级久久久|