【发布时间】:2012-05-24 06:41:47
【问题描述】:
如何获取 24 位 BMP 并将其转换为单色位图?我不担心失去颜色等,我不想使用其他文件格式。
【问题讨论】:
-
下列rgb值变成什么:(1,1,1)[比黑色多一个],(2097151,2097151,2097151)[白黑一半],(4194302,4194302 ,4194302)[比白少一个]?
标签: c# image-processing
如何获取 24 位 BMP 并将其转换为单色位图?我不担心失去颜色等,我不想使用其他文件格式。
【问题讨论】:
标签: c# image-processing
基本上有两种方法。您可以使用 Interop 方法读取原始 BMP 数据并为单色位图写入原始 BMP 数据。有谷歌搜索功能可以做到这一点。
或者,更好的是,您可以使用 ImageMagickObject 使用随机抖动转换图像。
做第二个。
如果你做第一个,你仍然应该使用随机抖动,但你必须手动实现它。
编辑:您问“以下 RGB 值会变成什么”...答案是它们会变成您希望它们变成的样子。你决定。
显而易见的选择是使用严格的阈值,其中小于 X 的任何东西都变成黑色,任何东西都变成白色,或者您可以使用随机抖动。选择两个阈值,黑色阈值bt 和白色阈值wt,这样0 < bt < wt < 255。然后为每个点选择一个介于 0.0 之间的随机数 q。和 1.0。将像素亮度 ((r+g+b)/3) 与 (q*(wt-bt)+bt) 进行比较。如果大于或等于,则为白色,如果小于或等于黑色。这会给你一个很好的抖动灰度。大多数情况下,31 和 224 是 bt 和 wt 的好值,但对于摄影图像,0 和 255 可能更好。
【讨论】: