问题标签 [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.
gradient - Direct3D11 像素着色器插值
我正在尝试在两种颜色之间创建一个简单的过渡。所以一个四边形的渲染,顶部边缘颜色为#2c2b35,底部颜色为#1a191f。当我通过简单的像素着色器将颜色应用于顶点并对其进行插值时,我得到了色带的效果,我想知道是否有一个选项可以在没有一些高级像素着色器抖动技术的情况下消除这种效果。
我附上了一张渲染图片,左侧部分在我的应用程序中渲染,右侧部分在 Photoshop 中渲染,并选中了“抖动”选项。
提前致谢。
avr - 从 ISR 中更改 PWM 占空比
我在实现抖动功能以升级我的 ATmega88 的 PWM 分辨率和它控制的 LED 时几乎没有问题。我的想法是,使用“一种”浮点数,由两个 uint8_t 作为“小数位”组成,例如“255.31”将由“0xff.0x1f”(BYTE_HIGH.BYTE_LOW)表示。
现在我希望 OCR 中的值在 BYTE_HIGH 和 BYTE_HIGH+1 之间抖动,为此我需要第二个计数器(除了定时器本身)来生成覆盖的占空比(定时器的占空比必须在 (int) 之后递增) 255-BYTE_LOW 周期)。但是在 main() 中管理这些东西会导致闪烁,因此我想在称为计时器溢出的 ISR 中执行此操作。
我的 avr 以 20 MHz 运行,为了获得足够的抖动频率,我不能使用高于 8 的预分频器。你认为,我可能过于频繁地调用 ISR 吗?但是,ISR 中没有太多代码。
我能想到的另一个问题是,ISR 必须编写可能被计时器同时读取的 OCR,但是这种“线程保存”不是因为计时器从不写入 OCR 吗?
我没有适当地发现任何与我的问题有关的东西,所以我希望得到一些提示。请参阅下面的代码
这在理论上应该有效,但不幸的是它在实际中不起作用。ISR 被调用,但未按预期运行。我是否在 ISR 中正确调用了变量?如果有人能看到我犯的一个基本错误,我会很高兴,特别是因为我没有任何用于调试的串行接口......
编辑:同时我发现,ISR 被卡住了,会阻塞在我的 main 函数中执行的任何代码......
java - BufferedImage 在使用自定义 ColorModel 减少颜色时禁用抖动?
我正在使用自定义调色板(换句话说,自定义颜色模型)创建图像:
请注意,“cm”变量是我的自定义颜色模型,带有 256 种颜色的调色板。
“orgImg”变量是全彩色(24 大 argb)图像。
上面的代码使用颜色模型中定义的调色板生成具有 256 种颜色的“orgImg”副本。
这很好用。
但是java使用抖动来减少颜色。是否可以禁用这种抖动?
请注意,我需要使用自己的调色板,以便最终图像匹配特定的调色板。
ios - 作为自定义 CIKernel 的卡住抖动不起作用
我正在尝试将 Stucky 抖动(误差扩散)实现为 CIKernel,但我有点迷茫。我找不到调试过滤器的方法(我是 CIKernel 的新手)。到目前为止,这是我提出的,但内核无法编译,另外,我想知道如何将传播的错误存储到目标像素。欢迎帮助。是否有工具/方法来跟踪或调试代码?
[更新代码以删除语法错误]:
我的主要问题是如何通过从误差扩散中累积部分值来编写输出像素缓冲区?
python-3.4 - Python中的狄特林
我正在使用 pygame 和 numpy 在 python 3.4 中为 Dithering 编写一个简单的脚本。我已经在处理过程中毫无问题地做到了,但我用 python 得到了不好的结果。
这是我在 Python 中的脚本,这是我得到的结果
我的 python 脚本有什么问题?
fragment-shader - 金属片段着色器——颜色值是否已经量化为 8 位?
我正在尝试在我的 Metal 片段着色器中实现一些简单的抖动,以摆脱渐变中的条带。它不起作用,我想知道这是否只是一个错误,或者传递给着色器的颜色值是否已经量化(如果这是正确的词)到 8 位。换句话说,片段着色器处理浮点值,但这些值是否已经处于 8 位 rgb 空间强加的离散级别?
这是我的着色器和我用于抖动的矩阵。我基于以下两篇文章/帖子:
http://www.anisopteragames.com/how-to-fix-color-banding-with-dithering/
我通过将矩阵更改为一系列交替的 0,63 对来测试这一点,并且近距离观察它确实每隔一个像素产生微弱的垂直条纹。但据我所知,整体乐队保持不变。这让我认为,当它到达片段着色器时,条带已经“内置”了。所以对它应用抖动并没有真正的帮助,因为损害已经造成。我希望这不是真的……这是我天真的假设,因为颜色是浮点数,它们将具有完整的浮点精度,并且在片段着色器之后会发生到 8 位的转换。
unity3d - 移动设备上 Unity 2D 游戏中的抖动伪影
抖动可用于向用户显示真正不存在的颜色。它还有助于减少色带。
我在我的 Android 移动设备上截取了我的统一游戏的屏幕截图,在 Photoshop 中放大了 PNG。我观察到整个图像(甚至是纯色区域)都覆盖着微妙的像素图案。Unity Play-mode 没有这个效果,只有在移动设备上。
A - 实际大小的游戏屏幕的一部分
B - 放大
C - 对比度增加以显示微妙的图案
Unity 在其后处理堆栈中提供后处理抖动。但这不是它。我不认为 Unity 使用它来模仿颜色,因为帧是在 24 位颜色空间中渲染的(据我所知)。我查了一些其他的商业手机游戏,他们在任何地方都没有这种模式。
我想知道这个像素图案的目的是什么。谢谢你。
javascript - 使用 PHP 或 Javascript 为 Zebra 打印机将 RGB 图像转换为 Floyd-Steinberg 图像
我正在开发一个基于桌面的PHP
应用程序,我们需要捕获一个人的图像并使用 Zebra GC420t 打印机将其打印在标签上。预期的图像应如下图所示。
当我尝试打印时,它会给出如下图所示的输出。
我正在使用以下代码使用代码将图像转换为
rgb
图像dithering
php
我正在使用以下javascript
代码连接我的应用程序并将参数传递给打印机
在下面的函数中,我发送打印所需的参数
在上述函数中,图像数据存储在^FO250,70^XG R:SAMPLE.GRF,1,1^FS
当我将数据发送到打印机时,它会正确打印所有文本,但会打印第二张图像所示的图像,但要打印的预期图像如第一张图像所示。如果我硬编码在标签网站中完成的图像转换,我可以打印第一张图像。如果我实时单击图像并打印它会给出第二张图像。