问题标签 [dithering]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
587 浏览

image - c# 接受一定量抖动的图像抖动例程?

我一直在使用 aforge 的 floyed-steinberg 抖动方法,但我注意到您无法指定抖动量。我希望能够指定 0 到 100 之间的数量。所以如果我要求 50,它会抖动 100 的一半。或者,如果我指定 0,那么生成的图像将由纯色组成每种颜色之间都有硬边……或者换句话说,没有抖动。我正在为诸如 floyed-steinberg 或 Jarvis、Judice、Ninke dithering 之类的例程寻找 c# 代码,它接受一个数量。有人知道吗?

0 投票
1 回答
51 浏览

android - Farmville 2 灯塔灯上的像素网格(三星注 2)

我在三星 Note 2 上玩了 Farmville 2。我注意到每个 alpha 灯上都有一个清晰的网格。不过,这不会发生在 iPad Retina 上。

我想知道这是什么原因。是GPU的原因,还是开发者为了节省设备性能而做的?谁能解释一下?

如果是为了优化,我也想研究它以应用到我的游戏中。我用 Unity 3D 制作我的游戏。请照亮我!

谢谢大家!广

直接从三星 Note 2 截取的屏幕截图,图像主机压缩了一点。希望你还能看到网格。

0 投票
1 回答
2068 浏览

image - 弗洛伊德斯坦伯格在 GraphicsMagic 或 ImageMagic 中的抖动

我无法使用 GraphicsMagic 将图像转换为 1 位抖动图像。转换后的图像将用作热敏打印机的输入。

我正在使用以下命令:

结果是 1 位的抖动图像,但质量不同,例如来自 GIMP 的抖动图像,GIMP(或来自其他程序的结果图像)图像看起来稍微好一些。

有没有人有提示可以达到相同的结果?(我尝试过其他 GraphicsMagic 选项,但无济于事)

原来的

原来的

GraphicsMagick

通用汽车

GIMP

GIMP

0 投票
1 回答
1867 浏览

colors - 在 24 位 RGB 和 8 位颜色之间转换

我正在尝试将 24 位(8R、8G、8B)转换为 8 位(RRRGGGBB)颜色

我了解缩小颜色字节并将它们加在一起(移位后)的基本概念。即给定 RGB(255,254,253) 我会取 255/32*32 + 254/32*4 + 253/64 这会给我 111,111,11b(白色)。

这对于带有大量红色和绿色的图片非常有效,但是一旦蓝色开始出现,事情就会变得非常糟糕。蓝色开始看起来比以前更蓝绿色或紫色。

我不是要进行抖动,而是要在 RGB 和 8bit 之间找到更好的映射。

我考虑将 RGB 转换为 HSV,然后转换为 8 位,但我也不确定如何从 HSV 转换为 8 位,H 字节不对应 RRRGGGBB。即使是这样,我也无法黑白分明。有没有办法对 H、S、V 字节进行加权(就像我对 RGB 所做的那样)以获得我想要的?还是我应该坚持在 RGB 直接到 8 位之间找到更好的映射

0 投票
1 回答
889 浏览

c# - 如何实现 24 位到 3 位有序抖动算法?

我正在尝试实现拜耳有序抖动矩阵算法以将 24 位彩色图像转换为 3 位图像。我已经阅读了维基百科页面,以及有关该主题的几个教科书部分,并且有点困惑。这是我到目前为止所拥有的:

但是,我没有实现 GetClosestColor 的方法......我该怎么做?

另外,我没有定义bayer4x4矩阵,我相信它应该如下所示:

0 投票
0 回答
196 浏览

glsl - 如何编写具有等级值的抖动透明度着色器?

我需要编写一个使用抖动进行透明的 glsl 着色器。
我也应该能够给出一个等级的透明度。
所以 0.1 非常透明,0.9 几乎不透明。
但我不知道我会怎么写。
我知道如何编写一个 0.5 透明度抖动着色器,但我不知道如何编写一个接受一个参数来告诉它必须有多透明的参数。

0 投票
0 回答
671 浏览

pdf - 将 pdf 转换为 256 色 BMP 时更改 Ghostscript 抖动方法

