圖像識別技術和圖像處理技術參考模板_第1頁
圖像識別技術和圖像處理技術參考模板_第2頁
圖像識別技術和圖像處理技術參考模板_第3頁
圖像識別技術和圖像處理技術參考模板_第4頁
圖像識別技術和圖像處理技術參考模板_第5頁
已閱讀5頁,還剩53頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘 要本文對圖形圖像處理系統的發展現狀和所采用的主要技術進行了詳細分析,確定了相應的結構和主要功能,以及實際開發中所采取的技術。系統在Windows XP平臺下實現,本課題是采用Visual C+作為編程工具,采用面向對象的程序設計技術實現一個圖形繪制和圖像處理的應用軟件。主要工作分為三類,包括基本圖形繪制與編輯、簡單的圖像處理、圖像格式的轉換。圖形方面主要是設計圖形基類,以及繼承圖形基類的具體圖形類。通過對獨立功能的封裝,可以為今后需要的圖形圖像的應用奠定基礎。系統的優點有:充分體現了面向對象的設計思想,充分運用了C+的特性,比如封裝、多態、繼承。程序結構清晰,可讀性好,程序中做了充分的注釋

2、。圖形繪制部分避免了傳統的switch case的繁瑣結構。容易擴充和移植。最后,對系統進行測試表明,系統功能達到了預期的要求,界面友好,操作簡便,運行也較穩定,是一個完成基本功能的圖形圖像系統。總體上,本文介紹了系統開發設計的全過程和設計過程中部分代碼,也對系統測試的過程進行簡單描述,同時對系統中采用的關鍵技術也作了一些必要的說明,對圖像變換的基本原理,圖像處理的基本原理和各種圖像格式做了詳細的闡述。關鍵詞:圖形;圖像;多態;繼承I / 58AbstractThis article has carried on the detailed analysis about graph image

3、processing system development and using of the key technology,identify the corresponding structure and central function, as well as the system adopts technology in the actual development. The system realizes under the Windows XP platform, the topic use Visual C+ as a programming tool, use object-ori

4、ented programming techniques to achieve a graphic and image processing software. Major work is divided into three categories, basic drawing and editing graphics, simple image processing, and image format conversion. The graph aspect is designs the graph base class , as well as inherits the graph bas

5、e classs specific graph class. Through independent functions encapsulation, for the futures needs of the graphic images lays the foundation. The system merit has: the object-oriented designs thought application of the c+ properties, for example encapsulation, polymorphism, and inheritance. Programs

6、structure is clear, good readability, codes has the full annotation in the program. The graph plans part has avoided complicated structure of the traditional switch case. Easy expansion and transplantation. Finally, systems testing shows, systems functions achieve the expected demand, friendly inter

7、face, and the operation is simple, also a much stable operation, it has basic functions of the graphic image system.As a whole, this paper describes the system design process and part of the process of designing code, also carries on the simple description to the system test process, meanwhile it ma

8、de some necessary explanations about key technology in the system, it made the detailed description to image transform of the basic principle, the image processing basic principle and various image formats.Keyword: graph; image; polymorphism; inheritance目 錄摘 要IAbstractII第1章 引 言11.1 課題的研究目的和意義11.2 國內

9、外發展現狀11.3 研究方法與手段21.3.1 運行環境21.3.2 開發環境2第2章 圖形圖像處理系統相關技術綜述32.1 圖形設計基礎32.1.1 Visual C+技術概要32.1.2 圖形設備接口GDI32.1.3 設備環境DC32.1.4 CDC類的派生類的功能及其之間的區別42.1.5 與繪圖相關的GDI對象類52.1.6 坐標變換和映射模式62.2 圖像設計基礎72.2.1 數字圖像的基本概念72.2.2 調色板82.2.3 調色板的概念9第3章 圖形圖像處理系統的總體設計103.1 需求分析103.2 圖形圖像處理系統目標設計103.3 圖形圖像處理系統功能描述103.4 界面

10、設計123.4.1 主界面設計123.4.2菜單設計143.4.3 工具欄設計143.4.4 屬性框設計15第4章 圖形圖像處理系統圖像部分設計164.1 與設備無關位圖(DIB)164.1.1 DIB位圖的結構164.1.2 定義DIB處理函數集184.1.3 CDib類的設計目標204.2 圖像變換204.2.1 圖像變換的理論基礎204.2.2 旋轉214.2.3 鏡像224.3 圖像處理的基本方法224.4 圖像格式254.4.1 PCX格式255.4.2 GIF格式264.4.3 JPEG28第5章 圖形圖像處理系統圖形部分設計295.1 圖形類的設計295.1.1 圖形系統的層次結

