当前位置: 首页 > 知识库问答 >
问题:

将CMYK颜色空间绘制为3D颜色实体

阎安邦
2023-03-14

我使用下面的POV-Ray循环在其他颜色空间绘制sRGB坐标。环路只沿着外表面产生点,然后用三角形连接它们。因为sRGB空间是一种扭曲的立方体,这意味着6个外表面和8个顶点。

#macro cie_calc_gamut_xyz_srgb()
    #for (i, 0, cie_sample_count_srgb)
        #for (j, 0, cie_sample_count_srgb)
            // side 0 & 3
            #local cooRGB = <i/cie_sample_count_srgb,j/cie_sample_count_srgb,0>;
            #local cooXYZ = cie_convRGB2XYZ(cooRGB);
            #declare cie_point_array_srgb[0][i][j] = cooXYZ;
            #local cooRGB = <i/cie_sample_count_srgb,j/cie_sample_count_srgb,1>;
            #local cooXYZ = cie_convRGB2XYZ(cooRGB);
            #declare cie_point_array_srgb[3][i][j] = cooXYZ;
            // side 1 & 4
            #local cooRGB = <i/cie_sample_count_srgb,0,j/cie_sample_count_srgb>;
            #local cooXYZ = cie_convRGB2XYZ(cooRGB);
            #declare cie_point_array_srgb[1][i][j] = cooXYZ;
            #local cooRGB = <i/cie_sample_count_srgb,1,j/cie_sample_count_srgb>;
            #local cooXYZ = cie_convRGB2XYZ(cooRGB);
            #declare cie_point_array_srgb[4][i][j] = cooXYZ;
            // side 2 & 5
            #local cooRGB = <0,i/cie_sample_count_srgb,j/cie_sample_count_srgb>;
            #local cooXYZ = cie_convRGB2XYZ(cooRGB);
            #declare cie_point_array_srgb[2][i][j] = cooXYZ;
            #local cooRGB = <1,i/cie_sample_count_srgb,j/cie_sample_count_srgb>;
            #local cooXYZ = cie_convRGB2XYZ(cooRGB);
            #declare cie_point_array_srgb[5][i][j] = cooXYZ;
        #end
    #end
#end

这很有效,因为几乎所有的颜色空间都是三维的。以下是一个输出示例:

不过,我想对CMYK颜色空间也这么做。我遇到的问题是,它有4个参数,而不是3个。同样,我只想在最外面的曲面上绘制点,并用三角形连接它们。我不认为产生的颜色立体是四维的,但我完全不知道如何进行。有人知道该怎么做吗?谢谢

请注意,XYZ是一个颜色空间。链接

共有1个答案

钱瑞
2023-03-14

这里的主要问题是CMYK不是一个合适的颜色空间——它更像是一个打印过程,你在坐标上有一个额外的自由度,可以将所有的颜色映射到可见的颜色。与100%CMY相比,使用K对眼睛来说更独特的是成像软件无法模拟的着色剂的化学特性。(我试着在谷歌上搜索一个关于CMYK不是颜色空间的好参考——试试看,你会发现科学支持的文本倾向于称CMYK为“颜色模型”)

无论如何,具有4个坐标使得大多数已知的处理颜色的成像算法无效,这就是GIMP从来没有也从未考虑过内部CMYK颜色空间的主要原因。(导出到这个空间可以,但不能在上面工作)。

总之,你应该做的是取一个固定的K值,并用不同的CMY渲染你的立方体。如果需要额外的立方体,重复上述步骤。

 类似资料:
  • 问题内容: 当混合蓝色和黄色油漆时,结果是某种绿色。 我有两种rgb颜色: 蓝色=(0,0,255) 黄色=(255,255,0) 找到两种颜色混合使用时产生的rgb颜色的算法是什么(就像使用油漆时会出现的一样)?该算法产生的颜色不必十分精确。对于上面的示例,它只需要看起来像某种绿色即可。 提前致谢。 编辑: 根据LaC的回答,用Go编写的此功能对我有用。 编辑#2 虽然如此,但设法将青色和黄色混

  • 本文向大家介绍HTML采用的是RGB颜色还是CMYK颜色?为什么?相关面试题,主要包含被问及HTML采用的是RGB颜色还是CMYK颜色?为什么?时的应答技巧和注意事项,需要的朋友参考一下 用在电脑或者手机上显示的大部分都是RGB,用于需要印刷的都用CMYK 并且不同的显示器色域不同会导致色差,不同浏览器也有自己的调色板,后面总结出来过一套web安全色,就是专用在web上大部分情况下都不会有明显色差

  • 问题内容: 我在该主题上找到的所有内容都只是将十六进制转换为rgb,然后添加一个Alpha1。我也想从十六进制数字中获得所需的Alpha。 诸如或明显具有不为0或1的Alpha值的颜色。 问题答案: 我已经制作了一个快速的JSfiddle表格,可以将8位十六进制代码转换为CSS rgba值;) 基础很简单-将您提供的字符串分成两位数的一部分,并转换为alpha通道的百分比率和RGB通道的小数位。标

  • 目标 在这一教程中,你将会学到如何将图像从一个颜色空间变换到另外一个,像 BGR $\leftrightarrow$ Gray, BGR $\leftrightarrow$ HSV 等等。 另外,我们还将编写一个程序来从一段视频中提取出一个有颜色的物体。 你会学到这些函数:cv2.cvtColor()、cv2.inRange() 等等。 更换颜色空间 OpenCV 中有 150 多种颜色空间转换方

  • 目标 在本教程中,你将学习如何将图像从一个色彩空间转换到另一个,像BGR↔灰色,BGR↔HSV等 除此之外,我们还将创建一个应用程序,以提取视频中的彩色对象 你将学习以下功能:cv.cvtColor,cv.inRange等。 改变颜色空间 OpenCV中有超过150种颜色空间转换方法。但是我们将研究只有两个最广泛使用的,BGR↔灰色和BGR↔HSV。 对于颜色转换,我们使用cv函数。cvtColo

  • 这就是我所做的 这将返回一个字符串“0XFFhexcode”,我想将其转换为long,将其存储,然后将其用作颜色 我有以下错误