当前位置:  开发笔记 > 编程语言 > 正文

如何将位图缩小为一组已知的RGB颜色

如何解决《如何将位图缩小为一组已知的RGB颜色》经验,为你挑选了1个好方法。

对于一个业余爱好项目,我将构建一个程序,当给定图像位图时,将创建一个十字绣图案作为PDF.我将在Mac上使用Cocoa/Objective C.

源位图通常是24bpp图像,但是在数百万种可用颜色中,只有少数存在作为十字绣线程.线程有各种类型.DMC是最广泛使用的,几乎整个范围都可以从各种网站获得RGB值.例如,这是一个.

DMC#  Name               R   G   B
----- ------------------ --- --- ---
blanc White              255 255 255
208   Lavender - vy dk   148  91 128
209   Lavender - dk      206 148 186
210   Lavender - md      236 207 225
211   Lavender - lt      243 218 228
      ...etc...

正如我所看到的,我的第一个问题是从RGB的起点开始,从图像中的像素中选择DMC集中可用的最近颜色.在数学上找到最接近的DMC颜色的最佳方法是什么,并确保它也适合作为颜色?

虽然我将使用Cocoa,但您可以在发布的任何代码中使用伪代码(甚至是Java!).



1> bzlm..:

使用LAB颜色空间并找到最近的欧氏距离的颜色.在RGB颜色空间中执行此操作将产生反直觉的结果.(或使用HSL颜色空间.)

因此,只需遍历每个像素,找到所选颜色空间内距离最近的颜色.注意,对于某些颜色空间(例如那些采用色调的颜色空间),必须循环计算距离.

(大多数颜色都围绕实际选择调色板,但在你的情况下已经处理过,所以你不能使用更流行的量化技术.)

另外,看看这个问题.

要在Cocoa中查找HSB色调,看起来您可以使用NSColor.h中声明的getHue方法.

但是,如果您只是使用这种技术将图像转换为十字绣设计,实际拼接它将非常困难.它将充满单像素色域,这有点破坏了十字绣的目的.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有