2010-06-26 104 views
0

如何轉換二進制圖像中的位圖圖像?如何使用MFC將24位彩色圖像轉換爲二進制圖像?

+4

位圖已經是二進制圖像。你也可能想指定你使用的平臺/語言,因爲目前你的問題沒有意義。 – 2010-06-26 08:36:37

+0

你真的是指一個位圖,或者你只是指一個BMP或其他圖像?如果是這樣,是彩色還是灰度? – 2010-06-26 08:42:19

+0

我正在使用C++ MFC。我的意思是24位位圖。它在色階中,我可以將它轉換成灰階。 – 2010-06-26 08:52:53

回答

1

到灰度圖像轉換爲二進制圖像是隻應用閾值的最簡單的和最簡單的方法,即

out[y][x] = in[y][x] > threshold ? 1 : 0; 

threshold值可以是固定的,例如128,變量,由用戶提供,或通過首先對圖像進行直方圖自動確定。

有更復雜的方法會產生主觀「更好」的二值圖像,但不知道更多關於您的要求,很難知道您是否需要更先進的東西或簡單的閾值是否足夠好。

+0

我試圖,但它只是打印黑色正方形:(這是我的代碼PLZ檢查此COLORREF RGB = dc.GetPixel(X,Y); \t \t字節R = GetRValue(RGB); \t \t BYTE克= GetGValue(RGB); \t \t BYTE b = GetBValue(RGB); \t \t BYTE BW =(BYTE)(0.3 * R + 0.59 * G + 0.11 * b + 0.5); \t \t BYTE倉= RGB(BW ,bw,bw)> 128?1:0; \t \t dc.SetPixel(x,y,RGB(bin,bin,bin)); – 2010-06-26 10:17:32

+0

@Sweety Khan:可能您的閾值對於此圖像來說太高 - 嘗試較低的價值e如果你的圖像仍然是8位,值爲1和0,那麼它將不可見 - 你需要使用0和255作爲8位圖像。 – 2010-06-26 15:52:22

+0

我使用的彩色圖像是24位位圖。 – 2010-06-26 17:14:40

相關問題