數字圖像處理—學習總結


VC++數字圖像處理 楊淑瀅

本文對該老師的代碼進行總結,代碼小白順便補充一下自己比較困惑的知識點,方便后續復習。

  • 對於BMP格式的圖像結構分為以下四個部分:
位圖文件頭結構BITMAPFILEHEADER
位圖信息頭結構BITMAPINFOHEADER
位圖顏色表RGBQUAD
位圖像素數據部分

 

  • 對於位圖的圖像分為四類:
  1. 單色圖像:有兩個值:0,255其中0表示黑,255表示白(也可以進行歸一化處理為0和1)。
  2. 灰度圖像:帶有顏色表,相當於索引表。RGB的分量值相同。
  3. 偽彩色圖像:RGB的分量不完全相同,帶有顏色表,相當於索引,整個圖像256種顏色。
  4. 24位真彩色圖像:沒有調色表,RGB三分量各占8位。
  • 對於C++中結構體結構的介紹:

            在c++中如果用typedef的話:

    struct   Student   
    {   
    int   a;   
    }stu1;//stu1是一個變量  

 
    typedef   struct   Student2   
    {   
    int   a;   
    }stu2;//stu2是一個結構體類型=struct Student  

             即在C++中用typedef相當於重命名操作,相當於對struct后面的變量重新命名。

  •   對於變量中的類型別名問題—引入頭文件“windowsX.h"

             windef.h——基本型態定義 
             winbase.h——Kernel函數 
             wingdi.h——圖形設備接口函數 
             winuser.h——使用者接口函數

            其中這里主要使用的是第一個應用:基本形態定義,這里面定義了宏,方便后面的使用。

         

1 typedef unsigned long       DWORD; 
2 typedef int                 BOOL;
3 typedef unsigned char       BYTE; 
4 typedef unsigned short      WORD;
5 typedef float               FLOAT;

於是可以將BMP圖像的格式用代碼的方式展現出來

位圖文件頭:

1 typedef struct tagBITMAPFILEHEADER
2 {
3     WORD bftype;//表示2個字節,16位的短整數,用來判斷是否為位圖文件類型
4     DWORD bfsize;//表示4個字節,位圖文件的大小。
5     WORD  bfReaserved1;//位圖文件的保留字,必須為0.
6     WORD  bfReaserved2;//位圖文件的保留字,必須為0
7     DWORD bfOffBits;//表示數據的起始位置     
8 } BITMAPFILEHEADER; 

位圖信息頭:

typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;//本結構所占用字節數
LONG biWidth;//位圖的寬度,以像素為單位
LONG biHeight;//位圖的高度,以像素為單位
WORD biPlanes;//目標設備的級別,必須為1
WORD biBitCount;//每個像素所需的位數,1、4、8、24
DWORD biCompression;/*位圖壓縮類型,必須為0(不壓縮)、1(BI_RLE8壓縮類型)、2(BI_RLE4壓縮類型)之一*/
DWORD biSizeImage;//位圖的大小,以字節為單位
LONG biXPelsPerMeter;//位圖水平分辨率,每米像素數
LONG biYPelsPerMeter;//位圖垂直分辨率,每米像素數
DWORD biClrUsed;//位圖實際使用的顏色表的顏色數
DWORD biClrImportant;//位圖顯示過程中重要的顏色數
}BITMAPINFOHEADER;

顏色表:

typedef struct tagRGBQUAD
{
BYTE rgbBlue;//藍色的亮度(0~255)
BYTE rgbGreen;//綠色
BYTE rgbRed;//紅色
BYTE rgbReserved;//保留,必須為0
}RGBQUAD;

把結構體構造結束之后,來構造BMP文件的類:

 

 

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM