问题标签 [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 回答
737 浏览

image-processing - 抖动(图像)- 它到底是如何工作的?

我认为抖动图像以下列方式工作是否正确:

我有一个由单个像素 (x) 组成的 2x2 图像块:

我希望通过以下值抖动图像:

因此,2x2 块是否会显示为:

这个对吗?如果是这样,我是否正确说明了抖动的像素布局?

还是我完全错了?如果是这样,有人可以启发我(最好举个例子)?

我知道我选择使用的样本量很小,但这仅用于说明目的。

非常感谢。

0 投票
3 回答
657 浏览

android - 自定义渐变actionbar背景,显示不好,需要dither

我使用线性背景(xml 形状)作为 android 4.0 中的操作栏背景。它显示不好,看起来带状。

如何使其渲染平滑?

0 投票
1 回答
1514 浏览

android - 彩带安卓解决方案

Android Activity 或 OpenGL 中带状图像的可能解决方案是什么。

看看下面的答案。

希望能帮助到你

0 投票
4 回答
13112 浏览

c++ - 什么是一个好的、优化的 C/C++ 算法,用于将 24 位位图转换为带抖动的 16 位?

我一直在寻找一种优化(即快速)算法,该算法使用抖动将 24 位 RGB 位图转换为 16 位 (RGB565) 位图。我正在寻找 C/C++ 中的一些东西,我可以在其中实际控制如何应用抖动。GDI+ 似乎提供了一些方法,但我不知道它们是否抖动。而且,如果他们做抖动,他们使用什么机制(弗洛伊德-斯坦伯格?)

有没有人有一个很好的使用抖动进行位图颜色深度转换的例子?

0 投票
2 回答
7844 浏览

javascript - JavaScript 中的单色抖动(Bayer、Atkinson、Floyd–Steinberg)

我正在使用 HTML5 中的网络摄像头过滤器。让阿特金森抖动非常适合那种老式的 Mac 感觉。

meemoo cam 抖动
直播| 代码

现在我正在尝试为 1989 年的 Gameboy 感觉制作一个拜耳订购的抖动选项。

阅读了算法,但我无法将此伪代码转换为 JavaScript:

在 AS3、PHP 或 JS 中是否有任何示例?你能解释一下发生了threshold_map_4x4[x mod 4][y mod 4]什么吗?


游戏男孩风格 gif(使用Meemoo Gameboy GIFerizer 制作

弄清楚了。在维基百科中它说“例如,在单色渲染中,如果像素的值(缩放到 0-9 范围内)小于矩阵相应单元格中的数字,则将该像素绘制为黑色,否则,将其绘制为白色。” 在 js 中,通过平均当前像素(0-255)和地图的值(15-240)并将其与阈值(通常为 129)进行比较,我得到了很好的结果:

这是我使用不同算法的整个单色函数:

我很感激优化提示。

0 投票
1 回答
1373 浏览

image-processing - 实现有序抖动(24 位 RGB 到每通道 3 位 RGB)

我正在编写一个图像编辑程序,我需要将任意 24 位 RGB 图像(我已经使用 CoreGraphics 等加载它)抖动到具有 3 位颜色通道的图像,然后显示它的功能。我已经设置了我的矩阵等,但是除了应用于图像的简单模式之外,我没有从下面的代码中得到任何结果:

请注意,find_closest_palette_colour除了立即返回原始颜色进行测试之外,它不会做任何事情。

我正在尝试实现来自维基百科的示例伪代码,但我现在并没有真正从中得到任何东西。

有人知道如何解决这个问题吗?

0 投票
1 回答
8042 浏览

python - PIL - 需要抖动,但限制调色板会导致问题

我是 Python 新手,并尝试使用 PIL 执行我需要的 Arduino 项目的解析任务。这个问题与Image.convert()调色板、抖动等的方法和选项有关。

我有一些硬件能够一次仅显示 16 种颜色的图像(但它们可以指定为 RGB 三元组)。因此,我想自动执行获取任意真彩色 PNG 图像的任务,选择“最佳”16 色调色板来表示它,并将图像转换为仅包含 16 种颜色的调色板。

我想使用抖动。问题是,这种image.convert()方法似乎有点古怪。它的论点没有完全记录(Image.convert() 的 PIL 文档),所以我不知道这是我的错还是该方法有问题。

我的代码的简单版本如下:

根据我所做的一些搜索(例如:如何使用 PIL 减少调色板),我认为这种方法应该可以满足我的要求,但没有运气。它使图像抖动,但会产生超过 16 种颜色的图像。

只是为了确保,我删除了“抖动”参数。相同的输出。

我重新添加了“dither=1”参数并加入了 Image.ADAPTIVE 参数(如上面的链接所示),只是为了看看发生了什么。这导致图像包含 16 种颜色,但没有抖动。

我在这里错过了什么吗?PIL 有问题吗?我想出的解决方案是执行 2 个步骤,但这似乎草率且不必要。我想弄清楚如何正确地做到这一点:-) 为了完整起见,这是我的代码版本,它产生了正确的结果——但它以一种草率的方式做到了。(第一步会产生 >16 色的抖动图像,而第二步会产生仅包含 16 色的图像。)

谢谢!

0 投票
0 回答
1306 浏览

javascript - 订购抖动到 256 种颜色

我每次都尝试将HTML5 画布中的抖动图像向下或接近 256 色。我有抖动算法工作,您可以在我的测试页面上看到(检查浏览器控制台的颜色计数)。

但是我无法理解如何为不同的图像选择或生成最佳深度和阈值图,结果根据原始图像有多少颜色而有很大差异。

到目前为止,我有 2x2,3x3,4x4,8x8 地图的这些功能之一,

0 投票
1 回答
996 浏览

java - 如何控制 ErrorDiffusionDescriptor 的颜色模型的像素大小?

我正在尝试将直接颜色模型图像转换为双色调索引图像(每像素 1 位)并将索引图像保存为 BMP。

Java Advanced Imaging API Home Page所述:

编码输出的位深度由源图像的位深度决定。

源码BMPImageWriter看,这个的机制就是ColorModel#getPixelSize()的返回值。

使用来自 Wikimedia Commons 的图像的缩小副本,我首先执行颜色量化以获得颜色查找表,然后进行误差扩散以应用 Floyd–Steinberg 抖动:

问题是,image.getColorModel().getPixelSize()返回 8,所以图像被保存为 8bpp 位图:

样本图像上颜色量化和误差扩散的结果。

此图像的大小为 167 KiB。

我在某处看到将颜色模型传递给错误扩散的一种方法是设置 JAI.KEY_IMAGE_LAYOUT 渲染提示:

image.getColorModel().getPixelSize()现在返回 1,但结果图像发生了显着变化:

通过 ImageLayout 的样本图像上的颜色量化和误差扩散的结果。

但是,此图像的大小为 21 KiB,大约是我使用 MS Paint 将示例图像转换为单色位图时的大小。因此,看起来 JAIBMPImageWriter使用了正确的编码,但如果您仔细查看第二张图像,相邻的像素列相距 8 个像素。事实上,你可以看到第一张图像,只有第一张图像的每一列像素被扩展为 8 列像素。

这是 JAI 中的错误吗?我可以做些什么来将这些 8 宽的像素列折叠为单列像素吗?

0 投票
1 回答
941 浏览

algorithm - 如何在 24 bpp 显示器上最好地显示 30+ bpp 图形?

在常规 24 bpp 显示器上显示每通道超过 8 位的最忠实图形的最佳方式是什么?