在C#中将24位BMP转换为单色位

时间:2012-05-23 20:38:39

标签: c# image-processing

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

1 个答案:

答案 0 :(得分:3)

基本上有两种方法。您可以使用Interop方法读取原始BMP数据并为monchrome位图写入原始BMP数据。有googlable函数可以做到这一点。

或者,更好的是,您可以使用ImageMagickObject使用stoichastic抖动转换图像。

做第二个。

如果你做第一个,你仍然应该使用stocichastic dither,但你必须手动实现它。

编辑:你问“以下RGB值变成了什么”......答案是它们成为你想要的变成了什么。你决定。

显而易见的选择是使用严格的阈值,其中任何小于X的东西变成黑色,任何更多变成白色,或者你可以使用stoichastic抖动。选择两个阈值,黑色阈值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可能更好。

相关问题