【问题标题】:Convert 24 Bit BMP to Monochrome Bit in C#在 C# 中将 24 位 BMP 转换为单色位
【发布时间】:2012-05-24 06:41:47
【问题描述】:

如何获取 24 位 BMP 并将其转换为单色位图?我不担心失去颜色等,我不想使用其他文件格式。

【问题讨论】:

  • 下列rgb值变成什么:(1,1,1)[比黑色多一个],(2097151,2097151,2097151)[白黑一半],(4194302,4194302 ,4194302)[比白少一个]?

标签: c# image-processing


【解决方案1】:

基本上有两种方法。您可以使用 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 可能更好。

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多