如何判断 xyY 颜色是否位于 CIE 1931 色域内?

2024-01-06

我正在尝试使用数学绘制 CIE 1931 色域。

我采用 xyY 颜色,其中 Y 固定为 1.0,然后将 x 和 y 从 0.0 更改为 1.0。

如果我将生成的颜色绘制为图像(即 (x,y) 处的像素是我转换为 RGB 的 xyY 颜色),我会得到一张漂亮的图片,其中间某处具有 CIE 1931 色域,如下所示:

xyY 从 0.0 到 1.0:

现在我想要经典的舌形图像,所以我的问题是:如何剔除 CIE 1931 色域范围之外的像素?

IE。如何判断我的 xyY 颜色是否在 CIE 1931 颜色范围之内/之外?


我在搜索一个略有不同但相关的问题时偶然发现了这个问题,立即引起我注意的是顶部的渲染。它与我几个小时前制作的渲染相同,并且试图找出为什么它没有意义,这在一定程度上引导我来到这里。

对于读者:渲染是您转换后的结果{x ∈ [0, 1], y ∈ [0, 1], Y = 1} to XYZ,将该颜色转换为sRGB,然后将各个组件夹紧到[0, 1].

乍一看,看起来还不错。乍一看,它看起来不太像……饱和度似乎没有预期的那么高,并且在奇怪的角度有可见的过渡线。经过仔细检查,很明显,初选并没有顺利地相互过渡。例如,红色和蓝色之间的大部分范围只是洋红色 - 两者都R and B几乎在它们之间的整个距离上都是 100%。然后,当您添加检查以跳过绘制任何具有超出范围分量的颜色(而不是夹紧)时,所有内容都会消失。一切都超出了范围。发生什么了?

我想我已经弄清楚了比色法的一小部分至少 80%,所以我将其大大简化,以启发其他可能觉得它有趣或有用的人。我也尝试回答一下这个问题。

(⚠️ 在开始之前,有一个重要提示:有效的 RGB 显示颜色xyY space 可以在 CIE 1931 2° 标准观察者的边界之外。 sRGB 并非如此,但它is适用于 Display P3、Rec. 的外壳2020、CIE RGB 和其他广色域。这是因为三种原色需要自行加起来达到白点,因此与同等照明下相同波长相比,即使是单色原色也必须具有令人难以置信的、不自然的发光度。)

为色品图着色

xy 色度图不仅仅是一个切片xyY空间。它本质上是二维的。中的一个点xy平面代表色度除了亮度,因此只要有一种颜色就可以尽可能最好地表示only色度,而不是任何特定的颜色。通常情况下,颜色似乎是该色度最亮、最饱和的颜色,或者是显示器颜色空间中最接近的颜色,但这是一个任意的设计决策。

也就是说:在绘制说明性颜色的范围内,它们是一定这是虚构的,就像给选举地图着色纯粹是数据可视化的问题一样:为了方便理解。只是,在这种情况下,我们使用颜色来可视化比色学的一个方面,因此很容易将这两件事混为一谈。

3D plot of xyY space (Image credit: Michael Horvath) https://commons.wikimedia.org/w/index.php?title=File%3AVisible_gamut_within_CIExyY_color_space_D65_whitepoint_mesh.webm

当我们考虑可见光谱的完整 3D 形状时,颜色的虚假性及其必要性就变得显而易见。xyY空间。经典光谱轨迹(“马蹄铁”)可以很容易地看出是准直布罗陀体积的底部,在光谱轨迹处最宽,并在{Y = 1}。如果将其视为自上而下的投影,则位于光谱轨迹上和附近的颜色将非常暗(尽管对于该色度来说仍然是最亮的可能颜色),并且会朝着中心变得越来越亮。如果将其视为一个切片xyY体积,通过特定值Y,颜色将同样明亮,但整体会变得更亮,并且边界的形状会收缩,同样不均匀,随着增加Y,直至完全消失。据我所知,这两种可能性都没有多大的实际用途(如果有的话),尽管它们可能很有趣。

相反,该图是从里到外着色的:绘制的色域以最大强度着色(每个基色处于最亮状态,然后是内部的线性混合),色域外颜色从内色域三角形投影到光谱轨迹。这很烦人,因为你不能简单地使用矩阵变换来转动一个点xy平面成一种合理的颜色,但不幸的是,就实际传达有用且有些准确的信息而言,这似乎是不可避免的。

