- 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重新壓縮過,所以與原始資訊會有些微的誤差)
[C/C++] Bitmap Bit Conversion
Subscribe to:
Post Comments (Atom)
Orange - data analysis tool
Installation pip install orange3 Run orange python -m Orange.canvas
-
Socket Connection 節錄自筆者的Network Programming其中的資料,一般在Windows底下如果要寫網路程式多半會想到Microsoft MFC提供的相關API,而Linux底下則多使用Unix Socket來實現,這裡筆者要簡短的介紹如何使用最基礎...
-
system("pause") for linux 在windows底下如果不想藉由開發工具做debug時,筆者我多數使用system("pause")這個指令,但是一到了linux之後,這個指令完全無效,因為linux的termainl底...
-
Calling Gnuplot in C Download: callGnuPlot.c 懶惰是程式設計師的天性,所以才會創造出許多方便的程式,最近一直需要作圖分析,厭倦了Origin重複且繁複的設定,所以決定將要分析的資料使用c做分析後再由gnuplot畫出。 熟悉gnuplo...
No comments:
Post a Comment