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

正文內(nèi)容

基于位圖的數(shù)字圖像處理系統(tǒng)畢業(yè)設(shè)計(jì)軟件學(xué)院(編輯修改稿)

2025-03-12 13:17 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ,自然支持虛擬函數(shù)和動(dòng)態(tài)約束。但是作為一個(gè)編程框架,有一個(gè)問(wèn)題必須解決:如果僅僅通過(guò)虛擬函數(shù)來(lái)支持動(dòng)態(tài)約束,必然導(dǎo)致虛擬函數(shù)表過(guò)于臃腫,消耗內(nèi)存,效率低下。例如, CWnd 封裝 Windows 窗口對(duì)象時(shí),每一條 Windows 消息對(duì)應(yīng)一個(gè)成員函數(shù),這些成員函數(shù)為派生類(lèi)所繼承。如果這些函數(shù)都設(shè)計(jì)成虛擬函數(shù),由于數(shù)量太多,實(shí)現(xiàn)起來(lái)不現(xiàn)實(shí)。于是, MFC 建立了消息映射機(jī)制,以一種富有效率、便于使用的手段解決 第 7頁(yè) 消 息處理函數(shù)的動(dòng)態(tài)約束問(wèn)題。這樣,通過(guò)虛擬函數(shù)和消息映射, MFC 類(lèi)提供了豐富的編程接口。程序員繼承基類(lèi)的同時(shí),把自己實(shí)現(xiàn)的虛擬函數(shù)和消息處理函數(shù)嵌入 MFC 的編程框架。MFC 編程框架將在適當(dāng)?shù)臅r(shí)候、適當(dāng)?shù)牡胤絹?lái)調(diào)用程序的代碼。 MFC 實(shí)現(xiàn)了對(duì)應(yīng)用程序概念的封裝,類(lèi)的繼承、動(dòng)態(tài)約束、類(lèi)的關(guān)系和相互作用等封裝起來(lái)。這樣封裝的結(jié)果對(duì)程序員來(lái)說(shuō),是一套開(kāi)發(fā)模板(或者說(shuō)模式)。針對(duì)不同的應(yīng)用和目的,程序員采用不同的模板。例如, SDI 應(yīng)用程序的模板, MDI 應(yīng)用程序的模板,規(guī)則 DLL 應(yīng)用程序的模板,擴(kuò)展 DLL 應(yīng)用程序的模板, OLE/ACTIVEX 應(yīng)用程序的模板等等。 總之, MFC 封裝了 Win32 API, OLE API, ODBC API 等底層函數(shù)的功能,并提供更高一層的接口,簡(jiǎn)化了 Windows 編程。同時(shí), MFC 支持對(duì)底層 API的直接調(diào)用。 MFC 提供了一個(gè) Windows應(yīng)用程序開(kāi)發(fā)模式,對(duì)程序的控制主要是由 MFC 框架完成的,而且 MFC 也完成了大部分的功能,預(yù)定義或?qū)崿F(xiàn)了許多事件和消息處理等等。框架或者由其本身處理事件,不依賴(lài)程序員的代碼;或者調(diào)用程序員的代碼來(lái)處理應(yīng)用程序特定的事件。 MDI 應(yīng)用程序的構(gòu)成 用 AppWizard 產(chǎn)生一個(gè) MDI工程 Jia(無(wú) OLE 等支持), AppWizard 創(chuàng)建了一系列文件,構(gòu)成了一個(gè)應(yīng)用程序框架。這些文件分四類(lèi):頭文件( .h),實(shí)現(xiàn)文件 (.cpp),資源文件 (.rc),模塊定義文件 (.def),等。 從 CWinApp、 CDocument、 CView、 CMDIFrameWnd、 CMDIChildWnd 類(lèi)對(duì)應(yīng)地派生出 CJiaApp、CJiaDoc、 CJiaView、 CMainFrame、 CChildFrame 五個(gè)類(lèi),這五個(gè)類(lèi)的實(shí)例分別是應(yīng)用程序?qū)ο蟆⑽臋n對(duì)象、視對(duì)象、主框架窗口對(duì)象和文檔邊框窗 口對(duì)象。主框架窗口包含了視窗口、工具條和狀態(tài)欄。對(duì)這些類(lèi)或者對(duì)象解釋如下。 ( 1)應(yīng)用程序 應(yīng)用程序類(lèi)派生于 CWinApp?;诳蚣艿膽?yīng)用程序必須有且只有一個(gè)應(yīng)用程序?qū)ο螅?fù)責(zé)應(yīng)用程序的初始化、運(yùn)行和結(jié)束。 ( 2)邊框窗口 如果是 SDI 應(yīng)用程序,從 CFrameWnd 類(lèi)派生邊框窗口類(lèi),邊框窗口的客戶(hù)子窗口(MDIClient)直接包含視窗口;如果是 MDI 應(yīng)用程序,從 CMDIFrameWnd 類(lèi)派生邊框窗口類(lèi),邊框窗口的客戶(hù)子窗口 (MDIClient)直接包含文檔邊框窗口。如果要支持工具條、狀態(tài)欄,則派生的邊框 窗口類(lèi)還要添加 CToolBar 和 CStatusBar 類(lèi)型的成員變量,以及在一個(gè) OnCreate消息處理函數(shù)中初始化這兩個(gè)控制窗口。邊框窗口用來(lái)管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協(xié)調(diào)模式狀態(tài)(如上下文的幫助 (SHIFT+F1 模式 )和打印預(yù)覽)。 ( 3)文檔邊框窗口 文檔邊框窗口類(lèi)從 CMDIChildWnd類(lèi)派生, MDI應(yīng)用程序使用文檔邊框窗口來(lái)包含視窗口。 ( 4)文檔 文檔類(lèi)從 CDocument 類(lèi)派生,用來(lái)管理數(shù)據(jù),數(shù)據(jù)的變化、存取都是通過(guò)文檔實(shí)現(xiàn)的。視窗口通過(guò)文檔對(duì)象來(lái)訪問(wèn)和更新數(shù)據(jù)。 ( 5)視 視類(lèi)從 CView 或它的派生類(lèi)派生。視和文檔聯(lián)系在一起,在文檔和用戶(hù)之間起中介作用,即視在屏幕上顯示文檔的內(nèi)容,并把用戶(hù)輸入轉(zhuǎn)換成對(duì)文檔的操作。 ( 6)文檔模板 文檔模板類(lèi)一般不需要派生。 MDI 應(yīng)用程序使用多文檔模板類(lèi) CMultiDocTemplate; SDI應(yīng)用程序使用單文檔模板類(lèi) CSingleDocTemplate。 應(yīng)用程序通過(guò)文檔模板類(lèi)對(duì)象來(lái)管理上述對(duì)象(應(yīng)用程序?qū)ο蟆⑽臋n對(duì)象、主邊框窗口對(duì)象、文檔邊框窗口對(duì)象、視對(duì)象)的創(chuàng)建。 第 8頁(yè) 3 需求分析 系統(tǒng)功能需求分析 需求分析簡(jiǎn)單地說(shuō)就是分析用戶(hù) 的需求。需求分析是設(shè)計(jì)系統(tǒng)的起點(diǎn),需求分析的結(jié)果是否準(zhǔn)確地反映了用戶(hù)的實(shí)際要求,將直接影響到后面各個(gè)階段的設(shè)計(jì),并影響到設(shè)計(jì)結(jié)果是否合理和實(shí)用。 需求分析的任務(wù)是通過(guò)詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象(組織、部門(mén)、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確用戶(hù)的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。 調(diào)查的重點(diǎn)是“數(shù)據(jù)”和“處理”,通過(guò)調(diào)查、收集與分析,獲得用戶(hù)對(duì)數(shù)據(jù)的要求如下: ( 1)圖像的打開(kāi)、關(guān)閉及保存:打開(kāi)并顯示圖像,并在處理過(guò)圖像后關(guān)閉或保存圖像的修改。 ( 2)處理要求。指用戶(hù)要 完成什么處理功能,對(duì)處理的響應(yīng)時(shí)間有什么要求,處理方式是批處理還是其他處理方式,能夠完成圖像一般的編輯處理。 ( 3)處理效果與效率。圖像處理中一個(gè)很重要的問(wèn)題就是如何表示有關(guān)的知識(shí)并以恰當(dāng)?shù)姆绞揭雸D像處理。由于圖像處理任務(wù)的復(fù)雜性,目前要找出一個(gè)通用的方法適應(yīng)各種情況是幾乎不可能的。另一方面,在建立普適的圖像處理方法時(shí),往往會(huì)忽略某類(lèi)圖像具有的特定屬性。相反,針對(duì)某類(lèi)特定問(wèn)題,則可能找到有效的方法。為此,有研究者提出基于對(duì)象圖像處理的概念:限定圖像處理的對(duì)象為幾類(lèi)特殊的圖像( JPG, GIF, BMP),考察 對(duì)象的共有屬性(稱(chēng)為先驗(yàn)),并將其結(jié)合到圖像處理的任務(wù)中以提供更多的信息,從而提升圖像處理的性能、提高處理效果。由于圖像的處理是通過(guò)對(duì)一個(gè)個(gè)像素點(diǎn)進(jìn)行處理,要想提高處理速度就需要尋找一個(gè)快速的處理方法。 本系統(tǒng)是 Windows 應(yīng)用程序,可以進(jìn)行圖像的導(dǎo)入和導(dǎo)出,視圖設(shè)置,附帶和 ACD SEE類(lèi)似功能的圖片編輯器編輯完成以后可以對(duì)修改進(jìn)行保存,可以調(diào)整圖片尺寸,旋轉(zhuǎn)和翻轉(zhuǎn)圖片,圖片增強(qiáng)優(yōu)化,圖像的特效處理以及打印輸出圖片。 系統(tǒng)處理流程分析 在對(duì)系統(tǒng)的組織結(jié)構(gòu)和功能進(jìn)行分析時(shí),需從一個(gè)實(shí)際業(yè)務(wù)流程 的角度將系統(tǒng)調(diào)查中有關(guān)該業(yè)務(wù)流程的資料都串起來(lái)作進(jìn)一步的分析。業(yè)務(wù)流程分析可以幫助我們了解該業(yè)務(wù)的具體處理過(guò)程,發(fā)現(xiàn)和處理系統(tǒng)的調(diào)查工作中的錯(cuò)誤和疏漏,修改和刪除原系統(tǒng)的不合理部分,在新系統(tǒng)基礎(chǔ)上優(yōu)化業(yè)務(wù)處理流程。 業(yè)務(wù)流程圖( transaction flow diagram,簡(jiǎn)稱(chēng) TFD), 就是用一些規(guī)定的符號(hào)及連接來(lái)表示某個(gè)具體的業(yè)務(wù)處理過(guò)程,它是用盡可能少、盡可能簡(jiǎn)單的方法來(lái)描述業(yè)務(wù)處理過(guò)程的方法,由于它的符號(hào)簡(jiǎn)單明了,所以非常易于閱讀和理解業(yè)務(wù)流程。 通過(guò)對(duì)系統(tǒng)的需求分析,系統(tǒng)的基本功能已經(jīng)確定。整 個(gè)系統(tǒng)各個(gè)模塊的業(yè)務(wù)流程,如圖 31所示 : 第 9頁(yè) 圖 31 業(yè)務(wù)流程圖 4 系統(tǒng)總體設(shè)計(jì) 系統(tǒng)功能模塊劃分 數(shù)字圖像處理系統(tǒng)的總體功能模塊如圖 41所示: 圖 41 數(shù)字圖像處理功能模塊劃分 模塊設(shè)計(jì)是對(duì)處理流程圖的注釋性書(shū)面文件,以幫助程序設(shè)計(jì)人員進(jìn)一步了解模塊的功能和設(shè)計(jì)要求,本系統(tǒng)采用 C++語(yǔ)言開(kāi)發(fā),由于計(jì)算機(jī)的硬件和軟件發(fā)展日新月異,所以對(duì)這種語(yǔ)言利用的過(guò)程,也是不斷學(xué)習(xí)的過(guò)程。 數(shù)字圖像處理系統(tǒng)主要分為三個(gè)子模塊,即文件操作模塊、圖像編輯模塊、圖像處理模塊模塊。 第 10頁(yè) 系統(tǒng)的具體的模塊設(shè)計(jì) 如下: :該模塊主要實(shí)現(xiàn)圖像的文件操作,包括打開(kāi)圖像文件、保存圖像文件、圖像文件的打印等操作。 :該模塊主要實(shí)現(xiàn)圖像的編輯操作,包括圖像的復(fù)制、圖像的粘貼、在圖像中添加文字信息等操作。 :該模塊主要實(shí)現(xiàn)圖像的特殊處理與縮放處理,包括圖像的點(diǎn)運(yùn)算、圖像的幾何變換、圖像的增強(qiáng)和復(fù)原處理、圖像的邊緣檢測(cè)和分割、圖像編碼圖像的特效處理等操作。 類(lèi)的設(shè)計(jì) 對(duì)話框類(lèi) 對(duì)話框類(lèi) 類(lèi)名 類(lèi)的作用 CAboutDlg 關(guān)于對(duì)話框類(lèi) 版權(quán)信息顯示 CAddTextDlg 添加文字對(duì)話框類(lèi) 打開(kāi)對(duì)話框添加文字 CDlgArith 算術(shù)編碼對(duì)話類(lèi) 設(shè)置算術(shù)編碼參數(shù)設(shè)置 CDlgBitPlane 位平面編碼對(duì)話框類(lèi) 輸入位平面編碼參數(shù) CDlgHistog 灰度直方圖對(duì)話框類(lèi) 描述圖像灰度級(jí)內(nèi)容 CDlgHuffman 霍夫曼編碼對(duì)話框類(lèi) 顯示霍夫曼碼表 CDlgShannon 香農(nóng) 費(fèi)諾編碼對(duì)話框類(lèi) 顯示香農(nóng) 費(fèi)諾編碼表 CGeoRotaDlg 圖像旋轉(zhuǎn)對(duì)話框類(lèi) 對(duì)圖像旋轉(zhuǎn)度數(shù)設(shè)置 CGlgImageThre 閥值變換對(duì)話框類(lèi) 輸入閥值參數(shù) CImagePro 灰度拉伸對(duì)話框類(lèi) 控制灰度拉伸參數(shù) CMidFilterDlg 中值濾波對(duì)話框類(lèi) 選擇中值濾波模版 CSharpThreDlg 閥值設(shè)定對(duì)話框類(lèi) 輸入閥值分割參數(shù) CGeoZoom 圖像縮放對(duì)話框類(lèi) 實(shí)現(xiàn)縮放大小參數(shù)設(shè)置 CSmoothDlg 圖像平滑對(duì)話框類(lèi) 選擇圖像平滑模版 CMyDIB、 CBmpShow、 CRectTrackerEx 類(lèi) MFC 類(lèi)庫(kù)中實(shí)現(xiàn)了對(duì) GDI 位圖操作的 CBitmap 類(lèi),但是沒(méi)有封裝處理 DIB( DeviceIndependent Bitmap 設(shè)備無(wú)關(guān)位圖)位 圖操作的相關(guān) Windows API 類(lèi),CMyDIB 類(lèi)就是采用面向?qū)ο蟮乃枷雽?shí)現(xiàn)了對(duì)該類(lèi)函數(shù)以及數(shù)字圖像處理算法的封裝。實(shí)現(xiàn)的功能主要有以下幾個(gè)方面: ( 1) 讀取 BMP 圖像文件; ( 2) 獲取圖像的相關(guān)信息; ( 3)顯示圖像; ( 4)保存圖像 ( 5)圖像處理的各種算法實(shí)現(xiàn)。 CBmpShow、 CRectTrackerEx 類(lèi)主要是實(shí)現(xiàn)了圖像文本的插入處理。 系統(tǒng)框架類(lèi) CJiaApp、 CJiaDoc、 CJiaView、 CMainFrame、 CChildFrame 五個(gè)類(lèi) 主要實(shí)現(xiàn)了應(yīng)用程序的框架及框架內(nèi)部的各種邏輯、消息響應(yīng)機(jī)制。 第 11頁(yè) 5 系統(tǒng)的詳細(xì)設(shè)計(jì) 根據(jù)前面對(duì)系統(tǒng)所需實(shí)現(xiàn)功能的分析和系統(tǒng)結(jié)構(gòu)設(shè)計(jì),現(xiàn)將對(duì)系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),逐步實(shí)現(xiàn)系統(tǒng)的各個(gè)功能模塊。 文件模塊的設(shè)計(jì) ( 1)文件操作模塊 文件操作模塊是整個(gè)系統(tǒng)中最基本的組成成分。文件操作模塊主要實(shí)現(xiàn)圖像文件的打開(kāi)、打印、修改后的保存以及圖像文件的另存為操作。 通過(guò)對(duì)用戶(hù)的需求分析得出文件操作模塊的功能結(jié)構(gòu)圖,文件操作模塊的功能結(jié)構(gòu)圖如圖 51所示: 圖 51 文件操作模塊功能結(jié)構(gòu)圖 應(yīng)用程序的的啟動(dòng)界面如圖 52 所示: 圖 52 圖像啟動(dòng)界面 程序的啟動(dòng)界面由 CSplashWnd 類(lèi)實(shí)現(xiàn),在 CSplashWnd 類(lèi)中的 OnCreate 函數(shù)中的定時(shí)器 SetTimer(1, 2750, NULL)設(shè)置的定時(shí)間隔就是啟動(dòng)畫(huà)面的顯示的時(shí)間,該系統(tǒng)設(shè)置的顯示時(shí)間是 2750ms,然后發(fā)送 WM_TIMER 消息,隱藏啟動(dòng)畫(huà)面;如果系統(tǒng)收到鍵盤(pán)或者鼠標(biāo)單擊消息時(shí)也會(huì)自動(dòng)隱藏啟動(dòng)畫(huà)面。 ( 2)文件打開(kāi)功能的實(shí)現(xiàn),其文件打開(kāi)界面如圖 53 所示: 文件操作模塊 圖像打開(kāi) 圖像保存 圖像打印 第 12頁(yè) 圖 53 文件打開(kāi)界面 通過(guò)文檔 — 視 圖結(jié)構(gòu)簡(jiǎn)化了數(shù)據(jù)操作和數(shù)據(jù)顯示,文檔只負(fù)責(zé)數(shù)據(jù)管理,不涉及用戶(hù)界面;視只負(fù)責(zé)數(shù)據(jù)輸出和用戶(hù)界面的交互,可以不考慮應(yīng)用程序的數(shù)據(jù)是如何組織的。通過(guò)文檔 JDoc 類(lèi)中的 OnOpenDocument(LPCTSTR lpszPathName)函數(shù)實(shí)現(xiàn)對(duì)文件的打開(kāi),而在視圖 JiaView 類(lèi)中實(shí)現(xiàn)圖像的顯示。 ( 3)圖像的保存 圖像的保存也是在文檔類(lèi)實(shí)現(xiàn),首先聲明了 CMyDIB 類(lèi)的指針變量 m_pDibImage,經(jīng)過(guò)保存對(duì)話框后,程序接下來(lái)調(diào)用成員函數(shù) m_pDibImageSaveDIB(m_hDIB, file)將圖像存為指定文件。另外,一旦將文件更名保存,就需要將該圖像所屬的子窗口標(biāo) 題 欄 中 的 標(biāo) 題 更 名 為 新 的 文 件 名 , 此 項(xiàng) 任 務(wù) 由 成 員 函 數(shù)pChildFrameSetWindowText()負(fù)責(zé)。 ( 4)圖像的打印 圖像的打印實(shí)現(xiàn),通過(guò) IsPrinting()函數(shù)判斷 CDC 對(duì)象是否是指向設(shè)備上向下文環(huán)境的對(duì)象,如果是,則執(zhí)行如下代碼實(shí)現(xiàn)打?。? // 獲取打印頁(yè)面的水平寬度 (象素 ) int cxPage = pDCGetDeviceCaps(HORZRES)。 // 獲取打印頁(yè)面的垂直高度 (象素 ) int cyPage = pDCGetDeviceCaps(VERTRES)。 // 獲取打印機(jī)每英寸象素?cái)?shù) int cxInch = pDCGetDeviceCaps(LOGPIXELSX)。 int cyInch = pDCGetDeviceCaps(LOGPIXELSY)。 // 計(jì)算打印圖像大?。s放,根據(jù)頁(yè)面寬度調(diào)整圖像大?。? = = 0。 = (int)(((double)cyDIB * cxPage *
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1