(澄清一下:它is实际上可以将单个色度点移动到 sRGB 空间中,并使用尽可能最亮饱和的 sRGB 颜色对色度图逐个像素进行着色 - 它只是比简单的矩阵变换更复杂。为此,首先移动三坐标xyz色度转换为 sRGB。然后将任何负值钳位到0。最后,统一缩放组件,使得最大组件值为1。请注意,这可能比绘制白点和原色然后在它们之间进行插值要慢得多,具体取决于您的渲染方法以及数据表示及其操作的效率。)

绘制光谱轨迹

获得特征马蹄形状的最直接方法就是使用经验数据表。

(http://cvrl.ioo.ucl.ac.uk/index.htm http://cvrl.ioo.ucl.ac.uk/index.htm,向下滚动以查找与面向外行的其他来源最匹配的“历史”数据集。他们选择数据的图标方案太聪明了,虚线图标代表在 5nm 采样的数据,实线图标代表在 1nm 采样的数据。)

构建一条以点为顶点的路径(您可能需要从顶部修剪一些,我将其切回到 700nm,CIERGB 红色原色),并使用生成的形状作为遮罩。对于 1nm 样本,折线对于接近任何分辨率都应该足够平滑:不需要拟合贝塞尔曲线或诸如此类的东西。

Polyline plot of xyY spectral locus (Note: only every 5th point shown for illustrative purposes.)

如果我们只想画出以三角形为界的标准马蹄铁{x = 0, y = 0}, {0, 1}, and {1, 0}那么这就足够了。请注意,我们可以通过跳过任何坐标来节省渲染时间x + y >= 1。如果我们想做更复杂的事情,比如绘制不同的变化边界Y值,然后我们讨论的是颜色匹配功能定义了XYZ space.

配色功能

the CIE XYZ color matching functions (Image credit: User:Acdx - Own work, CC BY-SA 4.0 https://commons.wikimedia.org/w/index.php?curid=6233111%5D)

基本事实XYZ空间以三个函数的形式映射光谱功率分布 to {X, Y, Z} 三刺激值。构建过程中使用了大量的数据和计算XYZ空间,但这一切都被融入到这三个函数中,这三个函数唯一地决定了{X, Y, Z}给定光谱的值。实际上,这些函数的作用是定义 3 种假想的原色,它们不能用任何实际的光谱创建,但是can混合在一起以创建可感知的颜色。因为它们可以混合,所以图中的每个非负点XYZ空间在数学上是有意义的,但并非每个点都对应于真实的颜色。

函数本身实际上被定义为查找表,而不是可以精确计算的方程。孟塞尔色彩科学实验室(https://www.rit.edu/science/munsell-color-lab https://www.rit.edu/science/munsell-color-lab)提供 1nm 分辨率样本:向下滚动到“教育资源”下的“有用颜色数据”。不幸的是,它是 Excel 格式的。其他来源可能会提供 5 纳米数据,任何比 1 纳米更精确的数据都可能是现代重建,可能无法与 1931 年的空间互换。

(感兴趣的是:本文 - http://jcgt.org/published/0002/02/01/ - 提供了在原始人类受试者数据的可变性范围内存在误差的分析近似值,但它们主要用于特定用例。出于我们的目的,最好也更简单地坚持使用经验采样数据。)

这些函数被称为, , and (or x bar, y bar, and z bar.) 总的来说,他们被称为 CIE 1931 2 度标准观察员。有一个单独的 1964 年标准观察器是从更宽的 10 度视场构建的,有微小的差异,可以用来代替 1931 年标准观察器,但可以说它创建了不同的色彩空间。 (1964 年标准观察者不应与单独的 CIE 1964 色彩空间混淆。)

要计算三刺激值,请取 (1) 颜色光谱和 (2) 颜色匹配函数的内积。这仅意味着光谱中的每个点(或样本)都乘以颜色匹配函数中的相应点(或样本),这用于重新加权数据。然后,您在可见光的整个范围([360nm,830nm])上进行积分(或更准确地说是求和,因为我们正在处理离散样本)。这些函数被归一化,以便它们在曲线下具有相等的面积,因此相等的能谱(每个波长的采样值相同)将有{X = Y = Z}。 (FWIW,孟塞尔颜色实验室数据已正确标准化,但由于某种原因,它们的总和为 106,并且会发生变化。)

再看一下 3D 图xyY空间中,我们再次注意到熟悉的谱轨迹形状似乎是体积的形状{Y = 0},即这些颜色实际上是黑色的。现在这有一定道理,因为它们是单色,并且它们的光谱应该由单个点组成,因此当您对单个点进行积分时,您将始终得到 0。然而,这就提出了一个问题:既然其他两个函数也应该为 0,那么它们怎么会有色度呢?

最简单的解释是Y形状底部的值实际上略大于零。采样的使用意味着单色源的光谱不被视为瞬时值。相反,它们是接近其波长的窄光谱带。您可以在精度范围内任意接近瞬时值,并且仍然期望有意义的色度,因此采样带宽变为 0 时的极限是理想的光谱轨迹,即使它恰好在 0 处消失。然而,光谱轨迹实际上与导出只是根据单样本值计算得出, , and 颜色匹配功能。

这意味着您实际上只需要一组数据——查找表, , and 。只需除以每个波长即可计算光谱轨迹x̅(wl) and y̅(wl) by x̅(wl) + y̅(wl) + z̅(wl).

Screenshot of color space plot showing spectral line (Image credit: Apple, screenshot from ColorSync Utility)

有时您会看到这样的图,其中有一条戏剧性的弧线、彩虹色的线在图周围向上猛冲,然后在光谱的远红端下降到 0。这只是沿谱轨迹绘制的函数,按比例缩放,以便y̅ = Y。请注意,这是not可见色域的 3D 形状的轮廓。当以二维绘制时,这样的轮廓将完全位于蓝绿色范围内的光谱轨迹内部。

在 XYZ 空间中描绘可见光谱

最后的问题是:给定这三个颜色匹配函数,我们如何使用它们来决定是否给定{X, Y, Z}是否在人类色彩感知范围内?

有用的事实:光本身是无法产生的。任何真实颜色对于一个或两个其他函数也将具有非零值。我们也知道Y根据定义有一个范围[0, 1],所以我们实际上只是在讨论是否{X, Z}对于给定的情况有效Y.

现在的问题是:什么光谱(为我们的目的而简化:波长 [360nm,830nm],带宽 1nm 的 471 个值的数组,0 或 1),当加权时,总和为Y?

The XYZ空间是可加的,就像 RGB 一样,因此任何非单色光都相当于不同强度的单色颜色的线性组合。换句话说,谱轨迹内的任何点都可以通过精确位于边界上的点的某种组合来创建。如果您采用单色 CIE RGB 原色并将其三色值相加,您会得到白色,并且该白色的光谱将只是三个原色叠加的光谱,每个原色的波长处都有一条细带。

因此,单色的每一种可能的组合都在人类视觉的色域内。然而,存在大量重叠:不同的光谱可以产生相同的感知颜色。这就是所谓的同色异谱。因此,虽然列举所有可能的情况可能不切实际单独地可以产生它们的可感知颜色或光谱,实际上相对容易计算整体造型从一组可简单枚举的频谱中得到空间。

我们所做的就是逐个波长地逐步遍历色域,并且对于给定的波长,我们从该点开始迭代地对更大的光谱切片进行求和,直到达到我们的目标值。Y目标或超出频谱。您可以将其想象为围绕一个圆,从一个起点逐渐绘制更大的弧并绘制所得形状的中心 - 当您到达一个恰好是完整圆的弧时,中心重合,并且您得到白色,但是直到那时,您绘制的点将从边缘向内呈螺旋状。从圆周上的每个点重复此操作,您将得到沿着每条可能的路径呈螺旋状延伸的点,覆盖整个色域。有时,您实际上可以在 3D 色彩空间图中看到这种螺旋上升的效果。

实际上,这采用两个循环的形式,外部循环从 360 到 830,内部循环从 1 到 470。在我的实现中,我对内部循环所做的是保存当前值和最后的求和值,一旦总和超过目标,我就使用差值来计算带的分数,并将外循环的计数器和插值宽度推入数组,然后跳出内循环。对条带进行插值可以极大地平滑曲线,尤其是在船头。

一旦我们有了一组正确亮度的光谱,我们就可以计算它们的X and Z价值观。为此,我有一个更高的命令summation函数,将函数传递给求和和间隔。从那里开始,色度图上的色域形状Y只是由导出形成的路径{x, y}坐标,因为此方法仅枚举色域的表面,而没有内部点。

实际上,这是一个更简单的版本,类似于已接受的答案中提到的库所做的事情:它们通过耗尽连续光谱空间来创建 3D 网格,然后在点之间进行插值以确定确切的颜色是在色域内部还是外部。 。是的,这是一种相当暴力的方法,但它简单、快速且有效,足以用于演示和可视化目的。例如,在浏览器中渲染色度空间整体形状的 20 步等高线图实际上是即时的,并且具有近乎完美的曲线。

有几个地方无法完全消除精度的不足:特别是橙色附近的两个角被剪掉了。这是因为该区域中的部分和线的形状是(1)几乎完全水平和(2)在拐角处具有硬尖点的组合。由于恰好位于尖端的点的值不是很好Y,轮廓的平坦度更成问题,因为它们垂直于尖点的大部分垂直线,因此插值点以适应任何给定的Y将是该地区最悲观的。另一个问题是这些点分布不均匀,集中在非常接近尖点的位置:角点的裁剪对应于对外围点进行插值的情况。所有这些问题都可以在此图中清楚地看到(为了清晰起见,使用 20nm bin 进行渲染,但同样,更高的精度并不能消除问题):

结论

当然,这是一种技术性很强且容易陷入陷阱的问题 (PPP),通常最好外包给优质的第三方库。然而,了解其背后的基本技术和科学可以揭开整个过程的神秘面纱,帮助我们有效地使用这些库,并根据需求的变化调整我们的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何判断 xyY 颜色是否位于 CIE 1931 色域内? 的相关文章

  • “-webkit-text-fill-color”和“颜色”之间的区别?

    我试图理解之间的区别 webkit text fill color只是简单地color 功能上有什么区别吗 据我所知 它们是完全相同的 有什么事情你可以用其中一个来做 而另一个却不能做吗 来自WebKit 博客 http www webki
  • 从壁纸中获取颜色? - 安卓

    如何找到当前壁纸的 平均 颜色并将该颜色设置为我的小部件上的布局 我正在尝试做的一个例子 这是 AccuWeather 上的设置 您可以使用WallpaperManager getWallpaperColors https develope
  • delphi分组框标题颜色变化

    我正在使用 BDS 2006 想知道您是否可以使用项目中存在的 XPmanifest 更改组框和单选按钮组标题的颜色 因为它始终是蓝色 唯一的方法是重写 Paint 方法TGroupBox http docwiki embarcadero
  • 改变 RGB 颜色的色调

    我正在尝试编写一个函数来改变 RGB 颜色的色调 具体来说 我在 iOS 应用程序中使用它 但数学是通用的 下图显示了 R G 和 B 值如何随色调变化 看起来 编写一个函数来改变色调似乎应该是一个相对简单的事情 而不需要对不同的颜色格式进
  • 如何计算图像中的 RGB 或 HSV 通道组合?

    我使用 python opencv 加载形状为 30 100 3 的图像 现在想要按颜色计算所有颜色的频率 我不是指单个通道 而是指通道组合 含义 3 个频道列表 例如 255 0 0 表示红色 255 255 0 表示黄色 100 100
  • 自定义 colorRampPalette 中的颜色条

    我定义了一个 colorRampPalette my colors colorRampPalette c light green yellow orange red 如何为其绘制颜色条 图例 项目 最好仅使用基本包 我正在寻找一个充满该颜色
  • 在两种颜色之间进行插值的最有效方法是什么? (预计有伪代码和按位运算)

    制作一个黑莓应用程序 想要一个渐变类 插入两种颜色的最有效方法 例如速度和电池寿命 是什么 请具体说明 Java of course int c1 0xFFAA0055 color 1 ARGB int c2 0xFF00CCFF colo
  • JPEG 中的颜色配置文件检测

    我希望能够检测 JPEG 中是否存在颜色配置文件 需要明确的是 我对实际进行颜色校正或用它们做任何其他事情不感兴趣 我做了一些调查 但找不到任何明确的信息来源 到目前为止我所知道的是 里面有一个颜色配置信息XMP块 XMP 块位于0xFFE
  • Python Matplotlib 箱线图颜色

    我正在尝试使用 Matplotlib 制作两组箱线图 我希望每组箱线图 以及点和晶须 以不同的颜色填充 所以基本上情节上会有两种颜色 我的代码如下 如果您能帮助将这些图绘制成彩色 那就太好了 d0 and d1是每个数据列表的列表 我想要一
  • Java - toString 到 Color

    我一整天都在努力解决这个问题 基本上我做了一个 for 循环 将条目添加到数组列表中 其中一项是 颜色 变量 我已经用过random nextInt为颜色构造函数的红色 绿色和蓝色部分创建新值 我还设置了一个toString方法 这样我就可
  • 以编程方式生成渐变?

    给定 2 个 RGB 颜色和一个矩形区域 我想在颜色之间生成基本的线性渐变 我进行了快速搜索 我唯一能找到的是这个博客条目 http jtauber com blog 2008 05 18 creating gradients progra
  • 如何在运行时更改按钮的颜色? [复制]

    这个问题在这里已经有答案了 button1 Button root text A1 width 8 grid row 0 column 0 button2 Button root text A2 width 8 grid row 0 col
  • 如何对 HTML 表格进行排序?

    我根本不是 HTML 专家 我对微控制器进行编程并开始切线 我创建了一个 html 文档来显示微控制器寄存器 寄存器地址和寄存器描述的表 我创建了一个包含 3 列和大约 120 行的表 某些寄存器地址是可位寻址的 如果它们的地址以 0 或
  • R 热图中的颜色标签(文本)

    我正在尝试在 R 中制作一个热图 其中标签文本是彩色的 以指示数据点来自哪个组 我目前正在使用 heatmap 2 但很乐意使用另一个包 heatmap 2 data matrix data trace none dendrogram no
  • iOS 11.x 系统颜色

    我读过很多关于如何自定义视图颜色的文章 但没有任何关于检索标准控件 如 iOS 11 x 或以前版本中的导航栏 状态栏和选项卡栏 的系统颜色的文章 UIColor 类有 3 种系统颜色 但它们几乎没有用 例如 调用 UINavigation
  • 如何从色彩校正增益获得色温

    我想找出相机拍摄的照片的色温 final CameraCaptureSession CaptureCallback previewSSession new CameraCaptureSession CaptureCallback Overr
  • 根据值更改 DataGrid 单元格颜色

    我有一个 WPF 数据网格 我想要根据值使用不同的单元格颜色 我的 xaml 上有以下代码 Style TargetType DataGridCell 但不是只选择一个单元格而是选择所有行 我缺少什么 如果您尝试设置DataGrid Cel
  • svg 圆形描边上的多种颜色

    我想创建一个彩虹圈 如下图所示 如何绘制弯曲的多色标渐变 这是我当前的代码
  • 如果图像包含特定颜色则

    是否有一种简单的方法来检查图像是否包含特定的 RGB 颜色 例如 Dim img As Image Image FromFile C image png If img contains color red toRGB then 我认为检查这
  • 如何在 CSS 中使用 3 位颜色代码而不是 6 位颜色代码?

    我最近检查了我的 CSS 文件 并将所有六位十六进制代码转换为简单的三位数代码 例如 我的 FDFEFF被缩短为 FFF 它呈现的颜色与以前几乎完全相同 在我看来 中间部分相当无用 删除它们在我的 CSS 文件中节省了整整 300 个字节

随机推荐

  • 实时显示中表格的垂直溢出应滚动内容

    我正在使用一个Live https rich readthedocs io en stable live html显示内容Table https rich readthedocs io en stable tables html随着时间的推
  • 在 C++ 中获取文本文件的第 n 行

    我需要读取文本文件的第 n 行 例如textfile findline 0 会找到加载的文本文件的第一行ifstream textfile 这可能吗 我不需要将文件的内容放入数组 向量中 我只需将文本文件的特定行分配给变量 特别是 int
  • NSDate/NSDateFormatter - 只存储时间,不存储日期?

    我一直在环顾四周 但没有看到任何可以解决这个问题的东西 所以我希望有人可以帮助我解决这个问题 我想做的是使用 NSDate 变量 在核心数据中 来存储时间 而不是日期和时间 而只是格式为 HH MM SS 的时间 查看 NSDateForm
  • 相对于旋转角度的矩形坐标

    我正在尝试使用 Surfaceview 和画布绘图在 Android 中创建自定义组件 这些组件可以通过触摸来调整大小和旋转 考虑创建一个图像视图 其顶部 右侧 底部和左侧边缘可通过触摸并拖动所需边缘进行缩放 我在用RectF为了保持组件的
  • 创建创建组的 django 数据迁移的正确方法?

    我想创建创建权限和组的数据迁移 以便我的其他开发人员可以运行迁移并完成所有设置 我能够创建迁移并运行它们 但现在运行测试时出现错误 但如果我这样做 from django contrib auth models import Group d
  • C++ vtable 通过虚拟继承进行解析

    我对 C 和虚拟继承很好奇 特别是解决低音类和子类之间 vtable 冲突的方式 我不会假装了解它们如何工作的具体细节 但到目前为止我所看到的是 由于该分辨率 使用虚拟函数会导致一些小的延迟 我的问题是基类是否为空 即它的虚拟函数定义为 v
  • 使用 MPI 和 openMP 并行运行代码时扩展性较差

    我有以下实现 int main int argc char argv int n runs 100 Number of runs int seed 1 int arraySize 400 initialise the random numb
  • 您可以使用 Liquibase 初始化 Spring Batch 元数据表吗?

    目前我有如下设置 在本地运行批处理作业时 该作业将使用以下命令自动创建必要的元数据表 data source财产价值自initialize schema设置为始终 Liquibase 还将运行并创建其变更日志中列出的任何表 这是我的appl
  • SSL 证书验证失败 (_ssl.c:600)

    你知道这个错误吗 urlopen error SSL CERTIFICATE VERIFY FAILED certificate verify failed ssl c 600 This error occurred on my serve
  • 如何将 UIView 渲染到 CGContext 中

    我想将 UIView 渲染到 CGContextRef 中 void methodName CGContextRef ctx UIView someView UIView alloc init MagicalFunction ctx som
  • Spring 3.1:DataSource 未自动连接到 @Configuration 类

    我正在使用 Spring MVC 3 1 0M2 并尝试将我的配置移动到 java beans 但我遇到以下错误 2011 09 14 18 43 42 301 警告 不可用的org springframework beans factor
  • 无需索引即可搜索文件内字符串的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我必须在一个非常旧的遗留应用程序中更改一些连接字符串 而制作它的程序员认为在整个应用程序中到处都贴上连接
  • Laravel,NPM:找不到命令“mix”

    有谁知道为什么它会抛出以下错误以及如何修复它 我还尝试使用重新安装所有软件包npm install几次 在 Windows 上重新安装 NodeJS 不起作用 我正在使用 Laravel 8 22 0 Full Log 0 verbose
  • MediaSession 在锁定屏幕上不显示背景

    我在用MediaSession在 Lollipop 上控制播放 它似乎有效 因为我的 Android Wear 设备允许我控制播放 但是手机锁定屏幕不显示来自METADATA KEY ALBUM ART URIAndroid Wear 上的
  • react-admin 中资源路由的自定义路径

    有没有办法指定资源的自定义路径 例子
  • 你如何在 Symfony2 项目中组织你的包? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 更改表主键 - Crate DB

    我想更改我的表Crate DB更改主键约束以向现有列添加一列 如果我需要删除约束并创建一个新约束 那么 SQL 语法是什么 我一直在尝试传统的 SQL 语法 但它似乎不起作用 alter table my data table drop p
  • 正测试用例和负测试用例

    什么是阳性测试用例 and 负面测试用例 在谷歌上搜索后 我发现了非常令人困惑的答案 谁能用例子解释一下吗 积极的测试用例测试系统是否做了它应该做的事情 示例 提供有效凭据后将允许您登录 负面测试用例测试系统没有做不应该做的事情 示例 当提
  • 用pynsist打包PyGObject Python 3程序?

    我想用 pynsist 打包一个 Python3 PyGObject 程序 该存储库有一个 PyGTK 的示例 它让我认为更改该示例应该不会太难 该示例可以在这里找到 https github com takluyver pynsist t
  • 如何判断 xyY 颜色是否位于 CIE 1931 色域内?

    我正在尝试使用数学绘制 CIE 1931 色域 我采用 xyY 颜色 其中 Y 固定为 1 0 然后将 x 和 y 从 0 0 更改为 1 0 如果我将生成的颜色绘制为图像 即 x y 处的像素是我转换为 RGB 的 xyY 颜色 我会得到