- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在pgm中有图像
使用此功能后:
void convertWithDithering(array_type& pixelgray)
{
int oldpixel;
int newpixel;
int quant_error;
for (int y = 0; y< HEIGHT-1; y++){
for (int x = 1; x<WIDTH-1; x++){
oldpixel = pixelgray[x][y];
newpixel = (oldpixel > 128) ? 0 : 1;
pixelgray[x][y] = newpixel;
quant_error = oldpixel - newpixel;
pixelgray[x+1][y] = pixelgray[x+1][y] + 7/16 * quant_error;
pixelgray[x-1][y+1] = pixelgray[x-1][y+1] + 3/16 * quant_error;
pixelgray[x ][y+1]=pixelgray[x ][y+1]+ 5/16 * quant_error;
pixelgray[x+1][y+1] = pixelgray[x+1][y+1]+ 1/16 * quant_error;
}
}
}
我有这个
我只想得到黑白颜色相同的图像
最佳答案
上次我对一个PGM文件有类似的吐槽,是因为我把数据保存在了一个由fopen(filename,"w");
打开的文件中
该文件有很多 \r\n
行结尾 (os: windows),而它只需要 \n
。也许你的问题是这样的。以二进制格式保存文件,用
fopen(文件名,"wb");
编辑:除了微笑之外,您对 Floyd–Steinberg 抖动的实现是不正确的。
首先,您的错误传播应该是 XXX * quant_error/16
而不是 XXX/16 * quant_error
(它将始终等于 0)。
然后,您混合了两个颜色空间(0/1 和 0->255)。正确的处理方法是始终使用 0->255 空间,方法是将测试行更改为
newpixel = (oldpixel > 128) ? 255:0;
(注意 255 : 0
的顺序很重要,如果你让 0 : 255
,算法将不起作用)
在函数结束时,你的数组将是满的或0或255。如果你愿意,你可以再迭代一次将其转换为0-1,但我认为记录一次更容易你的 pbm 文件。
关于c++ - Floyd Steinberg 抖动灰色(pgm ascii)到黑白(pbm ascii),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068490/
我正在尝试实现 floyd 算法,但它似乎不起作用。 我使用了维基百科的伪代码算法没有弗洛伊德 http://img15.hostingpics.net/pics/298623Capturedcran
我知道Floyd–Steinberg dithering算法不能用像素着色器实现,因为该算法是严格顺序的。但是也许存在一些高度并行的抖动算法,其视觉输出类似于 Floyd-Steinberg 算法?
我想知道除了Floyd-Steinberg抖动之外,还有什么著名的抖动算法存在吗? 最佳答案 还有一些其他的误差扩散算法,Wikipedia page on dithering给出了一个很好的列表和图
我一直在互联网上搜索以获取此信息,但没有成功。 我正在使用 C++ 中的 Steinberg 的 VST SDK。我正在开发一个效果器插件,我需要知道声音文件的长度,即其中的帧数。所以我从 proce
我正在尝试编译一个简单的程序,该程序已包含在 Steinberg VST SDK 中。 我遇到的问题是我的编译器无法找到文件,除非它有绝对路径。出于某种原因,代码的编写方式使我的编译器找不到文件需要它
我正在使用从 stackoverflow 获得的一段代码,用于 floyd steinberg 抖动算法。 它如下。但它没有按预期正确抖动图像。是否有人对此有正确的实现,或者有人可以更正以下代码。实际
我正在制作一个程序,我想在其中拍摄图像并将其调色板减少到 60 种颜色的预设调色板,然后添加抖动效果。这似乎涉及两件事: 一种颜色距离算法,它遍历每个像素,获取其颜色,然后将其更改为调色板中最接近它的
我正在玩 HTML5 中的网络摄像头过滤器。得到一个Atkinson dither非常适合那种老式 Mac 的感觉。 Live | Code 现在我正在尝试为 1989 Gameboy 的感觉制作拜耳
就我的研究而言,我发现 GNU C 默认使用 cdecl 进行函数调用。 VST SDK 在使用 GNU C 编译时将调用明确定义为 cdecl,并吐出以下错误: again.cpp:27:15: w
我在使用 GraphicsMagic 将图像转换为 1 位抖动图像时遇到问题。转换后的图像将用作热敏打印机的输入。 我正在使用以下命令: gm convert input.jpg -resize 38
我在pgm中有图像 使用此功能后: void convertWithDithering(array_type& pixelgray) { int oldpixel; int newpi
如何使用 Floyd–Steinberg dithering 将 24 位 PNG 转换为 3 位 PNG ? java.awt.image.BufferedImage 应该用于获取和设置 RGB 值
我正在开发一个基于桌面的 PHP 应用程序,我们需要捕捉一个人的图像并使用 Zebra GC420t 打印机将其打印在标签上预期的图像应如下图所示。 当我尝试打印时,它会给出如下图所示的输出。 我正在
我是一名优秀的程序员,十分优秀!