gpt4 book ai didi

algorithm - 将 8 位颜色扩展为 24 位颜色

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:14 25 4
gpt4 key购买 nike

设置

我有几百个 Sparkfun LED 像素(类似于 https://www.sparkfun.com/products/11020)连接到 Arduino Uno,我想使用 Arduino 的内置串行 USB 连接从 PC 控制像素。

像素是可单独寻址的,每个像素都有 24 位用于颜色 (RGB)。因为我希望能够非常快速地改变每个像素的颜色,所以从 pc 到 Arduino 的数据传输必须非常高效(从 Arduino 到像素的数据进一步传输已经非常快)。

问题

我试过直接将所需的 RGB 值直接发送到 Arduino,但这会导致明显的延迟,例如当我想同时打开所有 LED 时。为了尽量减少数据量,我的直截了当的想法是将可用颜色从 24 位减少到 8 位,这对我的应用程序来说绰绰有余。

如果我这样做,我必须将 PC 上的 8 位值扩展到 Arduino 上的 24 位值,以设置像素的实际颜色。此处显而易见的解决方案是一个包含所有可用 8 位值和相应 24 位颜色的调色板。不过,我希望有一个没有调色板的解决方案,主要是出于内存空间的原因。

问题

将 8 位颜色扩展为 24 位颜色的有效方法是什么,最好是能够准确保留颜色信息的方法?这个任务有标准算法吗?

可能的解决方案

我正在考虑一种格式,每个 R 和 B 有 2 位,G 有 3 位。这些值将被打包成一个字节,该字节将被传输到 Arduino,然后使用移位解包并使用map() 函数 (http://arduino.cc/en/Reference/Map)。

对该解决方案有任何想法吗?执行此操作的更好方法是什么?

最佳答案

R2B2G3 会给你很少的颜色(实际上还剩下一位)。我不知道这对你的申请是否足够。您可以使用 dithering technique使 8 位图像看起来更好一些。

或者,如果您有任何偏好的颜色集,您可以将已知的调色板存储在您的设备上,而不要通过网络发送。您还可以为不同的情况存储多个调色板,并指定使用小整数索引的调色板。

除此之外,还可以实现一些简单的压缩算法,例如 RLELZW接收后解压。

还有一些速度非常快且占用空间小的压缩库可供您使用:Snappy , miniLZO .

关于algorithm - 将 8 位颜色扩展为 24 位颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com