标签: cielab

CIELAB颜色空间中的坐标范围是多少?

我有以下代码:

public List<Tuple<double, double, double>> GetNormalizedPixels(Bitmap image)
{
    System.Drawing.Imaging.BitmapData data = image.LockBits(
        new Rectangle(0, 0, image.Width, image.Height),
        System.Drawing.Imaging.ImageLockMode.ReadOnly,
        image.PixelFormat);

    int pixelSize = Image.GetPixelFormatSize(image.PixelFormat) / 8;

    var result = new List<Tuple<double, double, double>>();

    unsafe
    {
        for (int y = 0; y < data.Height; ++y)
        {
            byte* row = (byte*)data.Scan0 + (y * data.Stride);

            for (int x = 0; x < data.Width; ++x)
            {
                Color c = Color.FromArgb(
                    row[x * pixelSize + 3],
                    row[x * pixelSize + 2],
                    row[x * pixelSize + …
Run Code Online (Sandbox Code Playgroud)

rgb colors range cielab

16
推荐指数
2
解决办法
1万
查看次数

Scikit-image 的 CIELAB 颜色范围?

我正在研究 CIELAB 色彩空间,但找不到有关 skimage.color.rgb2lab 生成的每个通道范围的任何信息。

谢谢。

range scikit-image cielab

6
推荐指数
1
解决办法
2271
查看次数

如何在CIE-L*a*b*颜色空间中辨别哪种颜色为"较低"和/或"较高"以进行有序抖动?

我已经实现了几个函数来将sRGB转换为CIE-L*a*b*颜色空间.

现在,我想将它用于抖动,但我不确定如何准确地辨别哪种颜色是"较低"颜色,哪一种颜色是"较高"颜色.

当在一维色彩空间(灰度)中抖动时,事情很容易.当使用误差扩散抖动时,我从我的调色板计算最接近的灰度值,并将误差添加到周围的像素,这取决于我使用的抖动矩阵类型(例如Floyd-Steinberg).由于这是一维的,所以很简单,只有这一个值.但是现在我有了这个三维颜色空间,我应该单独将错误添加到每个坐标吗?
(在这一点上,这是对我有意义的唯一方法.)

当与有序抖动矩阵抖动时,事情变得更加复杂.有序抖动矩阵定义阈值.为此,我需要知道我的托盘的"较低"像素值和"较高"像素值,就我当前要抖动的像素而言.现在,我计算到两个像素的距离,来自抖动矩阵的阈值决定在那些与相邻像素之间的值之后,该像素被抖动到较低像素,或者抖动到较高像素.
(实际的实现当然会比计算,通过使用被明智地在我的托盘选择用于量灰度颜色值的矩阵更优化.此外,像具有均匀间隔的颜色值选择托盘等)
这再次 - 在一维色彩空间中非常容易.但在CIE-L*a*b*中,没有"更高"或"更低"的值.

仅使用亮度来应用阈值矩阵,看起来非常不正确,我的托盘中可能有两种颜色相同的亮度,那么呢?

colors image-processing dithering cielab

6
推荐指数
1
解决办法
207
查看次数

cv.COLOR_BGR2LAB 给出错误的范围

在下面的代码中,我使用一个 4096*4096 像素的 png 图像,其中包括所有可能的 RGB 颜色(不是相同像素的两倍,可以在此处找到http://allrgb.com/starry-night)然后我将 RGB 值转换为LAB 值,我检查每个通道的范围

import cv2 as cv
import numpy as np

im=cv.imread('allrgb.png')


im=im.astype(np.uint8)

colors_lab=cv.cvtColor(im,cv.COLOR_BGR2LAB)

m=np.amin(colors_lab[...,...,0])    
Run Code Online (Sandbox Code Playgroud)

结果如下:

如果原始图像的类型为 uint8,则 R[0,255],G[0,255],B[0,255] 给出 L[0,255],A[42,226],B[20,223]

如果原始图像的类型为 float32,则 R[0,1],G[0,1],B[0,1] 给出 L[0,100],A[-86.1813,98.2351],B[-107.862,94.4758]

无论如何,实验室范围从来都不是预期的范围,这是由开放的简历文档给出的

知道如何解释吗?

python opencv colors spyder cielab

4
推荐指数
1
解决办法
8214
查看次数

Python中的相似颜色检测

给定 RGB 或 Hex 颜色,如何找到与其相似的颜色?相似我的意思是它们应该通过小的值来区分。

python rgb colors scikit-image cielab

4
推荐指数
1
解决办法
4648
查看次数

在 R 中转换 RGB 和 HEX 中的 Lab 颜色值

使用 R 很容易RGBHEX值转换为值:

    x <- c("165 239 210", "111 45 93")
    sapply(strsplit(x, " "), function(x)
    rgb(x[1], x[2], x[3], maxColorValue=255))
    #[1] "#A5EFD2" "#6F2D5D"
Run Code Online (Sandbox Code Playgroud)

如何将 CIELab 值转换为 RGB 和 HEX?

x <- c("20 0 0", "50 0 0")
[...code...]
#[1] "#303030" "#777777"
Run Code Online (Sandbox Code Playgroud)

rgb hex r color-space cielab

3
推荐指数
1
解决办法
928
查看次数

Tensorflow CIELAB 色彩空间边界

我有以下脚本,它获取 RGB 图像并将其转换为 Lab 颜色空间:

\n
import tensorflow as tf\nimport tensorflow_io as tfio\n\nimg = tf.io.read_file(tf.keras.utils.get_file("tf", "https://upload.wikimedia.org/wikipedia/commons/e/e5/TensorFlow_Logo_with_text.png"))\nimg = tf.image.decode_png(img, channels=3)\nimg = tf.image.resize(img, [512, 512])\nlab = tfio.experimental.color.rgb_to_lab(img)\n\nlab = lab.numpy()\nlab.shape  # (512, 512, 3)\n\nlab[:, :, 0].min()  # 3660.3594\nlab[:, :, 0].max()  # 9341.573\n\nlab[:, :, 1].min()  # -49.76082\nlab[:, :, 1].max()  # 4273.1514\n\nlab[:, :, 2].min()  # -1256.8489\nlab[:, :, 2].max()  # 6293.9043\n
Run Code Online (Sandbox Code Playgroud)\n

维基 CIELAB 色彩空间

\n
\n

LAB 空间是三维的,涵盖了人类色彩感知的整个范围或色域。它基于人类视觉的对手色模型,其中红色/绿色形成对手对,蓝色/黄色形成对手对。亮度值 L*,也称为“Lstar”,定义黑色为 0,白色为 100。a* 轴相对于 green\xe2\x80\x93red 对手颜色,负值朝向绿色,正值朝向绿色走向红色。b*轴代表蓝色\xe2\x80\x93黄色对手,负数朝向蓝色,正数朝向黄色。

\n

a* 和 b* 轴是无界的,并且根据参考白色,它们可以轻松超过 \xc2\xb1150 以覆盖人类色域。然而,出于实际原因,软件实现通常会限制这些值。例如,如果使用整数数学,通常会将 a* 和 b* …

python rgb cielab tensorflow tensorflow2.0

3
推荐指数
1
解决办法
1028
查看次数