11、構295.1.3 類層次性的特點295.1.4 圖形系統類層次的設計原則305.1.5 基類CEntity305.1.6 命令基類CCommand315.2 派生類設計325.2.1 派生類Cline325.2.2 派生類Cline的具體實現325.2.3 創建直線命令類CCreateLine335.3 位置類Position335.3.1 構造位置類的原因345.3.2 位置類Position的實現345.4 圖元拾取355.4.1 直線的拾取365.4.2 矩形的拾取375.4.3 圓的拾取375.4.4 圖元拾取的準確度和可靠性375.5 圖元的編輯375.5.1 圖元編輯函數385.5

12、.2 實現圖元的交互編輯395.6 序列化和反序列化405.7系統測試41第6章 結論43參考文獻44致 謝45第1章 引 言1.1 課題的研究目的和意義本課題的目的是采用Visual C+作為編程工具,實現基本圖形元素如直線、圓、橢圓等的繪制,對圖形元素的基本操作如填充、擦除等,也包括對常用圖像格式的處理,如圖像的顯示、圖像格式的轉換等1。應該說,目前已有種類繁多的圖形圖像處理專用軟件工具,如AutoCAD、和PhotoShop等,利用這些圖形圖像處理軟件可以實現同樣的功能。即便如此,研究這些圖形圖像處理技術仍具有一定使用價值。首先,利用一個設計良好的簡單的小圖形處理程序可以用于教學演示的目

13、的,展示基本的圖形圖像處理技術和面向對象技術在這一領域的應用效果。其次,在很多應用中需要提供自己的圖形圖像處理功能,例如,在一個正在連接網絡的任務中可能就希望顯示一幅示意性的動畫,此時,不能依賴一個圖形軟件來實現。因此,通過對獨立功能的封裝,可以為今后需要的圖形圖像的應用奠定基礎2。此外,借助Visual C+語言這種典型的面向對象編程環境,能夠充分挖掘硬件的潛能,得到性能優良的程序代碼。1.2 國內外發展現狀圖形與圖像處理是計算機最早應用的領域之一,從簡單的圖形顯示到復雜的圖像分析、模式識別,使得圖形與圖像處理技術不斷走向成熟,也涌現出了大量的軟件。例如,ACDSee、PhotoShop、C

14、orelDraw等,這些軟件提供了一般顯示、特殊顯示、特技處理等大量復雜的功能。圖形處理技術得益于圖形學的發展,而從目的上可以將圖像處理技術分為兩類,分別是圖像識別技術和圖像處理技術。針對圖像處理技術,可以是旋轉、亮度、對比度、飽和度、RGB調節、調節圖像尺寸等屬性方面的處理技術和添加文字、圖像增強、弱化、水印、特效、鏤空等處理方法。甚至為了達到更精微的處理效果,這些軟件還使用了圖層。隨著網絡和多媒體技術的發展和應用,體現在應用軟件中的是一些更具有“現代感”的應用,例如,支持各種常用圖形、RAW原始圖片、Flash動畫的快速瀏覽、編輯、保存、導入、導出,甚至還可以提供一些趣味涂鴉、字符素描之類

15、的應用,以體現人的個性3。事實上,應用軟件中常常需要采用其中的某些技術來處理相關的問題。例如,一個支持簡單形狀輔助設計的軟件并不需要支持特效方面的方法。在軟件設計的支撐環境和技術上,C+是一個很好的選擇,這主要是考慮到如下因素,主要包括代碼效率高,處理底層問題能力強,支持面向對象的程序設計方法。利用C+技術可以實現對程序代碼和數據的良好封裝,使之能夠具有良好的重用性。1.3 研究方法與手段1.3.1 運行環境運行環境主要介紹了硬件環境和軟件環境。(1) 硬件環境 處理器:Inter Pentium 166 MX 或更高 內存:32MB或更高 硬盤空間:1GB或更高 顯卡:SVGA顯示適配器(2

16、) 軟件環境操作系統:Window 98/ME/2000/XP1.3.2 開發環境開發環境主要介紹了本系統采用的操作系統、開發語言。(1) 操作系統:Windows XP(2) 開發語言:C+(3) 開發環境:Visual C+ 6.0第2章 圖形圖像處理系統相關技術綜述2.1 圖形設計基礎2.1.1 Visual C+技術概要面向對象程序設計(Object-Oriented Programming,簡稱OOP)方法已出現近30年,在20世紀90年代己成為程序設計的主流方向。面向對象程序設計語言是現代程序開發的主要工具。程序包含兩類基本的元素,即數據和操作數據的指令集(稱為代碼)。傳統的程序設

17、計語言以設計代碼為核心,程序設計實際上就是指定程序指令的先后次序,數據表示必須適應代碼的設計。模塊化程序設計方法將完成某一功能的指令集組成一個相對獨立的程序模塊(即函數或過程),使得程序的結構清晰,便于有效的維護,對程序設計技術有很大的促進。但由于結構化程序設計方法并不能保證各程序模塊之間真正的相互獨立,程序設計者在設計一個模塊時很難完全排除其他模塊的影響。隨著程序規模的增大,各模塊之間的相互影響導致一些難于測試,難以定位發現的錯誤,增加了程序開發和維護的困難。面向對象程序設計方法主要以數據為中心,代碼是圍繞著需要處理的數據而設計的4。2.1.2 圖形設備接口GDI圖形設備接口(GDI)是一個

