相关疑难解决方法(0)

匹配颜色的最佳算法.

我有一个大约200种RGB格式的数组.我想编写一个采用任何RGB颜色的程序,并尝试匹配最"相似"的数组中的颜色.

我需要一个很好的"相似"定义,它尽可能接近人类的感知.

我还想展示一些有关匹配准确性的信息.例如,黑白:100%,并且对于具有略微不同色调的类似颜色:-4%.

我需要使用神经网络吗?有更简单的选择吗?

language-agnostic algorithm graphics

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

将颜色转换为ConsoleColor?

将a转换System.Drawing.Color为类似的最佳方法是什么System.ConsoleColor

c# console colors system.drawing.color

19
推荐指数
3
解决办法
2万
查看次数

使用N个预定义颜色中的N进行颜色量化

我试图量化和抖动RGB图像有一个奇怪的问题.理想情况下,我应该能够在Java中实现合适的算法或使用Java库,但是对其他语言的实现的引用也可能有用.

以下是输入:

  • image:24位RGB位图
  • palette:使用RGB值定义的颜色列表
  • max_cols:输出图像中使用的最大颜色数

可能重要的是,调色板的大小以及允许的最大颜色数量不一定是2的幂,并且可以大于255.

因此,目标是从所提供的颜色中image选择最多max_cols颜色,palette并仅使用拾取的颜色输出图像,并使用某种误差扩散抖动进行渲染.使用哪种抖动算法并不重要,但它应该是误差扩散变体(例如Floyd-Steinberg)而不是简单的半色调或有序抖动.

性能不是特别重要,预期数据输入的大小相对较小.图像很少会大于500x500像素,提供的调色板可能包含3-400种颜色,颜色数量通常限制在100以下.还可以安全地假设调色板包含多种颜色,覆盖色调,饱和度和亮度的变化.

scolorq使用的调色板选择和抖动将是理想的,但是使用该算法从已定义的调色板而不是任意颜色中选择颜色似乎并不容易.

更确切地说,我遇到的问题是从提供的调色板中选择合适的颜色.假设我例如使用scolorq创建具有N种颜色的调色板,然后将scolorq定义的颜色替换为所提供调色板中最接近的颜色,然后将这些颜色与误差扩散抖动结合使用.这将产生至少类似于输入图像的结果,但是由于所选颜色的不可预测的色调,输出图像可能获得强烈的,不期望的偏色.例如,当使用灰度输入图像和仅具有少量中性灰色调的调色板,但是大范围的棕色调(或更一般地,许多颜色具有相同的色调,低饱和度和亮度变化很大)时,我的颜色选择算法似乎更喜欢这些颜色高于中性灰色,因为棕色色调至少在数学上比灰色更接近所需的颜色.即使我将RGB值转换为HSB并在尝试查找最近的可用颜色时对H,S和B通道使用不同的权重,同样的问题仍然存在.

任何建议如何正确实现,甚至更好的库我可以用来执行任务?

自从Xabster问到,我也可以用这个练习来解释目标,尽管它与如何解决实际问题无关.输出图像的目标是刺绣或挂毯图案.在最简单的情况下,输出图像中的每个像素对应于在某种载体织物上制作的针脚.调色板对应于可用的纱线,通常有几百种颜色.然而,出于实际原因,必须限制实际工作中使用的颜色数量.谷歌搜索gobelin刺绣将举几个例子.

并澄清问题的确切位置......解决方案确实可以分为两个单独的步骤:

  • 选择原始调色板的最佳子集
  • 使用子集渲染输出图像

这里,第一步是实际问题.如果调色板选择正常,我可以简单地使用所选择的颜色,例如Floyd-Steinberg抖动以产生合理的结果(这实现起来相当简单).

如果我正确理解了scolorq的实现,scolorq结合了这两个步骤,使用调色板选择中的抖动算法知识来创建更好的结果.这当然是一个首选的解决方案,但scolorq中使用的算法稍微超出了我的数学知识.

java image-processing color-palette

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

将图像中的每个像素设置为颜色列表中最接近的匹配

在 C# 中,如何将图像中每个像素的颜色设置为与 RGB 格式(无 alpha)颜色列表最接近的颜色匹配,该格式可以是任意长度?

它基本上是在创建一个自定义的 BitmapPalette,但由于你不能这样做(相信我,我已经为此尝试了一切可能),我需要一个替代方案。

有谁知道这样做的方法?

c# image pixel bitmap

5
推荐指数
1
解决办法
1926
查看次数

如果我有调色板,找到最接近的网络安全颜色

如何获取 r、g、b 值并将它们与网络安全调色板进行比较,以找到 r、g、b 值的最佳匹配?

有一个: 在数组中找到与另一种颜色最接近的颜色的最佳算法是什么?

但我不认为这是我需要的。我只需要将 r、g、b 与网络安全颜色进行比较,然后找出网络安全颜色是否是最佳选择。

编辑1:删除

Edit2:这是我目前所拥有的。

local r, g, b = HSV2RGB(h, s, v)
local dither = copy(WEB_SAFE)
local lmod
for i, v in ipairs(dither) do
        local r2, g2, b2 = Color2RGBA(v)
        local hh, ss, vv = RGB2HSV(r2, g2, b2)
        local a = hh - h
        local b = ss - s
        local c = vv - v
        local mod = a*a + b*b + c*c
        if not lmod or mod < lmod then …
Run Code Online (Sandbox Code Playgroud)

lua colors color-palette web-safe-colors

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