如何使用 PIL Image.point(table) 方法将阈值应用于 256 灰度图像?
Posted
技术标签:
【中文标题】如何使用 PIL Image.point(table) 方法将阈值应用于 256 灰度图像?【英文标题】:How to I use PIL Image.point(table) method to apply a threshold to a 256 gray image? 【发布时间】:2011-09-23 00:53:23 【问题描述】:我有 8 位灰度 TIFF 图像,我想使用 75% 白色(十进制 190)阈值将其转换为单色。在 Image.convert(mode) 方法部分,PIL 手册说:
“将灰度图像转换为位级图像(模式“1”)时,所有非零值都设置为 255(白色)。要使用其他阈值,请使用点法。”
Image.point(table) 方法表示它通过给定的表映射每个像素。
im.point(table, mode) => 图像 im.point(function, mode) => 图像
"通过表格映射图像,并即时转换。在当前版本的 PIL 中,这只能用于一步将'L'和'P'图像转换为'1',例如阈值图片。”
如何创建与我需要的 75% 阈值对应的表(或函数)?
【问题讨论】:
pajton 的答案是您想要的答案。你使用 190,但我会使用p > 191
(我知道,差别很小 :)。
感谢您的回答,但在实施过程中发生了一件有趣的事情。我的图像实际上以 TIFF、CCITT group4 开头。我认为转换为 8 位灰色会很容易。但是,PIL 报告“解码器组 4 不可用”。是否还有其他支持 group4 的图像库?
【参考方案1】:
我在这个答案“Write TIFF file in python from String”中找到了完整的解决方案。该函数必须包含“和255”
threshold = 191
im = im.point(lambda p: p > threshold and 255)
【讨论】:
【参考方案2】:试试im.point(lambda p: p > 190)
并发布结果。
【讨论】:
正如 tahoar 上面所说,您似乎确实需要 and 255以上是关于如何使用 PIL Image.point(table) 方法将阈值应用于 256 灰度图像?的主要内容,如果未能解决你的问题,请参考以下文章