首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从sRGB转换成线性sRGB来计算opencv中的颜色校正矩阵?(CCM)

如何从sRGB转换成线性sRGB来计算opencv中的颜色校正矩阵?(CCM)
EN

Stack Overflow用户
提问于 2019-07-15 04:10:16
回答 1查看 12.1K关注 0票数 4

我已经引用了下面的stackoverflow线程来计算颜色校正矩阵。

正如上面提到的线程中所提到的,我想从sRGB颜色空间转换为线性sRGB空间,我尝试使用pwkit彩色映射器代码进行转换。

但是,我不确定得到的线性sRGB值,因为函数在0-1范围内需要sRGB,是否将sRGB值除以255.0,这是正确的方法吗?如何验证函数返回的线性sRGB值是否正确?

代码语言:javascript
复制
import os
import numpy as np
import cv2 
import matplotlib.pyplot as plt

def srgb_to_linsrgb (srgb):
    """Convert sRGB values to physically linear ones. The transformation is
       uniform in RGB, so *srgb* can be of any shape.

       *srgb* values should range between 0 and 1, inclusively.

    """
    gamma = ((srgb + 0.055) / 1.055)**2.4
    scale = srgb / 12.92
    return np.where (srgb > 0.04045, gamma, scale)


if __name__ == "__main__":

    colorChecker = cv2.imread('C:/Users/Ai/Documents/Urine Sample Analysis/Assets/colorchecker_1.jpg')
    cc = cv2.cvtColor(colorChecker,cv2.COLOR_BGR2RGB)
    plt.imshow(cc)

    #Convert srgb to linear rgb
    cc = cc / 255.0
    cc1 = srgb_to_linsrgb(cc)
    print("Conversion from sRGB to linear RGB:\n")
    print(cc1[1,1,:])

转换结果为: 0.30946892 0.23455058 0.19806932。

输入的sRGB应该在0-1之间,如何将sRGB通道的值从0-255缩放到0-1,简单除以255.0会得到正确的线性sRGB值吗?如何验证转换是否导致了正确的线性sRGB值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-15 06:50:49

从术语的角度来看,假设您的图像是有效的sRGB编码,即按照IEC 61966-2-1:1999,您正在通过应用sRGB电光传输函数(一种颜色分量传递函数)来解码sRGB编码的非线性光值:

我想从sRGB颜色空间转换为线性RGB空间。

是不正确的,因为你仍然有效地使用sRGB编码的颜色,唯一的区别是,在使用解码前,它们是非线性编码的。一个加性RGB颜色空间由三个组件组成:主色、白点和CCTFs。通过使用CCTF,您在所有的初选或白点上都没有改变,也就是说,范围是相同的,因此,您应该说的是更符合以下几点:

我想从sRGB颜色空间转换为线性sRGB颜色空间。

现在,为了验证您的方法是正确的,您可以与引用实现(如颜色 )进行比较,该实现的代码在所引用的SO线程中使用:使用sRGB逆EOTF进行非线性编码时,18%的灰色值为118:

代码语言:javascript
复制
>>> int(round(colour.models.eotf_inverse_sRGB(0.18) * 255))
118

从那里,您可以检查您的方法是否真的转换回18%,它确实(不考虑四舍五入)!

代码语言:javascript
复制
0.18116424424986022
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57033168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档