标签: dithering

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

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

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

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

我会更乐意发现:

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

首选C语言库.

c image-processing dithering quantization

5
推荐指数
1
解决办法
5606
查看次数

图像在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应用程序)中存在内存泄漏.

wpf .net-4.0 antialiasing dithering

5
推荐指数
1
解决办法
1442
查看次数

拜耳订购抖动

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

for (int y = 0; x < image.Height; y++)
{  
    for (int x = 0; x < image.Width; x++)
    {
        Color color = image.GetPixel(x, y);  
        color.R = color.R + bayer8x8[x % 8, y % 8];  
        color.G = color.G + bayer8x8[x % 8, y % 8];  
        color.B = color.B + bayer8x8[x % 8, y % 8];  
        image.SetPixel(x, y, GetClosestColor(color, bitdepth);  
    }  
}
Run Code Online (Sandbox Code Playgroud)

但结果太明亮所以我决定再次查看维基页面然后我看到阈值地图右边有一个"1/65"让我想到两个错误扩散(是的,我知道,怪异的呵呵) ?)并将我得到的值除以bayer8x8[x % 8, y % 8]65,然后将该值与颜色通道相乘,但要么结果是混乱的,要么仍然太亮(我记得它),但结果与我在别处看到的一样,要么太亮,太高的对比度或太乱,我没有找到任何真正有用的搜索互联网,所以有谁知道我怎么能让这个拜耳抖动正常工作?

在此先感谢Cookies

c# image-processing dithering

4
推荐指数
1
解决办法
1万
查看次数

Floyd Steinberg 在 GraphicsMagic 或 ImageMagic 中抖动

我在使用 GraphicsMagic 将图像转换为 1 位抖动图像时遇到问题。转换后的图像将用作热敏打印机的输入。

我正在使用以下命令:

gm convert input.jpg -resize 384 -monochrome -dither out.bmp
Run Code Online (Sandbox Code Playgroud)

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

有没有人有实现相同结果的提示?(我已经尝试过其他 GraphicsMagic 选项,但无济于事)

原来的

原来的

图形魔法

通用汽车

GIMP

GIMP

image dithering graphicsmagick

4
推荐指数
1
解决办法
1722
查看次数

Android视图抖动

正如您从下面的屏幕截图中看到的那样,"标题栏"将这些丑陋的条带线跨越区域,文本可以扩展整个屏幕宽度.它在真实设备上更加引人注目.

有什么方法可以解决这个问题吗?

活动

user-interface android dithering

3
推荐指数
1
解决办法
4189
查看次数

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

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

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

我想用抖动.问题是,这种image.convert()方法看起来有点时髦.它的参数没有完整记录(Image.convert()的PIL文档)所以我不知道这是我的错还是该方法是错误的.

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

import Image
MyImageTrueColor = Image.new('RGB',100,100) # or whatever dimension...

# I paste some images from several other PNG files in using MyImageTrueColor.paste()

MyImageDithered = MyImageTrueColor.convert(mode='P',
    colors=16,
    dither=1
    )
Run Code Online (Sandbox Code Playgroud)

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

为了确保,我删除了"抖动"参数.相同的输出.

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

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

MyImage_intermediate = MyImageTrueColor.convert(mode='P',
    colors=16
    )
MyImageDithered = MyImage_intermediate.convert(mode='P',
    colors=16,
    dither=1,
    palette=Image.ADAPTIVE
    )
Run Code Online (Sandbox Code Playgroud)

谢谢!

python image dithering python-imaging-library

3
推荐指数
1
解决办法
5057
查看次数

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

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

algorithm graphics image-processing dithering

1
推荐指数
1
解决办法
903
查看次数