问题标签 [pbmplus]

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 回答
1576 浏览

image-processing - 将JPEG转换为非抖动位图时如何设置阈值?

我正在使用我的数码相机作为快速而肮脏的扫描仪。分辨率其实在300dpi左右,还是比较合理的。但是我的相机会产生彩色图像,我想将其简化为位图。我不想抖动图像;我正在寻找如果我将文档通过黑白扫描仪会得到什么。将 JPEG 转换为灰度图像既简单又标准,使用djpeg -grayscale. 困难的部分是决定哪些灰色像素应该是白色的,哪些应该是黑色的。

pbmplus 工具提供

但杀手锏就是那个值$v。好的值似乎在 0.3 到 0.6 的任何范围内,手动反复试验和错误正在杀死我。(对于那些更熟悉 ImageMagick 的人来说$v,手头是-black-threshold参数的值。)

我想我可以构建一个 GUI 来帮助我更快地手动找到阈值,但我真正想要的是设置阈值以将灰度图像转换为干净的位图的算法。理想情况下,这只需检查灰度图像的结构即可!

0 投票
1 回答
3680 浏览

image-processing - 如何缩放图像中的像素以调整亮度?

我有一张照片的灰度图像。我已经确定图像的某些部分照明不足,并且亮度 Y = 0.8 的像素实际上应该调整为 90% 灰度,即,该像素的亮度应为 0.9。我的问题是如何缩放附近的其他像素? 我很确定将所有亮度乘以 9/8 是错误的,因为我隐约记得听说为了看起来均匀,缩放必须是非线性的。但是我很难找到一个能让我取得进步的方程式。(当然,我实际上正在编写一个程序来对大量照片进行这种调整。)

我的像素来源是 pbmplus PGM 格式,手册页上说:

每个灰度值都是一个与像素强度成比例的数字,由 CIE Rec. 调整。709 伽玛传递函数。(该传递函数指定 2.2 的伽马数,并且具有小强度的线性部分)。因此,零值是黑色的。Maxval 的值表示 CIE D65 白色和图像中最强烈的值以及该图像可能与之比较的任何其他图像。

如果我能更好地理解这一点,我可能会更好地了解如何进行。

我发现了一个有关制作亮度均匀图像的相关问题。


感谢 Shmoopty 让我走上正轨。我接受了你的回答,然后添加了一些信息。

0 投票
1 回答
5164 浏览

python - 创建二进制 PBM/PGM/PPM

我试图了解如何创建二进制 PBM/PGM/PPM 文件。据我所知,每种格式有两种类型:普通格式和原始格式。例如,黑色 PBM 5x5 的结构如下所示:

如您所见,它很简单:白色为 0,黑色为 1。但是,PBM 有原始版本,如下所示:

我该怎么做?PBM 格式说明 说:

A raster of Height rows, in order from top to bottom. Each row is Width bits, packed 8 to a byte, with don't care bits to fill out the last byte in the row. Each bit represents a pixel: 1 is black, 0 is white. The order of the pixels is left to right. The order of their storage within each file byte is most significant bit to least significant bit. The order of the file bytes is from the beginning of the file toward the end of the file. A row of an image is horizontal. A column is vertical. The pixels in the image are square and contiguous.

我不明白我需要做什么;我怀疑我可能需要使用structor array.array,但我不确定。我需要你的帮助; 你能用 Python 举例说明如何创建这样的文件吗?

我需要良好的速度,因为我需要处理更大的图像(例如 2000x5000)。但问题是我需要使用纯 Python,没有ctypes和库。请你帮我,并举一个小例子如何创建二进制 PBM 文件?

如果您能告诉我有关二进制 PGM 和 PPM 处理的信息,那将更加令人惊奇。

谢谢!

0 投票
1 回答
211 浏览

ghostscript - .pbm 文件图像渲染 - [vhold] 扫描线摆动?

我正在尝试编写一个程序来读取 pbm、pgm 或 ppm 文件,并使用image运算符将​​图像渲染到 postscript 输出设备。只是测试P4输入(二进制可移植(1 位)位图)路径,但我的输出很糟糕。

我很确定问题是我计算了一行的字节宽度和预期的填充:

但这似乎是对的,当我走过它时。对于这个 215 位宽的位图,我得到每行 27 个字节。

编辑:删除“垫”印章有帮助。也许我需要添加额外的填充?

输出中演示了该问题:

改善但仍然很糟糕

这个答案末尾的类似但更简单的程序可以正常工作。

好的图片