18、抽象的接口。通過該接口可以實現對圖形的顏色、線條的粗細等屬性的控制。程序可以通過調用這些GDI函數和硬件打交道的,從而實現了設備無關性5。2.1.3 設備環境DC設備環境DC(Device Context又稱設備上下文,也稱設備描述表)是一個關于如何繪制圖形的方法的集合,它可以繪制各種圖形,確定在應用窗口中繪制圖形的方式,即確定繪圖模式和映射模式。在繪圖之前,必須獲取繪圖窗口區域的一個設備環境DC。接著進行GDI函數的調用,執行適合于設備環境DC的命令。獲取DC時,Windows初始化了一套完整的屬性和對象集合,可以使用它們渲染顯示。為了創建自己應用程序的特定顯示,可以更改這些屬性和對象。Wi

19、ndows的設備環境是GDI的關鍵元素,它代表了不同的物理設備5。分為4種類型,包括顯示器型,打印機型,內存型和信息型。每種類型的設備環境都有各自的特定用途,詳見表2-1。表2-1 設備環境的類型和用途設 備 環 境用 途顯示器型打印機型內存型信息型支持視頻顯示器上的繪圖操作支持打印機和繪圖儀上的繪圖操作支持位圖上的繪圖操作支持設備數據的訪問2.1.4 CDC類的派生類的功能及其之間的區別CDC各派生類各有特點,并可以完成不同的功能,表2-2介紹了各派生類的主要功能。表2-2 CDC類的派生類簡介派生類名稱說 明CClientDC這是一個設備描述表,提供對窗口客戶區域的圖形訪問。在窗口中畫圖時

20、可使用此類DC,但對WM_PAINT Windows消息除外。CMetaFileDC這個設備描述表代表Windows元文件,它包含一系列命令已重新產生圖像。想要創建獨立于設備的文件時可使用此類DC,用戶可以回放這種文件來創建圖像。續表2-2派生類名稱說 明CPaintDC這是創建WM_PAINT Windows消息的設備描述表。應用程序可以使用此DC更新Windows顯示,通常在MFC應用程序的OnPaint()函數中使用。CWindowDC可以提供在整個窗口(包括客戶區和非客戶區)中畫圖的設備描述表。(1) CWindowDC類與CPaintDC和CClientDC類的區別CWindowDC

21、類與CPanitDC類和CClientDC的區別的一個方面是:用CPaintDC類CClientDC類的對象繪制圖形時,繪制區只能是客戶區,而不能在非客戶區,而CWindowDC可以在非客戶區進行圖形繪制。CWindowDC一般在框架窗口類中(CMainFrame)引用,在視圖窗口中引用CWindowDC類時,由于視圖類只能管理客戶區,所以并不能在非客戶區進行繪制。他們之間區別的另一個方面是:在CWindowDC繪圖類下,坐標系是建立在整個屏幕上的,在像素坐標方式下,坐標原點在屏幕的左上角,而在CPaintDC和CClientDC繪圖類下,坐標系是建立在客戶區上的,在像素坐標方式下,坐標原點在

22、客戶區的左上角6。(2) CPainDC類與CClientDC類的區別CPaintDC類與CClientDC類都是在窗口的客戶區內繪制圖形,但兩者在繪制機制上有著本質的區別。CPaintDC類應用在OnPaint函數中,以響應Windows的WM_PAINT消息,而CClientDC應用在非響應消息WM_PAINT的情況下。CPaintDC類響應WM_PANINT消息,自動完成繪制,這對維護圖形的完整性有著重要的作用。2.1.5 與繪圖相關的GDI對象類本節主要介紹與繪制各種圖形元素相關的GDI對象類。所謂基本繪圖對象類主要包括CBitmap類、CBrush類、CFont類、CPen類、CRg

23、n類。它們都是CGdiObject類的派生類6。簡要介紹如下。(1) CBitmap位圖是一種位矩陣,每一個顯示像素都對應于其中的一個或多個位。利用位圖來表示圖像,創建畫刷。(2) CBrush畫刷定義了一種位圖形式的像素,利用它可對區域內部填充顏色。(3) CFont字體是一種具有某種風格和尺寸的所有字符的完整集合。 (4) CPen畫筆是一種用來畫線及繪制有形邊框的工具,可以指定它的顏色及厚度,并且可以指定它畫實線、點線或虛線。(5) CRgn區域是由多邊形、橢圓或二者組合形成的一種范圍,可以利用它來進行填充、裁剪。(6) CPalette調色板是一種顏色映射接口,允許應用程序在不干擾其他

