2012-05-23 110 views
0

我該如何處理24位BMP並將其轉換爲單色位圖?我不關心丟失顏色等,我不想使用其他文件格式。將24位BMP轉換爲C中的單色位#

+0

下面的rgb值會變成什麼:(1,1,1)[一個比黑色多],(2097151,2097151,2097151)[白色和黑色之間的一半],(4194302,4194302,4194302)[一個小於白色]? –

回答

3

基本上有兩種方法。您可以使用Interop方法讀取原始BMP數據併爲monchrome位圖寫入原始BMP數據。有googlable功能,這將做到這一點。

或者,更好的是,您可以使用ImageMagickObject使用stoichastic抖動來轉換圖像。

做第二個。

如果你做的第一個,你仍然應該使用stocichastic抖動,但你將不得不手動實現它。

編輯:您問「以下RGB值會變成什麼」......答案是它們變成了您希望它們變成的東西。你決定。

明顯的選擇是使用嚴格的閾值,其中小於X的任何東西變成黑色,任何東西變得更白,或者可以使用stoichastic抖動。選擇兩個閾值,黑色閾值bt和白色閾值wt,如0 < bt < wt < 255。然後爲每個點選擇一個0.033之間的隨機數q。和1.0。將像素亮度((r+g+b)/3)與(q*(wt-bt)+bt)進行比較。如果它大於或等於,則它是白色的,如果更少,則是黑色的。這會給你一個不錯的灰度。對於大多數目的來說,31和224對於bt和wt是很好的值,但對於攝影圖像0和255可能會更好。