freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于mfc的圖片瀏覽器的設(shè)計與實現(xiàn)(已修改)

2025-07-06 15:48 本頁面
 

【正文】 第1章 緒 論圖像處理源自于二戰(zhàn)中的攝影偵察。當時,處理操作是通過光學(xué)方法來完成的,判讀工作則是由專門精于此道并能確定炸彈襲擊結(jié)果的人員來做。隨著20世紀60年代后期衛(wèi)星圖像的出現(xiàn),更多基于計算機的工作便開展起來。彩色合成的衛(wèi)星圖像,有時的確漂亮的讓人吃驚,它們已經(jīng)成為人類視覺文化和對我們這個行星進行認知的一個組成部分。1980年1月《科學(xué)美國人》發(fā)表了一幅被稱之為“Plume 2”的著名圖像,它是1979年3月5日通過宇宙飛船旅行者1號在木星的衛(wèi)星上探測到的8次火山爆發(fā)中的第二次。這幅圖像在星際探險圖像中是一個里程碑,人們第一次在宇宙中看到了正在爆發(fā)的火山。它也是圖像處理領(lǐng)域的一次偉大勝利。衛(wèi)星圖像以及宇宙探測器所獲取的圖像直到近年來才大量應(yīng)用圖像處理技術(shù)。在這些技術(shù)中,對計算機圖像進行數(shù)字化處理以得到想要獲得的效果,比如使圖像的某一部分或某一特性更加明顯。正如計算機圖形學(xué)一樣,直到近幾年,圖像處理仍然局限在一些實驗室里使用,只有這些地方才能提供昂貴的圖像處理計算機來滿足處理大量高分辨率圖像的需要。隨著價格低廉的高性能計算機和諸如數(shù)碼相機及掃描儀這樣的圖像采集設(shè)備的出現(xiàn),我們已經(jīng)看到圖像處理技術(shù)在向公眾領(lǐng)域轉(zhuǎn)移。經(jīng)典的圖像處理技術(shù)很平常地被圖像設(shè)計人員用來處理圖片和生成圖像,比如修復(fù)圖片的缺陷、改變色彩、對比度等,或者通過圖像邊緣增強這樣的處理來改變整個圖片的外觀。目前圖像處理的主流應(yīng)用是圖像的壓縮,即通過互聯(lián)網(wǎng)進行傳遞或在可視電話和視頻會議中進行動態(tài)視頻圖像的壓縮。可視電話是當今結(jié)合計算機圖像和傳統(tǒng)圖像處理的技術(shù),以期產(chǎn)生很高壓縮比的交叉領(lǐng)域之一。所有這一切都是圖像的“數(shù)字表達”這一不可抗拒的發(fā)展趨勢的組成部分。事實上,20世紀最強大、應(yīng)用最廣泛的圖像形式——電視圖像,也將不可避免的融入數(shù)字領(lǐng)域。數(shù)字圖像及其處理技術(shù)之所以發(fā)展的如此迅速并獲得廣泛的應(yīng)用,與其自身的優(yōu)點是息息相關(guān)的。1. 再現(xiàn)性好數(shù)字圖像處理與模擬圖像處理的根本不同在于,它不會因圖像的存儲、傳輸或復(fù)制等一系列變換操作而導(dǎo)致圖像質(zhì)量的退化。只要圖像在數(shù)字化時準確地表現(xiàn)了原稿,則數(shù)字圖像處理過程始終能保持圖像的再現(xiàn)。2. 處理精度高按目前的技術(shù),幾乎可將一幅模擬圖像數(shù)字化為任意大小的二維數(shù)組,這主要取決于圖像數(shù)字化設(shè)備的能力?,F(xiàn)代掃描儀可以把每個像素的灰度等級量化為16位甚至更高,這意味著圖像的數(shù)字化精度可以達到滿足任一應(yīng)用需求。對計算機而言,不論數(shù)組大小,也不論每個像素的位數(shù)多少,其處理程序幾乎是一樣的。換言之,從原理上講不論圖像的精度有多高,處理總是能實現(xiàn)的,只要在處理時改變程序中的數(shù)組參數(shù)就可以了。回想一下圖像的模擬處理,為了要把處理精度提高一個數(shù)量級,就要大幅度地改進處理裝置,這在經(jīng)濟上是極不合算的。3. 適用面寬圖像可以來自于多種信息源,它們可以是可見光圖像,也可以是不可見的波譜圖像(例如X射線圖像、射線圖像、超聲波圖像或紅外圖像等)。從圖像反映的客觀實體尺度看,可以小到電子顯微鏡圖像,大到航空照片、遙感圖像甚至天文望遠鏡圖像。這些來自不同信息源的圖像只要被變換為數(shù)字編碼形式后,均是用二維數(shù)組表示的灰度圖像(彩色圖像也是由灰度圖像組合成的,例如RGB圖像由紅、綠、藍三個灰度圖像組合而成),因而均可用計算機來處理。即只要針對不同的圖像信息源,采取相應(yīng)的圖像信息采集措施,圖像的數(shù)字處理方法可適用于任何一種圖像。4. 靈活性高圖像處理大體上可分為圖像的像質(zhì)改善、圖像分析和圖像重建三大部分,每一部分均包含豐富的內(nèi)容。由于圖像的光學(xué)處理從原理上講只能進行線性運算,這極大地限制了光學(xué)圖像處理能實現(xiàn)的目標。而數(shù)字圖像處理不僅能完成線性運算,而且能實現(xiàn)非線性處理,即凡是可以用數(shù)學(xué)公式或邏輯關(guān)系來表達的一切運算均可用數(shù)字圖像處理實現(xiàn)。鑒于數(shù)字圖像自身的特點,對其進行處理也不是一步就能完成的過程??蓪⑺殖芍T多步驟,必須一個接一個地執(zhí)行這些步驟,直到提取出有用的數(shù)據(jù)。而這些步驟中,數(shù)據(jù)的存儲、表示又占有相當重要的地位,可以說,這是圖像處理中最基本的技術(shù)。因此,掌握不同格式圖像的編碼解碼、讀寫、顯示等方法是必不可少的。為什么會需要如此眾多不同類型的圖像文件格式呢?簡單的回答就是因為有太多不同類型的圖像以及眾多不同需求的應(yīng)用。完整一些的回答還要考慮到市場份額、所有權(quán)以及在圖像工業(yè)中缺乏的必要協(xié)調(diào)。但是,已經(jīng)有一些標準的文件格式被開發(fā)出來。許多其他圖像類型可以通過圖像轉(zhuǎn)換軟件很容易地轉(zhuǎn)換成這些文件格式,如本設(shè)計最終開發(fā)出的軟件就可以將圖像在BMP、PCX、TGA、GIF及JPEG之間互相轉(zhuǎn)換。與計算機圖像相關(guān)的一個領(lǐng)域就是計算機圖形學(xué)。計算機圖形學(xué)是計算機科學(xué)的一個特殊領(lǐng)域,它指的是通過計算機對可視數(shù)據(jù)進行再現(xiàn),這包括為顯示或打印生成計算機圖像,以及為輸出到監(jiān)視器、打印機、照相機或其他能提供圖像的設(shè)備上生成和處理的任何圖像(真實的或人造的)??梢哉J為計算機圖形學(xué)是計算機圖像技術(shù)的一部分,圖形設(shè)計師所使用的許多工具也正在被計算機圖像專業(yè)人士所采用。在計算機圖形學(xué)中,圖像數(shù)據(jù)的類型被分為兩個主要種類:矢量和位圖。矢量圖像是指僅通過存儲關(guān)鍵點來表達線條、曲線和形體的方法。這些關(guān)鍵點足以對形體進行定義,而將它變成圖像的過程稱之為渲染。當圖像被渲染之后,它可以被認為是位圖格式,其中每一個像素都具有與之相關(guān)的特定值。位圖圖像(也稱之為光柵圖像)可由圖像模型I(r, c)來表示,其中包含像素數(shù)據(jù)以及某些文件格式存儲的相應(yīng)的亮度值。盡管有些文件被壓縮,但仍屬于位圖圖像的范疇,通常這些類型的圖像包含頭信息和原始圖像數(shù)據(jù)。文件頭必須包含的信息為:(1)行數(shù)(高);(2)列數(shù)(寬);(3)每像素位數(shù);(4)文件類型。此外,對于某些復(fù)雜的文件格式,文件頭還必須包含有關(guān)所使用的壓縮類型的信息,以及創(chuàng)建圖像所需要的其他必要的參數(shù)。本設(shè)計所討論和處理的圖像均為位圖圖像。第2章 軟件開發(fā)平臺及編程模式在系統(tǒng)的設(shè)計與開發(fā)中,軟件開發(fā)平臺及編程模式是關(guān)鍵,下面介紹一下開發(fā)平臺的選擇、Microsoft Visual C++及編程模式。 開發(fā)平臺的選擇在Windows環(huán)境下,目前比較流行的可視化開發(fā)工具主要有:Visual C++、Visual Basic、C++ Builder、Delphi、Power Builder及JBuilder等。而本軟件采用Microsoft Visual C++ ,并使用MFC Application Framework作為本軟件的基本架構(gòu)。采用C++來進行圖像編程的主要原因是,與Java和C等現(xiàn)代編程語言相比,C++在程序運行的效率、內(nèi)存使用的可控性和編程的靈活性上具有優(yōu)勢。圖像處理需要處理大量的圖像數(shù)據(jù),經(jīng)常使用復(fù)雜、費時的算法,因此圖像處理程序的效率非常重要。C++代碼被編譯成匯編語言,可以直接在處理器上運行,效率很高。而Java被編譯成字節(jié)碼,C被編譯成中間語言,都是不能在處理器上執(zhí)行的,因此效率較低。故從運行效率的角度看,采用C++進行圖像編程比較合適。對龐大的圖像數(shù)據(jù)進行處理時需要使用大量的內(nèi)存,而計算機的物理內(nèi)存容量往往是有限的,因此需要有效地控制內(nèi)存的使用。C++直接控制內(nèi)存的分配和釋放,這雖繁瑣,且加大了編程的負擔,但卻能有效地控制內(nèi)存的使用。Java和C引進了垃圾收集機制,將開發(fā)人員從內(nèi)存管理的繁雜任務(wù)中解放出來,不再需要直接控制內(nèi)存的分配和釋放。但是,無效內(nèi)存的收集和釋放只能周期性地進行,難以達到有效地使用內(nèi)存。同樣的運算,使用Java和C所需的內(nèi)存比使用C++所需的內(nèi)存要多,即內(nèi)存的使用率較低。所以,從內(nèi)存的使用效率來看,采用C++進行圖像處理編程更合適。C++中大量使用指針,使得編程的靈活性很高,這雖然增加了程序出錯的可能性,但是便于程序員施展編程技巧來提高程序的效率。Java完全取消了指針,C極大地限制了指針的使用,這都限制了程序員施展技巧。因此,使用C++進行圖像處理編程具有更大的靈活性。而在以C++為核心語言的可視化編程工具中,Microsoft Visual C++ 。鑒于以上原因,本設(shè)計使用Microsoft Visual C++ 。 Microsoft Visual C++及編程模式簡介1. Visual C++可視化編程Visual C++的資源編輯器能以所見即所得(What you see is what you get)的形式直接編輯程序的用戶界面,為所有資源分配ID標識號。ClassWizard能把對話框模板與生成的類定義或與已有的類代碼連接起來,為菜單項、控制等資源生成空的處理函數(shù)模板,創(chuàng)建消息映射條目,并將資源ID與處理函數(shù)連接起來。通過使用AppWizard,程序員的編程工作便簡化為用資源編輯器直觀的設(shè)計界面,完善對話框類代碼,在空的處理函數(shù)模板處填寫響應(yīng)用戶操作的代碼,這是一種比較完善的可視化編程方法。但產(chǎn)品名“Visual C++”也容易誤導(dǎo)人,讓人認為自己使用的是一個與Microsoft Visual Basic類似的完全可視化的系統(tǒng)。然而,使用Visual C++,開發(fā)人員必須真正地閱讀和編寫C++代碼。Visual C++向?qū)Э梢怨?jié)省時間和提高精度,但是,程序員也必須理解向?qū)Мa(chǎn)生的代碼,并且,最重要的是,還必須理解MFC庫的結(jié)構(gòu)和Windows操作系統(tǒng)的內(nèi)部工作方式。2. MFC(Microsoft Foundation Classes)應(yīng)用程序框架應(yīng)用程序框架的一種定義是:提供一般應(yīng)用程序需要的全部面向?qū)ο筌浖M件的集成集合。C++流行的一個原因是它可以用類庫擴充。類庫是可在應(yīng)用程序中使用的有關(guān)C++類的集合。應(yīng)用程序框架是類庫的超集。一般的類庫只是一種孤立的類的集合,用來嵌入在任何程序中,但是,應(yīng)用程序框架卻定義了程序的結(jié)構(gòu)。自從MFC庫發(fā)布以來,MFC已經(jīng)成為主要的Windows類庫。使用MFC類庫構(gòu)建應(yīng)用程序具有以下優(yōu)點:l MFC庫是C++的Microsoft Windows API。l 應(yīng)用程序框架生成的應(yīng)用程序使用了標準的結(jié)構(gòu),具有標準化的用戶接口,這對具有標準用戶界面的Win32程序來說,可以極大的減輕程序員的負擔,使程序員不必過多地考慮界面,可把主要精力放在程序設(shè)計上,以提高程序設(shè)計的效率。l 使用應(yīng)用程序框架的應(yīng)用程序不僅小,而且運行速度快,具有很大的靈活性。MFC封裝了Win32 SDK中的幾乎所有函數(shù),能實現(xiàn)Win32系統(tǒng)的任何功能。l Visual C++工具降低了編碼的復(fù)雜性。l MFC庫應(yīng)用程序框架有豐富的特性,如:Windows API的C++接口、通用的(非Windows所特有的)類、“共用根對象”類層次結(jié)構(gòu)、流線式多文檔界面(MDI)應(yīng)用程序支持等。l 強大的功能。除封裝了大部分的Win32 SDK函數(shù)外,MFC還提供了應(yīng)用程序本身的數(shù)據(jù)和操作及ActiveX、OLE、Internet、WinSock、DAO(Data Access Objects)、ODBC(Open DataBase Connectivity)等操作類。MFC框架的核心是文檔/視圖結(jié)構(gòu)(DocumentView Architecture),這是一個很好用、但又往往較難以入門的功能。簡單的說,文檔/視圖結(jié)構(gòu)就是將數(shù)據(jù)和對數(shù)據(jù)的觀察或數(shù)據(jù)的表現(xiàn)(顯示)相分離。文檔僅處理數(shù)據(jù)的實際讀、寫操作,視圖則是顯示和處理數(shù)據(jù)的窗口,視圖可以操作文檔中的數(shù)據(jù)。3. Win32編程編寫Visual C++程序?qū)嶋H上就是一個構(gòu)造類和把類實例化的過程。由于Windows 95/98/Me/NT/2000是PC平臺中應(yīng)用最廣泛的操作系統(tǒng),而Microsoft力圖用一個叫做Win32的標準32位應(yīng)用程序接口作為對這幾個操作系統(tǒng)的共同開發(fā)接口,所以經(jīng)常采用Win32來代表Microsoft的32位Windows操作系統(tǒng),因此Visual C++主要用于針對Win32的應(yīng)用程序開發(fā)。Win32具有搶先式多任務(wù)、多線程和線性尋址內(nèi)存管理等特征,Win32編程的基本要求包括:l 應(yīng)用程序的執(zhí)行獨立于硬件設(shè)備。l 應(yīng)用程序具有圖形用戶界面。l 能在Windows 95/98/Me和Windows NT/2000/XP之間透明移植,并可移植到支持Windows NT/2000的RISC硬件平臺。l 高性能的搶先式多任務(wù)和多線程管理。l 高級的多媒體支持。l 通過OLE 2技術(shù)實現(xiàn)多個應(yīng)用程序的對象定位。Microsoft為進行Win32編程提供了一套名為Win32 SDK的應(yīng)用程序編程接口,其中包括上千個Win32系統(tǒng)函數(shù)。Visual C++包括一套叫做MFC(Microsoft Foundation Class Library)的C++類庫,其中定義了進行Win32編程所需要的各種類。有的類封裝了大部分的Win32 SDK中應(yīng)用程序的編程接口函數(shù);有的類封裝的則是應(yīng)用程序本身的數(shù)據(jù)和操作;還有的類封裝了ActiveX、OLE和Internet編程特性以及WinSock網(wǎng)絡(luò)特性和DAO(Data Access Objects)、ODBC(Open Database Connectivity)數(shù)據(jù)訪問功能。Win23 SDK和MFC是實現(xiàn)Win32編程的主要工具。Visual C++的AppWizard工具能自動生成應(yīng)用程序框架,該框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標準實現(xiàn)方法。運用Visual C++的資源編輯器(Resource Editor)能直觀地設(shè)計程序的用戶界面,而ClassWizard能把用戶界面和程序代碼連接起來。程序員要做的就是用MFC類實現(xiàn)框架中未完成的應(yīng)用程序的特定功能部分。所以使用Visual C++可以實現(xiàn)Win32的可視化程序設(shè)計。4. 消息映射在使用Visual C++進行Win32程序設(shè)計時,消息映射是一個非常重要的概念。Windows應(yīng)用程序是消息驅(qū)動的,應(yīng)用程序不能直接得到用戶所做的操作,如鼠標按鍵、鍵盤輸入和窗口移動等。這些操作由操作系統(tǒng)管理,操作系統(tǒng)檢測到操作事件后,便向相關(guān)的應(yīng)用程序發(fā)送消息,應(yīng)用程序響應(yīng)這些消息來完成用戶的操作。(1)消息Windows中的消息是操作系統(tǒng)與應(yīng)用程序之間、應(yīng)用程序與應(yīng)用程序之間、
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1