24、應用程序的前提下,充分利用輸出設備的顏色描繪能力。2.1.6 坐標變換和映射模式在本節討論兩種坐標系邏輯坐標系和設備坐標系及其相互之間的轉換。坐標映射方式是指兩種坐標系在相互轉換時,邏輯單位和設備單位之間存在的某種比例關系。(1) 邏輯坐標和設備坐標的轉換設備坐標是針對屏幕或其他顯示設備而言的。其原點在屏幕的左上角。X軸正方向為向右,Y軸的正方向為向下。原點位于窗口的左上角點處。單位為像素。邏輯坐標則是在內存中虛擬的一個坐標系。其原點在屏幕的左上角。X軸的正方向為向右,Y軸的正方向為向上。其單位隨著映射模式的不同而改變。(2) 窗口和視口窗口是虛擬存在的一個屏幕,在屏幕上看到的圖形是視口。Wi

25、ndows在繪制圖形時,并不是把圖形直接繪制到屏幕上,而是繪制到特定的映射模式下的邏輯坐標系虛擬的窗口中,然后將這個圖形映射到一個視圖中,即視口中。而當前的設備(如屏幕,打印機)顯示出來的就是該視圖的一部分7。(3) 設置繪圖模式繪圖模式指定了畫筆顏色和被填充物體內部顏色是如何與顯示平面的顏色相混合的。繪圖模式是描述兩個變量的所有可能的布爾組合,指采用什么方式進行繪制工作,而采用的方式主要體現在像素顏色的設定。2.2 圖像設計基礎2.2.1 數字圖像的基本概念人眼看到的任何自然界的圖像都是連續的模擬圖像,其形狀和形態表現由圖像各位置的顏色所決定。色度學理論認為,任何顏色都可由紅(Red)、綠(

26、Green)、藍(Blue)3種基本顏色按不同的比例混合得到。紅、綠、藍被稱為三原色,簡稱RGB三原色。因此,自然界的圖像可用基于位置坐標的三維函數來表示,即 f(x,y,z)=(fred(x,y,z),fgreen(x,y,z),fblue(x,y,z) (2-1)其中f表示空間坐標為(x,y,z)位置點的顏色,fred、fgreen、fblue分別表示該位置點的紅、綠、藍3種原色的顏色分量值。它們都是空間的連續函數,即連續空間的每點都由一個精確的值與之相對應。為了研究的方便,主要考慮平面圖像。平面上每一點僅包括兩個坐標值。因此,平面圖像函數是連續的二維的數,即 f(x,y)=(fred(x

27、,y),fgreen(x,y),fblue(x,y) (2-2)圖像可以分為黑白圖像和彩色圖像。所謂黑白圖像,就是圖像中每一點都不是彩色的,即每點的紅、綠、藍顏色分量值都相等,即 fred=fgreen=fblue (2-3)對于黑白圖像,其f(x,y)表示(x,y)位置處的灰度值。由于計算機僅能處理離散的數據,所以如要用計算機來處理圖像,連續的圖像函數必須轉化為離散的數據集,這一過程叫做圖像采集7。圖像采集由圖像采集系統完成,如圖2-1所示。圖像采集系統包括3個基本單元,即成像系統、采樣系統和量化器。成像系統f(x,y)g(x,y)量化器gs(x,y)ga(x,y)景物圖像采樣圖像數字圖像采

28、樣系統圖2-1 圖像采集系統2.2.2 調色板現實世界的顏色種類是無限的,但計算機顯示系統所能表現的顏色數量是有限的。因此,為了使計算機能最好地重現實際圖景,就必須采用一定的技術來管理和取舍顏色。按表現能力的不同,現代計算機的顯示系統可以分為以下3種。(1) VGA:能用640480的分辨率同時顯示16種顏色。(2) SuperVGA:能用640480的分辨率同時顯示256種顏色(3) 真彩色:能同時顯示16777216種顏色。所謂真彩色(True Color),是指顯示出來的圖像的顏色與真實世界中的顏色非常自然逼真、人眼難以區分它們的差別。通常使用RGB表示法來表現真彩色圖像,即用3字節(2

29、4位)來表示個真彩色像素的顏色值,紅、綠、藍三原色的濃度分別用一字節(8位)來表示。Windows采用該方法來表現顏色,其SDK提供一個名為RGB的宏來將不同的R、G、B顏色值轉化為24位的顏色值,其原型如下所示。 COLORREF RGB(BYTE bRed, BYTE bGReen, BYTE bBlue) (2-7)COLORREF是表示顏色值的數據類型,是一個32位的無符號長整數;bRed、bGreen和bBlue分別表示紅、綠、藍三原色的濃度,它們的類型是BYTE,長度是8位。其十六進制數據表示形式如下所示。0x00bbggrr(2-8)字節rr、gg、bb比分別表示紅、綠、藍三原色

30、的濃度,最高位字節為0,用于保留與將來的系統兼容8。2.2.3 調色板的概念在真彩色系統中,每一個像素的值都用24位來表示。像素值與真彩色顏色值可以一一對應,所以像素值就是所表現的顏色位。但對于僅能同時顯示16色或256色的系統,每一個像素僅能分別采用4位或8位來表示,像素值與真彩色顏色值不能一一對應,用像素值代表顏色值的方法將不能得到最佳的效果,而必須采用調色板技術。所謂調色板就是在16色或256色顯示系統中,由圖像中出現最頻繁的16種或256種顏色所組成的顏色表。對這些顏色按4位或8位,即0至15或255進行編號,每一編號代表其中的一種顏色。這種顏色編號叫做顏色的索引號,4位或8位的索引號

31、與24位的顏色值的對應表叫做顏色查找表。使用調色板的圖像叫做調色板圖像。它們的像素值并不是顏色值,而是顏色在調色板查找表中的索引號9。為了保證Windows的基本顯示界面的一致性,Windows保留了一個有20種顏色的內部系統調色板,用來繪制窗口的圖標、邊界和按鈕等通用界面。該調色板在所有的顯示設置中都保持不變。在16色的顯示系統中,系統調色板通過16種顏色的抖動來產生其余4種顏色。在256色的顯示系統中,Windows也保持該20種顏色的次序,其余的236種顏色由當前的調色板分配10。第3章 圖形圖像處理系統的總體設計3.1 需求分析市場上的圖像處理軟件大都功能強大,需要好一陣子適應,普通的

32、用戶根本用不到那么多的功能。所以,可以開發一種簡單小巧,可進行基本圖像處理,圖形繪制的軟件非常必要。利用一個設計良好的簡單的小圖形圖像處理程序可以用于教學演示的目的,展示基本的圖形圖像處理技術和面向對象技術在這一領域的應用效果。通過對獨立功能的封裝,可以為今后需要的圖形圖像的應用奠定基礎。此外,借助Visual C+語言這種典型的面向對象編程環境,能夠充分挖掘硬件的潛能,得到性能優良的程序代碼。3.2 圖形圖像處理系統目標設計系統的設計目標是采用面向對象的程序設計技術實現一個圖形繪制和圖像處理的應用軟件,滿足普通用戶對于圖形圖像應用程序的簡單需求。主要工作分為三類,包括基本圖形繪制與編輯、圖像

33、格式識別與轉換、簡單的圖像處理。3.3 圖形圖像處理系統功能描述系統的主要功能包括繪制各種簡單圖形、改變所繪圖形的顏色、線條類型、打開和存儲各種常見的圖像文件、對圖像進行簡單的處理。(1) 圖元繪制 直線圖元,或者稱為線段圖元,允許用戶使用鼠標選擇直線頂點繪制。 圓圖元,允許用戶利用圓心和半徑來進行繪制。 矩形圖元。 圓角矩形圖元。(2) 改變繪制條件在繪制圖元時要能夠改變繪制條件,主要包括如下內容。 改變線條顏色,使用戶可以繪制出不同顏色的圖元。 改變線條類型,使用戶可以繪制出不同線型的圖元。 改變填充方式,使用戶可以選擇不同的填充方式。(3) 圖元修改包括如下操作。 刪除圖元。 平移圖元。

34、 鏡像圖元。 旋轉圖元。(4) 圖元屬性修改 改變被選圖元顏色。圖像部分圖形圖像系統圖形部分圖3-1 圖形圖像處理系統功能描述圖圖元繪制設置屬性圖元修改修改屬性圖形部分圖3-2 圖形圖像處理系統功能描述圖圖形部分圖像部分格式轉換圖像變換圖像處理鏡像旋轉平滑銳化圖3-3 圖形圖像處理系統功能描述圖圖像部分 改變被選圖元線型。 改變被選圖元線寬。(5) 圖像格式處理能夠打開、存儲、關閉幾種常見圖像文件,隱含了格式的轉換。(6) 圖像變換包括旋轉、鏡像。(7) 圖像處理包括圖像平滑、銳化。根據功能模塊分析,完整的系統功能描述參見圖3-1。3.4 界面設計3.4.1 主界面設計圖形圖像系統啟動界面,如

35、圖3-4所示。圖3-4 圖形圖像系統啟動界面考慮到圖像處理的方便,決定采用多文檔(MDl)界面。基本的繪圖工具都在兩個工具欄中體現出來,這是為了方便用戶繪圖的需要,屬性單獨使用一個對話框使設置圖元的屬性更加方便,而且使界面看起來更加的美觀。圖形圖像系統界面如圖3-5所示。圖3-5 圖形圖像系統界面3.4.2菜單設計主菜單如圖3-6所示,包括文件、編輯、查看、窗口、圖像變換、圖像處理、幫助菜單項。圖3-6 圖形圖像系統菜單圖像變換菜單包括圖像的旋轉和鏡像,圖像處理菜單包括平滑和銳化。圖3-7 圖像變換和圖像處理菜單3.4.3 工具欄設計工具欄方便繪圖,所以本系統把常用的繪圖操作命令都用工具欄來實

36、現,如圖3-8、圖3-9是本應用程序的工具欄。主工具欄中包括打開、新建、保存、回退,設定畫布大小等命令。圖3-8 主工具欄繪圖工具欄中包括繪制直線,矩形,圓角矩形,圓,橢圓等圖形。圖3-9 繪圖工具欄3.4.4 屬性框設計屬性框可以設置繪圖圖形的屬性,包括線型,線寬,顏色的屬性屬性框的界面如下圖如3-10所示。圖3-10 屬性框界面第4章 圖形圖像處理系統圖像部分設計4.1 與設備無關位圖(DIB)Windows3.1以上版本提供了對設備無關位圖DIB的支持。DIB位圖可以在不同的機器或系統中顯示位圖所固有的圖像。與DDB相比而言,DIB是一種外部的位圖格式,經常存儲為以.BMP為后綴的位圖文

37、件(有時也以DIB為后綴)。DIB位圖還支持圖像數據的壓縮11。4.1.1 DIB位圖的結構DIB位圖文件的結構如圖4-1所示,包括位圖文件頭結構BITMAPEHEADER、位圖信息頭結構BITMAPINFOHEADER、位圖顏色表RGBQUAD和位圖像素數據4部分。位圖文件頭結構BITMAPEHEADER位圖信息頭結構BITMAPINFOHEADER位圖顏色表RGBQUAD位圖像素數據圖4-1 DIB位圖的結構上面結構中各數據域的意義如表4-2所示。表4-1 Windows位圖結構數據域的含義結 構數 據 域含 義BITMAPFILEHEADERbfType字節“BM”bfSize文件總字節

38、數bfReserved10 續表4-1結 構數 據 域含 義bfResrved20bfOffBits位圖數據距文件頭的偏移量BITMAPINFOHEADERbiSize本結構大小的字節數biWidth位圖的寬度,單位為像素點biHeight位圖的高度,單位為像素點biPlanes1bitBitCount像素的位數(1,4,8,24)biCompression壓縮方式(0表示不壓縮)biSizeImage位圖數據的字節數biXpelsPerMeter水平分辨(像素點每米)biYpelsPerMeter垂直分辨(像素點每米)biClrUsed圖像中使用的顏色數biClrImportant圖像中重要

39、的顏色數RGBQUADrgbBlue藍色的比例rgbGreen綠色的比例rgbRed紅色的比例rgbReserved0DIB位圖像素的位數可為1、4、8和24,其圖像的顏色數分別為2、16、256和真彩色其中前3種具有對應的顏色表,而24位位圖的顏色表為空,其像素值就是顏色值12。4.1.2 定義DIB處理函數集定義的DIB處理函數如表4-2所示。表4-2 DIB處理函數集函數類型函 數 名功 能初始化函數CreateDIB創建一個空的DIBCreateDefaultDIB用當前的系統調色板創建一個空的DIBDestroryDIB釋放DIB內存塊LoadDIB從DIB文件中裝載DIB數據Sav

40、eDIB讀DIB存到文件中ReadDIBFile讀DIB存到內存中屬性函數BytesPerLine獲取DIB每行所占的字節數DIBlockSize獲取DIB數據塊的大小DIBHeight獲取DIB高度DIBWidth獲取DIB寬度DIBNumColors獲取DIB的顏色數DIBBitCout獲取DIB的圖像顏色位數FindDIB Bits獲取DIB數據塊的地址(指針)PletteSize獲取DIB的調色板中的顏色表項數顯示函數PaintBitmap顯示DDBPaintDIB顯示DIB續表4-2函數類型函 數 名功 能PaintDIB顯示DIB操作函數DIBToDIBSetion將DIB數據塊轉

41、換為DIBSECTION DIBSectionToDIB將DIBSECTION轉換為DIB數據塊ConvertDIBFormat修改的格式BitmapToDIB將DDB轉換為DIB ChangeBitmapFormat修改DDB的格式DIBToBitmap將DDB轉換為DIB ChangeDIBFormat基于當前的系統調色板修改DIB調色板函數CreateDIBPalette創建DIB調色板DisplayPalette顯示調色板CopyPalette拷貝調色板GetSystemPalette獲取當前的系統調色板PalEntriesOnDevice獲取設備的調色板表項數CreateIdenti

42、fyPalette創建等同調色板MapDIBColorsToPalette按指定的調色板映射DIB的顏色捕獲函數CopyScreenToBitmap將屏幕顯示轉換為一個DDBCopyWindowToBitmap將指定窗口的顯示轉換為一個DDBCopyClientRectToBitmap將指定窗口用戶區的指定區域顯示轉換為一個DDBCopyScreenToDIB將屏幕顯示轉換為一個DIBCopyWindowToDIB將指定窗口的顯示轉換為一個DIB4.1.3 CDib類的設計目標實現圖像處理的基礎是設計一個解釋位圖的DIB類(名CDib),基本功能如下所述。(1) 多種形式的構造函數,包括創建空

43、DIB、從DDB創建、從DIB句柄創建、從DIB數據塊指針創建及從屏幕或窗口顯示創建等;(2) 支持拷貝構造函數和賦值運算;(3) DIB文件的讀、寫操作;(4) 從資源中裝載DIB位圖;(5) DIB的顯示;(6) 提供DIB的空間顏色和格式特征等信息;(7) DDB與DIB的相互轉換;(8) DIB格式轉換;(9) DIB調色板操作;(10) 能獲取DIB位圖數據的句柄;(11) 能生成DIB數據的拷貝。4.2 圖像變換4.2.1 圖像變換的理論基礎圖像變換主要是指幾何變換或空間變換,是一種建立一幅圖像與其變形后的圖像中所有各點之間映射關系的函數,可表示為:x,y=X(u,v),Y(u,v

44、)(4-1)或u,v=U(x,y),V(x,y)(4-2)其中,u,v表示輸出圖像中像素的坐標,x,y表示輸入圖像中像素的坐標。X、Y、U、V惟一確定空間變換的映射函數,即它們唯一地定義了輸入圖像和輸出圖像中所有點之間的幾何對應關系。X、Y將輸入映射到輸出,稱為向前映射(Forward mapping);U、V將輸出圖像映射到輸入,稱為逆向映射(Inverse mapping)。4.2.2 旋轉在實際的應用中,最常用的是直角旋轉,包括對位圖(逆時針)旋轉90、180和270。其中最基本的是旋轉90的操作,旋轉180和270的操作可借助旋轉90的操作來實現。將位圖旋轉90的實現步驟如下所述。(1

45、) 創建一個新DIB,其顏色信息與源位圖相同,注意新位圖的寬、高分別為源位圖的高和寬。(2) 根據位圖的存儲位大小,分別對1位、4位、8位和24位的位圖進行旋轉,即對DIB的每一像素進行旋轉變換。圖4-3為圖像經過旋轉90度之后的效果。圖4-2 原 圖圖4-3 旋轉90度之后的圖像4.2.3 鏡像鏡像變換有兩種基本形式,即水平鏡像和垂直鏡像。前者是將圖像所有像素的排列左右反轉,后者是將圖像所有像素的排列上下反轉。圖4-4 原 圖圖4-5 水平鏡像之后的圖像4.3 圖像處理的基本方法基本的圖像處理方法可分為點處理和區域處理兩類。點處理相對較簡單,只能改變圖像的灰度分布,但不會改變圖像內的空間關系

46、。點處理可以按預定的方式改變圖像的灰度直方圖。最常用的點處理是灰度直方圖均衡。區域處理在處理某一像素時,利用與該像素相鄰的一組像素,經過某種變換得到處理后圖像中某一點的像素值。目標像素的鄰域一般是由像素組成的二維矩陣,該矩陣的大小為奇數。目標像素位于該矩陣的中央,即目標像素就是區域的中心像素。經過處理后,目標像素的值為經過特定算法計算后所得的結果。區域中心像素周圍的那些像素值在二維方向上提供了圖像的亮度變化趨勢的信息。圖像中像素的亮度在一定距離上的變化速率稱為圖像的空間頻率。區域處理將改變圖像的空間頻率信息,減緩或增強圖像中的某些特定的頻率分量13。主要的區域處理算法有卷積法、中值濾波法和So

47、bel邊緣檢測法。我們這里只介紹卷積法。(1) 卷積原理卷積可以簡單地看成加權求和的過程。卷積時使用的權用一個很小的矩陣來表示,矩陣的大小是奇數,而且與使用的區域的大小相同。這種權矩陣叫做卷積核,區域中的每個像素分別與卷積核中的每個元素相乘,所有乘積之和即為區域中心像素的新值。 卷積核中各元素叫做卷積系數。卷積核中卷積系數的大小、方向及排列次序決定了卷積的圖像處理效果。大多數常用的卷積核都是33的,所有卷積核的行、列數都是奇數14。(2) 低通濾波:圖像平滑與模糊低通濾波的基本思路是保留圖像空間頻率的低頻成分,減少圖像的高頻成分。低通濾波可以降低圖像中的視覺噪聲,同時除去圖像中的高頻部分后,圖

48、像中那些本來不明顯的低頻成分就更容易識別了15。(3) 高通濾波:圖像銳化與清晰高通濾波增強圖像的高頻空間頻率成分,阻擋低頻中間頻率成分。相對于高頻成分來說,低頻成分被削弱了。在需要突出圖像中的高頻成分時,可對圖像進行高通濾波。(4) 平滑與銳化對圖像進行低通濾波將使圖像平滑;而對圖像進行高通濾波將使圖像銳化。因此圖像的平滑與銳化處理實際上就是對圖像進行低、高通濾波,即用低、高通濾波器作為卷積核來對圖像進行卷積處理。圖4-6 原 圖圖4-7 平滑之后的圖像圖4-8 銳化之后的圖像4.4 圖像格式用數字來表示圖有兩種不同的方式,即位圖(又稱為柵格或像素圖)和矢量圖。在具體的實現上,不同的廠家,在

49、不同的系統上和不同的軟件中又采用不同的圖像表示方式,即以不同的圖像格式,來表示數字圖像。4.4.1 PCX格式(1) 文件結構概述PCX格式由3個部分組成,即文件頭、位圖數據和一個多達256種色彩的調色板。PCX文件由固定的128字節的文件頭開始。文件頭包含版本號、被打印或掃描圖像的分辨率(單位為每英寸點數)、大小(單位像素數)、每掃描行字節數、每像素位數和彩色平面數等信息。文件還可包括一個調色板以及表明該調色板是灰度還是彩色的一個代碼。(2) 格式詳解文件頭如表4-3所示。表4-3 PCX文件頭起始字節字節數內 容解 釋01Zsoft標志10(0x0a),Zsoft PCX 文件的標志11版

50、本號0:PC Paintbrush 2.51:PC Paintbrush 2.821編碼1:PCX游程長度31位/像素每個平面的位/像素值,可能值為1,2,4,或848圖像大小圖像邊界極限為Xmin,Ymin,Xmax,Ymax,以像素為單位122水平分辨率打印時,X方向的每英寸點數續表4-3起始字節字節數內 容解 釋142垂直分辨打印時,Y方向的每英寸點數1648文件頭調色板調色板部分的說明641保留字節Zsoft保留,為0651平面彩色/灰色平面數,PCX圖像可以是單彩色,也可以具有多個顏色平面662每行字節數每個色彩平面的每行字節數,即存儲 未壓縮圖像的一個掃描行所需的字節數,總是偶數6

51、82調色板解釋1:彩色或黑白2:灰度702視頻屏幕大小X視頻輸出的水平像素數-1722視頻屏幕大小Y視頻輸出的垂直像素數-17454全空直到文件結束05.4.2 GIF格式GIF(Graphics Interchange Format,圖形交換格式)文件由CompuServe公司開發并持有該文件格式的版權。GIF圖像是基于顏色列表而存儲,即圖像中每一點的存儲數據是該點的顏色對應于顏色列表的索引值。GIF圖像最多支持8位存儲位,即最多僅支持256色圖像。GIF文件內部是按塊劃分的,包括控制塊(Control Block)和數據塊(Data Sub-blocks)兩種??刂茐K控制數據塊行為,不同的

52、控制塊包含一些不同的控制參數;數據塊只包含些8-bit的字符流,由它前面的控制塊來決定它的功能。每個數據塊大小從0到255個字節不等。數據塊的第一個字節存儲這個數據塊大小(字節數),但數據塊的大小不包括這個字節。所以即使空的數據塊也有一個字節,即數據塊的大小為0x00。如圖4-9所示顯示了一個GIF數據塊的結構。 圖4-9 GIF數據塊的結構圖4-10 GIF文件的結構一個GIF文件的結構可分為文件頭(File Header)、GIF數據流(GIF Data Stream)和文件終結符(Tailer)3個部分。文件頭包含GIF文件署名(Signature)和版本號(Version),包括GIF

53、數據流由控制標識符、圖像塊(Image Block)和其他的一些擴展塊組成;文件終結符只有一個值為0x3B的字符表示文件結束。如圖4-10所示顯示了一個GIF文件的組成結構。4.4.3 JPEGJPEG的全稱是“聯合圖片專家組(Joint Photographic Experts Group)”,是由該專家組制訂的用于連續色調(包括灰度和彩色)靜止圖像的壓縮編碼標準。JPEG標準的壓縮編碼算法是“多灰度靜止圖像的數字壓縮編碼”。JPEG標準包括3部分,即編碼器、譯碼器和交換格式。編碼器將原始圖像的編碼壓縮成壓縮數據,譯碼器將壓縮的圖像數據還原成原始圖像數據。圖像壓縮數據以一定的交換格式存儲。第5章 圖形圖像處理系統圖形部分設計5.1 圖形類的設計圖形類的設計這一節介紹了圖形類的層次結構,類層次設計的特點和設計原則以及圖形類的一些實現代碼。5.1.1 圖形系統的層次結構利用面向對象的方法,將圖形的基

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論