[C/C++] Bitmap Bit Conversion

  • Bitmap Bit Conversion

    Download:bmpBitConversion.zip

    現在有太多現成軟體跟API可以做影像處理,所以這裡我只簡單的介紹基本的Bitmap 24 bits轉 8 bits。

    一個標準全彩色的圖,每一個pixel佔用3個bytes(也就是24個bits),每一個byte各自代表著Red, Green, Blue,由這三個原色所調配出來16.7百萬色彩(2^24)。今天要將24 bits的Bitmap圖轉成 8 bits,使用最簡易的轉換方式,R跟G各取前3bits在加上B的前2bits合起來就8個bits,簡單的說概念就只是這樣。

    一旦要將圖片的色彩資訊轉成非24bits的bits時,你必須使用調色盤來讓圖片系統去讀取對應的色彩資訊,例如上面的調色盤(8 bits 256色)就是這個範例在使用的。

    Bitmap的檔頭定義你可以參考微軟的Bitmap Info Header,依造不同的系統會有不同的bitmap header,有關OS/2的bitmap的定義可以參考這個網頁OS/2 Bitmap File Format Summary,另外你還可以參考這個部落格作者對bitmap格式詳盡的解說"點陣圖(Bitmap)檔案格式"

    我這個範例程式只是簡單的將24bits圖轉成8bits,其他問題並沒有一律考慮進去,僅供參考。

    範例輸出畫面如下:

    [左圖]是24bits全彩原始圖,[右圖]則是轉換成8bits之後的圖,由於我們的演算犧牲掉多一點的藍色資訊,所以轉換後的圖會偏紅綠多一點。(上面的圖已經由png重新壓縮過,所以與原始資訊會有些微的誤差)

No comments:

Post a Comment

Orange - data analysis tool

Installation pip install orange3 Run orange python -m Orange.canvas