Robertson アルゴリズムに基づいたカメラ応答関数 (CRF) 曲線のフィッティング

Python コードを実装する手順は次のとおりです。

import numpy as np
import cv2
import os
import matplotlib.pyplot as plt

# 读取多曝光图像
# ... (省略了读取图像的代码)

img_list =[……]

# 提取每个像素的曝光时间
exp_times = np.array([……], dtype=np.float32)

# 估计相机响应函数
calibrateRobertson = cv2.createCalibrateRobertson()
responseRobertson = calibrateRobertson.process(img_list, times=exp_times)

# 显示相机响应函数曲线
x = np.arange(0, 256)
for i in range(responseRobertson.shape[2]):
    y = responseRobertson[:, :, i].squeeze()
    plt.plot(x, y, label=f'Channel {i+1}')

plt.title('Robertson Camera Response Curve')
plt.xlabel('Pixel Value')
plt.ylabel('Log Exposure')
plt.legend()
plt.show()

このアルゴリズムに従って、必要な多重露出写真と露出時間を置き換え、CRF カーブに適合させて表示することができます。

Robertson のアルゴリズムは各カラー チャネルで独立して計算する必要があるため、3 チャネルの応答関数が必要です。

responseRobertson は 3 次元配列で、3 番目の次元は画像のカラー チャネル (B、G、R) に対応します。したがって、応答関数曲線はカラー チャネルごとに個別にプロットする必要があります。これは、ループ内の各チャネルの応答関数をプロットすることで実現できます。

 

おすすめ

転載: blog.csdn.net/yooniversity/article/details/132132388