制作半色调图像的算法?

Pau*_*cks 11 algorithm image-processing

什么是制作半色调图像的好算法(像这样)?一个快速的谷歌搜索带来了一堆关于这个主题的论文,但很难判断哪些是好的,有效的,等等.有没有最好的选择做这种事情?

NoM*_*ots 16

  • 过滤到希望"点"分隔的分辨率.
  • 获取该区域中像素组的平均强度.
  • 绘制点,使点的表面积等于平均强度从白色到黑色的百分比.

将像素组视为六边形网格.使用圆形函数来确定哪些像素进入组.您可以调整圆的重叠以调整输出的黑/饱和度.这实际上是为高分辨率输出设计的,例如打印.如果您这样做是为了在屏幕上显示为视觉效果,请确保使用抗锯齿圆绘图例程来补偿显示器的低分辨率.(与打印相比,即使HD也不是那么高.)

如果你这样做是因为你喜欢这种效果,那很酷.但是如果你只是想要沉溺于黑白图像,可以考虑使用"Floyd-Steinberg"抖动.它提供高质量的结果,并在整个图像中分配错误. http://en.wikipedia.org/wiki/Floyd-Steinberg_dithering

  • 再看一遍示例图像后:它的所有点都是结构良好的圆,即使在图像的锐利边缘也是如此。因此可以得出结论,它不是用阈值屏幕制作的。阈值屏幕会使点变形以形成笔直的锐利边缘。它实际上是使用 NoMoreZealots 上面建议的算法形成的。PS 在 http://www.cs.mcgill.ca/~cs767/student_pres/eric_ArtisticScreening.pdf 关于“艺术筛选”的有趣相关演示 (2认同)

Liu*_*kys 5

半色调非常有效。

\n\n

单级半色调:\n输入:图像中的像素;包含阈值的预构建“屏幕”。\n运行时:对于每个颜色通道的每个像素,选择一个阈值(阈值数组的索引以数组维度为模)。像素和阈值之间的一次比较确定输出值是打开还是关闭。

\n\n

通过使用多个屏幕,它还可以推广到多级输出。

\n\n

有趣的部分是屏幕的构造(阈值数组)。有许多变化——簇点 (AM)、随机 (FM)、许多变化和混合,包括蓝色噪声和绿色噪声 (AM/FM)。您通常需要为每个颜色通道使用不同的屏幕。传统的簇点屏幕将点排列在矩形网格中,可以通过频率(低频 = 大点)和角度(通常青色为 15\xc2\xb0,洋红色为 75\xc2\xb0,90\xc2\ xb0 代表黄色,45\xc2\xb0 代表黑色)。

\n\n

如果您想进行实验,带有半色调加网方法的 Photoshop 位图(请参阅本教程)有一个内部屏幕生成器,可以将灰度图像筛选为位图,就像您的示例一样。

\n\n

其他人建议的抖动方法涉及更多的每像素计算,并且输出与您的簇点屏蔽半色调示例不同。

\n