BMP檔案處理
Dec 28, 2020
RGB to grayscale的處理流程
檔案格式
簡單來說長這樣
參考資料
點陣圖(Bitmap)檔案格式 : 架構清楚,表格與註解很詳細。
[筆記] BMP點陣圖格式說明,附實例圖解 : 有圖片比較好理解。
解讀方式
在Info header中的Bits Per Pixel (0x1C的位置),決定了點陣圖資料的解讀方式,若為24Bit則在點陣圖資料為3Byte一組 (也就是3個Byte代表一個Pixel); 若為32Bit則在點陣圖資料為4Byte一組。
讀取檔案
Matlab
imread萬用
IMG = imread(FILE_NAME);
C
分別建立4個struct放header跟data那些東西,然後還不知道要怎麼把檔案讀進來。
先丟幾個參考連結
BMP image format: 底下有source code連結
C/C++ — Loading Bitmap Files (Manually)
BMP檔案格式淺談: 底下也有source code
色彩轉換
Matlab
GRAY = rgb2gray(IMG);
C
在Bitmap Array中,根據Bit Per Pixel將每組pixel依序乘上轉換係數。做完之後再修改BMP Info Header當中對應的參數,應該就這樣。
吧。
Grayscale = R*0.2989 + G*0.5870 + B*0.1140