基于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是一个三维数组,其中第三个维度对应于图像的颜色通道(B, G, R)。因此,需要为每个颜色通道分别绘制响应函数曲线。可以通过在循环中绘制每个通道的响应函数曲线来实现这一点。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值