问题标签 [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 投票
2 回答
1471 浏览

opengl-es - 抖动 gouraud 着色的顶点色多边形以去除条带

我在低分辨率嵌入式设备上使用OpenGL ES

我已经使用顶点着色将垂直颜色渐变应用到用作渲染场景背景的大多边形上。我可以在颜色渐变中看到清晰可见的条带伪影。

我的主要经验是使用软件渲染器。使用软件渲染器,通常会抖动掉马赫带和其他带状伪影。我们经常在渲染帧的量化步骤中执行此操作,其中浮点、高精度的颜色表示被转换为较低精度的输出(通常带有整数分量)。我们通过随机向上或向下舍入最终整数分量来实现抖动,以在图像中插入最微小的噪声,从而欺骗眼睛看到颜色之间的连续和平滑混合。

我的问题是我是否可以使用 OpenGL ES 来实现这一点?这种抖动是OpenGL管道的一部分,还是我应该跳过顶点着色并将渐变渲染到纹理并对其应用一些噪声?

0 投票
1 回答
948 浏览

.net - How to avoid dithering with Graphics.DrawImage?

I want to draw one picture over another and dump it to HttpResponse. My code looks like this:

If I change last line to

tempImage.Save(Response.OutputStream, ImageFormat.Jpeg);

it fixes the problem. But I have to have png as a result. Can I somehow keep palette from original file? Original file is gif, so it should be possible to have gif as a result without loosing any colors I guess.

0 投票
5 回答
6528 浏览

c - C中最快的抖动/半色调库

我正在开发一个定制的瘦客户端服务器,为它的客户端提供渲染的网页。服务器运行在多核 Linux 机器上,Webkit 提供 html 渲染引擎。

唯一的问题是客户端显示受限于 4 位(16 色)灰度调色板。我目前正在使用 LibGraphicsMagick 来抖动图像(RGB->4 位灰度),这显然是服务器性能的瓶颈。分析表明,超过 70% 的时间用于运行 GraphicsMagick 抖动函数。

我已经探索了 stackoverflow 和 Interwebs 以获得良好的高性能解决方案,但似乎没有人对各种图像处理库和抖动解决方案进行任何基准测试。

我会更高兴地发现:

  1. 关于抖动/半色调/将 RGB 图像量化为 4 位灰度的最高性能库是什么。
  2. 是否有任何您可以指出我的特定抖动库或任何公共域代码片段?
  3. 在高性能方面,您更喜欢哪些库来处理图形?

首选 C 语言库。

0 投票
1 回答
1233 浏览

python - 使用 PIL 和 truetype 字体在文本中抖动

考虑以下代码: from PIL import Image, ImageDraw, ImageFont

这是输入和输出文件 这是输入

输入 http://img16.imageshack.us/img16/8229/73936270.png

这是输出

输出 http://img94.imageshack.us/img94/531/outj.png

如您所见,输出图像在文本周围包含大量红色噪点。我怎样才能消除这种抖动?

0 投票
2 回答
5290 浏览

android - Android 视图抖动

正如您从下面的屏幕截图中看到的那样,“标题栏”正在将这些丑陋的条带线穿过区域,文本延伸到屏幕的整个宽度。在真实设备上更加明显。

有没有办法解决这个问题?

活动

0 投票
1 回答
49045 浏览

android - 如何在 Android 的画布上绘制平滑/抖动渐变

几个答案提到使用 GradientDrawable.setDither(true) 在 Android 中绘制平滑渐变。这对我的代码没有影响。知道我必须改变什么才能在动态壁纸中获得好看的渐变吗?

0 投票
2 回答
1474 浏览

wpf - WPF v4 中的图像大小调整别名,但不在 v3.5 下

我正在将 WPF 用于图像大小调整管道,该管道在 .NET v3.5 下运行良好。我刚刚将项目升级到 v4.0,现在我所有调整大小的图像都严重混叠。图像管道代码均未更改。

  1. 在 v3.5 和 v4.0 之间是否更改了默认 WPF 设置?

  2. 如何控制 WPF 中调整大小的位图图像的抖动?

我正在使用BitmapImage, DrawingVisual, DrawingContext, RenderTargetBitmap, BitmapEncoder,BitmapFrame但我没有看到任何与抖动相关的属性。GDI+ 有很多设置,所以我猜我遗漏了一些东西。

更新:似乎我见过的所有解决方案都假设一个 Window 对象或 XAML 环境。这在没有 UI 的 Windows 服务中运行。我需要一种以编程方式影响此设置的方法。

我专门从 GDI+ 切换到 WPF,因为 GDI+ 在服务和 Web 应用程序等长时间运行的进程中存在内存泄漏。

0 投票
2 回答
6027 浏览

image-processing - 像素着色器的 Floyd-Steinberg 抖动替代方案

我知道Floyd-Steinberg 抖动算法不能用像素着色器实现,因为该算法是严格顺序的。但也许存在一些高度并行的抖动算法,其视觉输出类似于 Floyd-Steinberg 算法?

所以问题是 - 哪些抖动算法适合在像素着色器(最好是 GLSL)上实现并且输出质量(非常)类似于 Floyd-Steinberg 抖动?

顺便提一句。允许多遍算法,直到不超过 2 遍并且这些遍之间的 CPU 开销很小。

有任何想法吗 ?

编辑:
我需要从 24 位颜色抖动到 21 位颜色。
(也就是说 - 我需要从 8 位/通道转换为 7 位/通道。)

编辑 2 也许我没有很好地解释问题。所以我会尝试扩展一下确切的问题。问题是这样的 - 考虑我们有这张图片:
替代文字
我们有上面的图片,但是用抖动算法处理:
替代文字
现在这是测试你的抖动是否适合我的程序:
1. 将这些图片加载到 Photoshop 中作为一张图片和 2层。
2.选择图层混合模式为“差异”。
3. 对图层执行“合并可见”操作,只得到一个图层。
4. 执行操作 => Image/Adjustments/Equalize

之后你必须得到这样的图像:
替代文字
如您所见 - 单调红色的中间像素根本没有抖动。左右图像区域的抖动也有点不同。尝试用这种行为重建抖动算法。

0 投票
3 回答
12031 浏览

c# - 拜耳有序抖动

我正在更新我几个月前制作的 Paint.net 插件,它被称为模拟颜色深度,它将图像中的颜色数量减少到选择的 BPP,并且很长一段时间它都包含抖动但从未订购抖动我认为加入它会是一个很好的补充,所以我开始在互联网上搜索有用的东西,我最终在这个 wiki 页面上http://en.wikipedia.org/wiki/Ordered_dithering,并试图按照伪代码中写的做

但结果太亮了,所以我决定再次检查 wiki 页面,然后我看到阈值图右侧有一个“1/65”,这让我想到了两个错误扩散(是的,我知道,很奇怪吧?) 并将我得到的值除以bayer8x8[x % 8, y % 8]65,然后将该值与颜色通道相乘,但结果要么很乱,要么仍然太亮(我记得),但结果与我在其他地方看到的完全不同,要么太亮,太高对比度或太乱,我没有找到任何真正有用的搜索互联网,所以有谁知道我怎样才能让这个拜耳抖动正常工作?

提前致谢, 饼干

0 投票
9 回答
993 浏览

c - 2 色抖动

我有一个包含0s 和1s 混合物的数组。我想重新排列数组的内容,以使数组中的偶数位置包含尽可能多的0位置,奇数位置包含1尽可能多的位置,但要遵守0s 和1s 的数量不变的约束。这意味着如果0s 的数量超过 s 的数量,1反之亦然,那么在重新排列的数组的末尾会有一个块,由 all- 0s 或 all- 1s 组成。我怎样才能一次完成,就地修改数组?

例如: