问题标签 [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.
image-processing - 抖动(图像)- 它到底是如何工作的?
我认为抖动图像以下列方式工作是否正确:
我有一个由单个像素 (x) 组成的 2x2 图像块:
我希望通过以下值抖动图像:
因此,2x2 块是否会显示为:
这个对吗?如果是这样,我是否正确说明了抖动的像素布局?
还是我完全错了?如果是这样,有人可以启发我(最好举个例子)?
我知道我选择使用的样本量很小,但这仅用于说明目的。
非常感谢。
android - 自定义渐变actionbar背景,显示不好,需要dither
我使用线性背景(xml 形状)作为 android 4.0 中的操作栏背景。它显示不好,看起来带状。
如何使其渲染平滑?
android - 彩带安卓解决方案
Android Activity 或 OpenGL 中带状图像的可能解决方案是什么。
看看下面的答案。
希望能帮助到你
c++ - 什么是一个好的、优化的 C/C++ 算法,用于将 24 位位图转换为带抖动的 16 位?
我一直在寻找一种优化(即快速)算法,该算法使用抖动将 24 位 RGB 位图转换为 16 位 (RGB565) 位图。我正在寻找 C/C++ 中的一些东西,我可以在其中实际控制如何应用抖动。GDI+ 似乎提供了一些方法,但我不知道它们是否抖动。而且,如果他们做抖动,他们使用什么机制(弗洛伊德-斯坦伯格?)
有没有人有一个很好的使用抖动进行位图颜色深度转换的例子?
javascript - JavaScript 中的单色抖动(Bayer、Atkinson、Floyd–Steinberg)
我正在使用 HTML5 中的网络摄像头过滤器。让阿特金森抖动非常适合那种老式的 Mac 感觉。
现在我正在尝试为 1989 年的 Gameboy 感觉制作一个拜耳订购的抖动选项。
我阅读了算法,但我无法将此伪代码转换为 JavaScript:
在 AS3、PHP 或 JS 中是否有任何示例?你能解释一下发生了threshold_map_4x4[x mod 4][y mod 4]
什么吗?
(使用Meemoo Gameboy GIFerizer 制作)
弄清楚了。在维基百科中它说“例如,在单色渲染中,如果像素的值(缩放到 0-9 范围内)小于矩阵相应单元格中的数字,则将该像素绘制为黑色,否则,将其绘制为白色。” 在 js 中,通过平均当前像素(0-255)和地图的值(15-240)并将其与阈值(通常为 129)进行比较,我得到了很好的结果:
这是我使用不同算法的整个单色函数:
我很感激优化提示。
image-processing - 实现有序抖动(24 位 RGB 到每通道 3 位 RGB)
我正在编写一个图像编辑程序,我需要将任意 24 位 RGB 图像(我已经使用 CoreGraphics 等加载它)抖动到具有 3 位颜色通道的图像,然后显示它的功能。我已经设置了我的矩阵等,但是除了应用于图像的简单模式之外,我没有从下面的代码中得到任何结果:
请注意,find_closest_palette_colour
除了立即返回原始颜色进行测试之外,它不会做任何事情。
我正在尝试实现来自维基百科的示例伪代码,但我现在并没有真正从中得到任何东西。
有人知道如何解决这个问题吗?
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 色的图像。)
谢谢!
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,但结果图像发生了显着变化:
但是,此图像的大小为 21 KiB,大约是我使用 MS Paint 将示例图像转换为单色位图时的大小。因此,看起来 JAIBMPImageWriter
使用了正确的编码,但如果您仔细查看第二张图像,相邻的像素列相距 8 个像素。事实上,你可以看到第一张图像,只有第一张图像的每一列像素被扩展为 8 列像素。
这是 JAI 中的错误吗?我可以做些什么来将这些 8 宽的像素列折叠为单列像素吗?
algorithm - 如何在 24 bpp 显示器上最好地显示 30+ bpp 图形?
在常规 24 bpp 显示器上显示每通道超过 8 位的最忠实图形的最佳方式是什么?