计算机图形:以编程方式创建双色调(或分色)

时间:2010-03-14 14:01:41

标签: graphics printing

有一种叫做“双色调”的特殊图像只有两个通道。它主要用于想要获得更高质量的复制品 - 印刷机有两种颜色(黑色,灰色)。

我的问题是,我有正常的灰度图像,如何将其转换为双色调?

我知道我可以在Photoshop中调整曲线 - 这不是我要问的,而不是如何以编程方式进行?也许有一个图书馆可以做到这一点?那么“网点补偿”怎么样? “总墨水覆盖率”?

或者,创建“分离”的算法是什么?

2 个答案:

答案 0 :(得分:2)

您可以以编程方式执行此操作。像这样的颜色操作非常简单,但是以编程方式执行它仍然需要调整。

假设您拥有图像的RGB颜色模型,则每个通道(分别为红色,绿色,蓝色)都有一个值。在灰度图像(一个通道:灰色)中,所有这些值(红色,绿色和蓝色)都相等,因此基本上只有一个通道(灰色)。

你的目标是创造两个新的通道(双色调),颜色A和颜色B.(A,B,分别)我认为你需要的效果是A和B是否存在于某个地点。因此,每个位置的可能值是A,AB,B和无。

您必须迭代图像的位置(可能是像素),并将原始颜色(从RGB或G转换为双色调)。

有几种翻译技巧,但让我们保持简单:图片只有一个频道G,我们将应用一个阈值过滤器:

threshold = 0.25
IF G < (0.5 + threshold) THEN A
IF G >= (0.5 - threshold) THEN B

例如,使用G:

的这些值
G         AB
0.0       A
0.1       A
0.2       A
0.3       AB
0.4       AB
0.5       AB
0.6       AB
0.7       AB
0.8        B
0.9        B
1.0        B

现在你只使用双音中的四个可能值中的三个。以下将做得更好:

thresholdA = 0.25
thresholdB = 0.5
IF G >= thresholdA && G < (1 - thresholdA) THEN A
IF G >= thresholdB                         THEN B

G         AB
0.0       
0.1       
0.2       A
0.3       A
0.4       A
0.5       AB
0.6       AB
0.7       AB
0.8        B
0.9        B
1.0        B

您必须调整阈值。如果您在GUI中完成调整,那么您已经创建了自己的(次要)Photoshop: - )

答案 1 :(得分:0)

Photoshop的双色调不是很复杂。 Photoshop双色调只是灰度通道的复制和输出两种墨水。每种墨水颜色都可以有自己的曲线,可以调整每个墨水通道的输出。唯一棘手的部分是表示曲线(Photoshop将Bézier曲线映射到定义曲线的几个数据点)。

有关您在问题中提出的其他术语的帮助,您应该调查颜色管理库(Mac OS X上的ColorSync,Windows Color System或LittleCMS)。

如果您想要更深入了解,请从image processingcolor management上的维基百科条目开始。

回应评论的进一步信息:

CMS可以帮助进行网点增益补偿,并将图像从其他颜色空间(如RGB)转换为灰度。

Photoshop制作双色调的方法不是将图像分成两部分,而只是在文件中包含两次打印一个灰度图像的指令,根据需要调整值。如果要创建可供其他程序(如InDesign)使用的图像文件来创建适合商业打印机的文档,则需要创建EPS文件。请参阅Adobe网站上有关EPS和PostScript的文档。

逐像素调整是通过为每种墨水创建查找表来完成的。表格包含每个灰度值的条目。对于8位灰度图像,查找表将包含256个值。通过求解每种墨水的曲线来填充查找表。然后运行原始灰度数据,将每个值替换为查找表中该位置的任何值。例如,假设您的第一条曲线将102的值放在插槽127中,而您的第二条曲线则将值153放入插槽127.然后,对于原始图像中的每个像素,您的第一个颜色将以40%打印,即50%,并且对于原始图像中的每个像素,您的第二种颜色将以60%打印,即50%。