我正在尝试使用 ghostscript 从 pdf 文件生成一些高质量的 8bpp bmp。为此,我使用 bmp256 设备。

到目前为止,一切正常并且速度非常快,但是 ghostscript 使用半色调来抖动图像,导致在放大图片时出现一些难看的图案:

在此处输入图像描述

我已经设法通过使用 -dDITHERPPI 标志来减小它们的大小,但这仍然不够令人满意。这些太规则并且太容易被发现,即使是很小的变焦。

我不想使用半色调,而是想使用一些误差扩散算法,比如 Floyd-Steinberg 算法。我发现这个算法是在其他设备上实现的,但它们都是与打印机相关的设备,所以我不能真正使用它们。

另外,在将 PDF 转换为 8bpp BMP 时我需要尽可能快,并且输出的图片非常大:因此首先将其转换为 24 或 32bpp BMP,以便稍后使用其他工具进行抖动。

我已经下载了源代码来尝试自己实现它,但是这个项目真的很大很复杂,我不知道如何以及从哪里开始。

有什么方法可以使用一些带有 ghostscript 的错误扩散算法而无需自己实现?

如果没有,是否有扩展 ghostscript 的首选方法?有什么指导方针吗?

0 投票
1 回答
1518 浏览

c++ - 有序颜色抖动

我目前正在做一个项目,我必须使用 4x4 有序抖动矩阵将 24bpp 图片减少为 3bpp 图像。但是,在进行了抖动处理之后,我的图像只显示了大约 1/3 的路径。有谁知道我做错了什么?

资源:

我之前的图像是 512x512 图像,但是我的输出图像抖动只是图像的一部分(512x170)

0 投票
1 回答
1352 浏览

graphics - 如何使用抖动显示只有黑白像素的灰色图像?

我有一个 256 灰度级的图像,我想绘制这要归功于只有 #000(黑色)和 #FFF(白色)像素(仅此而已)。

一种方法是使用抖动:https ://upload.wikimedia.org/wikipedia/commons/6/6d/Dithering_example_red_blue.png

在这样的算法中,一种模糊是通过增加一个区域中的像素数量(对我来说是白色和黑色)来实现的。

但是我不知道如何实现它:如何确定代表所需灰度级别的像素数?您能否编写这样一个算法(例如使用伪代码,或 Java、Scala、C、C++)?

0 投票
3 回答
954 浏览

c# - 我的抖动算法超级慢

所以这里有一些背景。我正在开发这款名为 ShiftOS 的游戏,它发生在一个操作系统中,该操作系统最初是 80 年代磨坊操作系统的基本运行,没有太多功能。

我正在尝试添加一个机制,用户必须从二进制(2 色)颜色深度开始,并且只能在屏幕上显示黑白。然后他们必须将颜色深度从 1 位升级到 2 位,再从 4 位升级到 24 位。这是一个非常简洁的机制,但在实践中似乎非常困难。

当然,这个时候的旧系统至少尝试过让图像看起来不错,但当然它们受到工程师提供的调色板的限制,所以他们不得不抖动图像以排列像素,使其看起来像图像使用了更多颜色,而实际上它只能使用 2。

所以我查找了一些不错的抖动算法并开始学习 Floyd-Steinberg 算法,并很快将其移植到C#System.Drawing.

这是我使用的代码。

请注意,这sourceImage通过参数传递给函数的。

此代码运行良好,但问题是,抖动发生在单独的线程上,以最大程度地减少游戏中的减速/滞后,并且在发生抖动时,会显示操作系统的常规 24 位颜色/图像。如果抖动不需要这么长时间,这会很好。

但是我注意到该代码在此代码中的算法非常慢,并且根据我正在抖动的图像的大小,抖动过程可能需要超过一分钟!

我已经应用了我能想到的所有优化——例如在与游戏线程不同的线程中运行事物,并在线程完成时调用赋予函数的动作,但这只会节省一点时间(如果有的话)。

所以我想知道是否有任何进一步的优化可以使这个操作更快,如果可能的话总共几秒钟。我还想指出,当抖动操作发生时,我有明显的系统滞后——鼠标有时甚至会抖动和跳跃。对于那些必须拥有 60FPS PC 大师赛的家伙来说,这并不酷。