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

正文內(nèi)容

基于vc++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(文件)

2025-12-27 02:23 上一頁面

下一頁面
 

【正文】 表 。對于 C++程序而言,設(shè)計(jì)孤立的類比較容易,難的是正確設(shè)置其基類及派生類。 ( 4) 提供 DIB的空間、顏色和格式特征等信息。但是這樣做有諸多的不適,首先, CBitmap類是為 DDB的操作而設(shè)計(jì)的,其中沒有處理 DIB的功能,故 CDib類不能從中繼承任何可用的功能;其次, CBitmap類是從 CGdiObject中派生出來的, CBitmap類以及它從 CGdiObject類繼承來的數(shù)據(jù)成員和功能函數(shù)對 CDib來說都是不合適的,也是多余的。如果從 CObject類來派生,則可以繼承該類的這種特性。 Lpbi = (LPBITMAPINFO)G lobalLock(HDIB): Lpbih = (LPBITMAPINFOHEADER)lp bi。操作函數(shù)類定義了對 DIB文件的各類實(shí)際操作和變換,這個(gè)類的函數(shù)可以改寫 DIB的數(shù)基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 23 據(jù)所以是個(gè)核心函數(shù)類 。每個(gè)菜單項(xiàng)所對應(yīng)的 ID是唯一的, Caption字段中包含實(shí)際顯示在菜單中的文本, Prompt字段是用戶“瀏覽”某個(gè)菜單項(xiàng)時(shí)希望顯示在窗口底端狀態(tài)欄中的文本。在系統(tǒng)中設(shè)置了新類 CChildview,子窗口菜單由此新類來處理。 VC++集成調(diào)試程序的兩個(gè)重要特征是將斷點(diǎn)插入到程序代碼中的能力以及逐步執(zhí)行(一次執(zhí)行一條指令)程序代碼的能力。首先,可以在源文件內(nèi)的任意位置設(shè)置斷點(diǎn),如注釋行,括號等,然而,當(dāng)在注釋行、括號等行 設(shè)置斷點(diǎn)后 VC++并不執(zhí)行編譯。如果單擊斷點(diǎn)旁邊這一對號,則斷點(diǎn)被禁用。 Debug菜單中的很多分步命令都有快捷鍵,可簡化程序的執(zhí)行。另一類則是對這種原始像素點(diǎn)構(gòu)成的原始輸入樣本再作進(jìn)一步的預(yù)處理或變換。而本文是通過大量的樣本訓(xùn)練網(wǎng)絡(luò),以達(dá)到預(yù)期的識別率。 二值化 二值化處理是將數(shù)字圖像轉(zhuǎn)化為由 0和 1表示的值像素矩陣形式,最簡單也是最原始的作法是將整個(gè)數(shù)字所在區(qū)域用 n*n網(wǎng)格劃分,然后將數(shù)字筆劃通過的網(wǎng)格內(nèi)填 1,不通過的網(wǎng)格內(nèi)填 0,這樣就將整個(gè)數(shù)字變?yōu)橐粋€(gè)由二值構(gòu)成的矩陣。有劃的部分 g(i,j)小 ,白背景部分 g(i,j)大。,...,2,1,0 ,1, ????? 為空白當(dāng) 為筆畫當(dāng) ( ) 二值化的關(guān)鍵在于閾值 T的選擇。 平滑 實(shí)際獲得的圖像在形成、傳輸、接受和處理的過程中,不可避免地存在著外部干擾和內(nèi)部干擾,如光點(diǎn)轉(zhuǎn)換過程中敏感元件靈敏度的不均勻性,數(shù)字化過程的量化噪聲,傳輸過程中的誤差以及人為因素等,均會(huì)使圖像質(zhì)量變差,使圖像模糊。 中值濾波 是一種對干擾脈沖和點(diǎn)狀噪聲有良好抑制作用,而對圖像邊緣能較好保持的非現(xiàn)行圖像增強(qiáng)技術(shù)。 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 27 一維中值濾波的概念很容易推廣到二維。從以往的經(jīng)驗(yàn)看,方形或圓形窗口適宜于外廓線繳長的物體圖像,十字形窗口優(yōu)選與有尖頂角物體的圖像。此外還有疊代操作,就是對輸入圖像重復(fù)進(jìn)行同樣的中值濾波,直到它不 再有變化為止。它是早期視覺理論和算法中的基本問題,也是中期和后期視覺成敗的重要因素之一。 對離散圖像而言,可用差分近似表示上式,一種常用的近似關(guān)系式是: ? ?? ? ? ? ? ?? ? ? ? ? ?? ?? ? 2122 1,1, ?????? kjFkjFkjFkjFkjFG () 為便于編程和提高運(yùn)算精度,在某些場合可進(jìn)一步簡化為: ? ?? ? ? ? ? ? ? ? ? ?1,1, ?????? kjFkjFkjFkjFkjFG () 還有一種羅伯特梯度的算子,表達(dá)式是: ? ?? ? ? ? ? ?? ? ? ? ? ?? ?? ? 2122 1,11,1, ???????? kjFkjFkjFkjFkjFG () 對應(yīng)的絕對值表達(dá)式是: ? ?? ? ? ? ? ? ? ? ? ?1,11,1, ???????? kjFkjFkjFkjFkjFG () ( )式和( )式中各因子之間的關(guān)系分別如圖 ( a)( b)所描述。但是 F(j,k)均勻的區(qū)域,因梯度值 G[F(j,k)]很?。O端情況下甚至為 0),會(huì)表現(xiàn)出暗的特性,這在有些場合是不適宜的。 給邊緣規(guī)定一個(gè)特定的灰度級,即 ? ?? ?? ?? ? ? ?? ???? ??? TkjFGkjF TkjFGLkjG ,。熟悉梯度的這些性質(zhì),根據(jù)不同的目的選擇不同的算法,就能獲得滿意的銳化效果。 通??梢砸罁?jù)兩種原則進(jìn)行分割。 本設(shè)計(jì)中選擇使用基于灰度閾值的全局閾值化方法 . 這是一種最常用、同時(shí)也是最簡單的分割方法,它特別適用于對象和背景占據(jù)不同灰度級范圍這類圖像。 規(guī)格化 由于樣本數(shù)字大小不一,為了便于提取數(shù)字特征,需要對樣本進(jìn)行尺寸大小規(guī)一化,或者說是將數(shù)字的長度和寬度都調(diào)整到充滿整個(gè) n*n的網(wǎng)格之中。即將字符中的粗細(xì)不等的筆劃變換成只有一層像素點(diǎn)構(gòu)成的統(tǒng)一的筆劃。對傳統(tǒng)的識別系統(tǒng),這種樣本不能直接進(jìn)行識別,以上的步驟只是為特征提取選擇打下基礎(chǔ)。 對于不同數(shù)字的外圍或邊緣及主干特征并沒有考慮進(jìn)去,這樣對一些有相似部分的數(shù)字容易出現(xiàn)誤識。每個(gè) 字符被分成 8*8的小塊進(jìn)行數(shù)字化,分別用一個(gè)向量來表示。如圖 46所示 。共有兩類這樣的數(shù)據(jù)作為輸入 :一類是在理想的狀態(tài)下的信號 。 BP 網(wǎng)絡(luò)在數(shù)字識別中的應(yīng)用 BP 算法的流程圖如下 圖所示。但是,這種簡單的原始二值表達(dá)式在代表數(shù)字時(shí)有下面幾點(diǎn)不足 : 樣本維數(shù)很大,而中間許多特征不一定有用 。關(guān)于細(xì)化及快速細(xì)化的算法有許多,比如快速細(xì)化算法 QA,Rutorit算法 (簡稱 RA),Hildith算法 (簡稱 HA)等。因而人們認(rèn)為在二值化的字符圖像中,對識別有價(jià)值的字符特征主要集中在字符的輪廓或者骨架上。超過閾值的重新分配以最大灰度 (例如 255),低于閾值的分配基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 31 以最小灰度 (例如 0),那么,我們就可以組成一個(gè)新的二值圖像,并 成功地把對象從背景中顯露出來。一是依據(jù)同一區(qū)域具有相似的灰度 (或組織特性 )這一特征,尋求不同區(qū)域之邊界。在這些應(yīng)用中,給出的數(shù)字往往是互相牽連,并且常帶有覆蓋相交叉,所以為了獲得可以進(jìn)行識別的輸入樣本表達(dá),必須進(jìn)行數(shù)字之間的分離,消除不必要的記號和符號。, ? ( ) 給背景規(guī)定特定的灰度級 ? ?? ?? ? ? ?? ?? ?? ???? ??? TkjFGL TkjFGkjFGkjGb , ( ) 二值圖像 ? ?? ?? ? ? ?? ?? ?? ???? ??? TkjFGL TkjFGkjFGkjGb , ( ) 梯度是向量,各向同性,梯度方向?qū)?yīng)與 F(j,k)最大變化率方向上,即 ? ? ? ??????? ????? j kjFk kjFQ ,/,a rc t a n ( ) 梯度幅度比例于相鄰像素的灰度級差值。, ,。( )式是沿水平軸和垂直軸兩個(gè)方向的微分和,( ) 是取正反旋轉(zhuǎn) 45度兩個(gè)方向的微分的和。 在設(shè)計(jì)中我選擇使用了梯度銳化法 . 對圖像函數(shù) F(j,k),其在點(diǎn) (j,k)上的梯度定義為矢量 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 29 ? ?? ??????????????????kFjFkjFG , () G(j,k)的幅度為 ? ?? ? 2122,???????? ????????????????????kFjFkjFG () 在后面的討論中,均以上式為基礎(chǔ)。 對離散階躍信號,斜升信號不產(chǎn)生影響,連續(xù)個(gè)數(shù)小于窗口長度一半的高 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 28 圖 42 中值濾波示例 ( a)階躍( b)斜坡( c)單脈沖( d)雙脈沖( e)三脈沖( f)三角形 離散脈沖將被平滑,三角函數(shù)的頂部平坦化(見圖 42) 令 C 為常數(shù),則 ? ? ? ?? ? ? ?? ? ? ? ? ?jkjkjkjk jkjkjkjkfM e dFM e dfFM e dFM e dCFCM e dFC M e dCFM e d??????? () 中值濾波后,信號 頻譜基本不變。一種方法是先使用小尺寸窗口,后逐漸加大窗口尺寸,直到中值濾波器的壞處多于好處為止。二維中值濾波器的窗口形狀可以有多種,如線狀,方形,十字形,圓形,菱形等(見圖 41)。記做 ? ?viivii FFFM edG ??? ,. .. ,. .. , Med{*}表示取窗口中值。圖像平滑的目的有兩個(gè):改善圖像的質(zhì)量和抽出對象的特征。本設(shè)計(jì)中二值化選擇的閾值為 選擇方法有整體閾值二值化、局部閾值二值化和動(dòng)態(tài)閾值二值化等。否則看成筆劃,以 1表示。因而,二值化的工作不再是簡單的筆劃通過與否。紙張薄厚、潔白度、光潔度、書寫力度和筆劃質(zhì)量都要造成字形的變化,產(chǎn)生污點(diǎn)、飛白、斷筆、交連等干擾。 對于數(shù)字的預(yù)處理,人們己作了許多工作,但歸根結(jié) 底有下面幾步 : 首先是將數(shù)字轉(zhuǎn)化為 n*n像素點(diǎn)矩陣形式,再經(jīng)二值化處理,可以得到原始的輸入表達(dá)方式。 表 43 單步執(zhí)行命令的快捷鍵 命令 快捷鍵 Step Over F10 Run to Cursor(運(yùn)行到光標(biāo)處 ) Ctrl+F10 Step Into(步進(jìn)到) F11 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 25 Step Out(步出) Shift+F11 像預(yù)處理 神經(jīng)網(wǎng)絡(luò)為數(shù)字識別提供一個(gè)強(qiáng)有力的手段。 除了使用斷點(diǎn)外,還可以使用 Debug菜單上的 Break選項(xiàng)隨時(shí)中斷程序執(zhí)行。 既可以啟用斷點(diǎn),也可以禁用斷點(diǎn)。 Visual Studio在相應(yīng)的行左邊放置一個(gè)大紅點(diǎn)來表示斷點(diǎn)。 VC應(yīng)用中 很重要的一點(diǎn)是要學(xué)會(huì)如何調(diào)試程序,程序如此龐大如果不回調(diào)試程序,哪里出了錯(cuò)是很難找到的。 MFC默認(rèn)的菜單項(xiàng)是屬于 CMmainFrame類的,名稱為 IDR_MAINFRAME. 基于 VC++的數(shù)字識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 24 創(chuàng)建一個(gè)菜單資源后,下一步的運(yùn)行 ClassWizard,為各個(gè)菜單項(xiàng)創(chuàng)建代碼,ClassWizard將各個(gè)菜單項(xiàng)作為一個(gè)由 C++類表示的獨(dú)立用戶界面元素。 DIB處理函數(shù)集的各個(gè)函數(shù)的名稱和功能說明如表 42所示 : 表 42 DIB 處理函數(shù)集各個(gè)函數(shù) 函數(shù)類型 函數(shù)名稱 功能 初 始 化 函 數(shù) CreateDIB 創(chuàng)建一個(gè)空的 DIB CreateDefaultDIB 用當(dāng)前的系統(tǒng)調(diào)色板創(chuàng)建一個(gè)空的 DIB DestroyDIB 釋放 DIB 內(nèi)存塊 LoadDIB 從 DIB 文件裝載 DIB 數(shù)據(jù) SaveDIB 將 DIB 存到文件中 ReadDIBFile 讀 DIB 文件到內(nèi)存中 屬 性 函 數(shù) BytesPerLine 獲取 DIB 每行所占的字節(jié)數(shù) DIBlockSize 獲取 DIB 數(shù)據(jù)塊的大小 DIBHeight 獲取 DIB 的高度 DIBWidth 獲取 DIB 寬度 DIBNumColors 獲取 DIB 的顏色數(shù) DIBBitsCount 獲取 DIB 的圖象顏色位數(shù) FindDIBBits 獲取 DIB 數(shù)據(jù)塊的地址(指針) PaletteSize 獲取 DIB 調(diào)色板的顏色表項(xiàng)數(shù) 操 作 函 數(shù) DIBToDIBSection 將 DIB 數(shù)據(jù)塊轉(zhuǎn)換為 DIBSELECTION DIBSectionToDIB 將 DIBSELECTION 轉(zhuǎn)換為 DIB 數(shù)據(jù)塊 ConvertDIBFormat 修改 DIB 的格式 BitmapToDIB 將 DDB 轉(zhuǎn)換為 DIB ChangeBitmapFormat 修改 DDB 的格式 DIBToBitmap 將 DIB 轉(zhuǎn)換為 DDB ChangeDIBFormat 基于當(dāng)前的系統(tǒng)調(diào)色板修改 DIB 的格式 Threshold 圖象二值化 CharSegmen
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1