我正在对从相机中直接拍摄的原始图像进行色彩校正。我想让我的相机再现与我的目标相机相同的颜色。
以下是我要遵循的步骤:
现在,如果我在此阶段直接计算颜色校正,则所有白色颜色都显示为玫瑰色或不正确。
所以我按照以下方式应用Gamma校正:
拆分三个频道。对于每种颜色,使用此公式找到该调色板的Gamma。
float Gamma_R = log10(Target_R / 255.0))/(log10(Input_R / 255.0);
错误案例:1
如果Input_Channel值== 255,则将其设为254
如果Input_Channel值== 0,则将其设为1
如果gamma_Channel> 3或gamma_Channel< 0.2使gamma_Channel为1。
平均所有24种颜色的Gamma_R值和&把它作为一个 该频道的伽玛。
使用公式为每个通道计算的Gamma为每个通道应用Gamma。
Corrected_R = 255 *(Input_R / 255)^(1 / Gamma_R)
我的问题:
如何确保我在此阶段计算出的Gamma值是正确的?如果我做错了也要纠正我。
以下错误案例:1发生时该怎么办?
应用Gamma校正&使用3x3矩阵进行色彩校正(假设我正确地执行了此操作)仍然无法正确再现色彩。
如果我使用此公式使用上一阶段中相同的Gamma值对伽玛进行编码,则再次无法正确再现颜色。
Corrected_R = 255 *(Input_R / 255)^(Gamma_R)
那么我需要从色彩校正输出再次计算Gamma吗?
非常感谢任何建议或参考资料!
答案 0 :(得分:2)
在不减损Spektre的答案的情况下,请注意使用正确的近似值可以获得良好的结果,并且第一次尝试是线性的。几点说明:
稍加注意,线性近似应该给你一个非常接近的匹配。请记住,估计的变换仅在线性CIELAB颜色空间中有效,因此要应用于自然(非图表)图像,您必须遵循整个变换链:撤消强度的伽马扩展=>转换为Lab =>申请Q =>反向转换为RGB =>伽玛压缩回到8bpp。
线性近似通常也是非线性细化的良好起点,在这种情况下,您尝试估计一个小的"通常是多项式,校正Q变换值以改善视觉外观。输出。
答案 1 :(得分:1)
我认为你需要稍微改变一下
检查您的相机是否使用相同的波段。如果没有,那么你就麻烦大了。这样:
可能会为它发光。您需要将波段作为连续光谱处理,因此处理一个相机颜色作为曲线的控制点,并获取第二个相机的波段的点。但是对于3个频段(标准摄像机的通常情况)这不是很精确。只有在此之后,您才能应用以下
如果乐队相同或非常接近,那么这样做:
获取每个摄像机每个频段的传输功能
它将采用以下形式:
R'=r0+r1*R+r2*R*R+...
其中R'
是红带实际强度。 R
是相机返回的强度
r0,r1,..
是偏移,亮度,伽玛等传递函数常数......
这只能从颜色渐变中获得。不要使用调色板使用带颜色渐变
当您查看多项式时,它们是曲线
所以从相机计算实际强度,找到曲线上的点,在第二个相机上返回相同的强度,这就是每个波段的结果输出......
您可以使用bin搜索...或计算逆多项式
答案 2 :(得分:1)
我对Gamma校正提出了一个小建议:
不要对你获得的游戏进行平均,而是按照以下步骤进行小型缩小:
找到最小化|ref-F(qry,**Gamma**)|
的 Gamma ; ref是第一个相机图像,qry是第二个相机图像。
此致