97骚碰,毛片大片免费看,亚洲第一天堂,99re思思,色好看在线视频播放,久久成人免费大片,国产又爽又色在线观看

歡迎來(lái)到瑞文網(wǎng)!

數字圖像處理實(shí)驗報告

時(shí)間:2021-11-17 18:27:19 數字圖像處理實(shí)驗報告 我要投稿

數字圖像處理實(shí)驗報告

  一、數字圖像處理的簡(jiǎn)介

  數字圖像處理(Digital Image Processing)是通過(guò)計算機對圖像進(jìn)行去除噪聲、增強、復原、分割、提取特征等處理的方法和技術(shù)。數字圖像處理的產(chǎn)生和迅速發(fā)展主要受三個(gè)因素的影響:

  一是計算機的發(fā)展;

  二是數學(xué)的發(fā)展(特別是離散數學(xué)理論的創(chuàng )立和完善);

  三是廣泛的農牧業(yè)、林業(yè)、環(huán)境、軍事、工業(yè)和醫學(xué)等方面的應用需求的增長(cháng)。

  數字圖像處理實(shí)驗報告

  隨著(zhù)個(gè)人素質(zhì)的提升,需要使用報告的情況越來(lái)越多,通常情況下,報告的內容含量大、篇幅較長(cháng)。你還在對寫(xiě)報告感到一籌莫展嗎?以下是小編整理的數字圖像處理實(shí)驗報告,僅供參考,希望能夠幫助到大家。

  數字圖像處理實(shí)驗報告1

  一、實(shí)驗內容:

  主要是圖像的幾何變換的編程實(shí)現,具體包括圖像的讀取、改寫(xiě),圖像平移,圖像的鏡像,圖像的轉置,比例縮放,旋轉變換等,具體要求如下:

  1、編程實(shí)現圖像平移,要求平移后的圖像大小不變;

  2、編程實(shí)現圖像的鏡像;

  3、編程實(shí)現圖像的轉置;

  4、編程實(shí)現圖像的比例縮放,要求分別用雙線(xiàn)性插值和最近鄰插值兩種方法來(lái)實(shí)現,并比較兩種方法的縮放效果;

  5、編程實(shí)現以任意角度對圖像進(jìn)行旋轉變換,要求分別用雙線(xiàn)性插值和最近鄰插值兩種方法來(lái)實(shí)現,并比較兩種方法的旋轉效果。

  二、實(shí)驗目的和意義:

  本實(shí)驗的目的是使學(xué)生熟悉并掌握圖像處理編程環(huán)境,掌握圖像平移、鏡像、轉置和旋轉等幾何變換的方法,并能通過(guò)程序設計實(shí)現圖像文件的讀、寫(xiě)操作,及圖像平移、鏡像、轉置和旋轉等幾何變換的程序實(shí)現。

  三、實(shí)驗原理與主要框架:

  3.1實(shí)驗所用編程環(huán)境:

  VisualC++(簡(jiǎn)稱(chēng)VC)是微軟公司提供的基于C/C++的應用程序集成開(kāi)發(fā)工具、VC擁有豐富的功能和大量的擴展庫,使用它能有效的創(chuàng )建高性能的Windows應用程序和Web應用程序。

  VC除了提供高效的C/C++編譯器外,還提供了大量的可重用類(lèi)和組件,包括著(zhù)名的微軟基礎類(lèi)庫(MFC)和活動(dòng)模板類(lèi)庫(ATL),因此它是軟件開(kāi)發(fā)人員不可多得的開(kāi)發(fā)工具。

  VC豐富的功能和大量的擴展庫,類(lèi)的重用特性以及它對函數庫、DLL庫的支持能使程序更好的模塊化,并且通過(guò)向導程序大大簡(jiǎn)化了庫資源的使用和應用程序的開(kāi)發(fā),正由于VC具有明顯的優(yōu)勢,因而我選擇了它來(lái)作為數字圖像幾何變換的開(kāi)發(fā)工具。

  在本程序的開(kāi)發(fā)過(guò)程中,VC的核心知識、消息映射機制、對話(huà)框控件編程等都得到了生動(dòng)的體現和靈活的應用。

  3.2實(shí)驗處理的對象:256色的BMP(BITMAP)格式圖像

  BMP(BITMAP)位圖的文件結構:

  具體組成圖:BITMAPFILEHEADER

  位圖文件頭

  (只用于BMP文件)bfType=”BM”bfSizebfReserved1

  bfReserved2

  bfOffBits

  biSize

  biWidth

  biHeight

  biPlanes

  biBitCount

  biCompression

  biSizeImage

  biXPelsPerMeter

  biYPelsPerMeter

  biClrUsed

  biClrImportant

  1、BMP文件組成

  BMP文件由文件頭、位圖信息頭、顏色信息和圖形數據四部分組成。

  2、BMP文件頭

  BMP文件頭數據結構含有BMP文件的類(lèi)型(必須為BMP)、文件大小(以字節為單位)、位圖文件保留字(必須為0)和位圖起始位置(以相對于位圖文件頭的偏移量表示)等信息。

  3、位圖信息頭

  BMP位圖信息頭數據用于說(shuō)明位圖的尺寸(寬度,高度等都是以像素為單位,大小以字節為單位,水平和垂直分辨率以每米像素數為單位),目標設備的級別,每個(gè)像素所需的位數,位圖壓縮類(lèi)型(必須是0)等信息。

  4、顏色表

  顏色表用于說(shuō)明位圖中的顏色,它有若干個(gè)表項,每一個(gè)表項是一個(gè)RGBQUAD

  類(lèi)型的結構,定義一種顏色、具體包含藍色、紅色、綠色的亮度(值范圍為0-255)

  位圖信息頭和顏色表組成位圖信息

  5、位圖數據

  位圖數據記錄了位圖的每一個(gè)像素值,記錄順序是在掃描行內是從左到右,掃描行之間是從下到上。

  Windows規定一個(gè)掃描行所占的字節數必須是4的倍數(即以long為單位),不足的以0填充。

  3.3BMP(BITMAP)位圖的顯示:

 、僖话泔@示方法:

  1、申請內存空間用于存放位圖文件

  2、位圖文件讀入所申請內存空間中

  3、在函數中用創(chuàng )建顯示用位圖,用函數創(chuàng )建兼容DC,用函數選擇顯示刪除位圖

  但以上方法的.缺點(diǎn)是:1)顯示速度慢;

  2)內存占用大;

  3)位圖在縮小顯示時(shí)圖形失真大,(可通過(guò)安裝字體平滑軟件來(lái)解決);

  4)在低顏色位數的設備上(如256顯示模式)顯示高顏色位數的圖形(如真彩色)圖形失真嚴重。

 、贐MP位圖縮放顯示:

  用視頻函數來(lái)顯示位圖,內存占用少,速度快,而且還可以對圖形進(jìn)行淡化(Dithering)處理、淡化處理是一種圖形算法,可以用來(lái)在一個(gè)支持比圖像所用顏色要少的設備上顯示彩色圖像、BMP位圖顯示方法如下:

  1、打開(kāi)視頻函數,一般放在在構造函數中

  2、申請內存空間用于存放位圖文件

  3、位圖文件讀入所申請內存空間中

  4、在函數中顯示位圖

  5、關(guān)閉視頻函數,一般放在在析構函數中

  以上方法的優(yōu)點(diǎn)是:

  1)顯示速度快;

  2)內存占用少;

  3)縮放顯示時(shí)圖形失真;

  4)在低顏色位數的設備上顯示高顏色位數的圖形圖形時(shí)失真;

  5)通過(guò)直接處理位圖數據,可以制作簡(jiǎn)單動(dòng)畫(huà)。

  3.4程序中用到的訪(fǎng)問(wèn)函數

  Windows支持一些重要的DIB訪(fǎng)問(wèn)函數,但是這些函數都還沒(méi)有被封裝到MFC中,這些函數主要有:

  1、SetDIBitsToDevice函數:該函數可以直接在顯示器或打印機上顯示DIB、在顯示時(shí)不進(jìn)行縮放處理。

  2、StretchDIBits函數:該函數可以縮放顯示DIB于顯示器和打印機上。

  3、GetDIBits函數:還函數利用申請到的內存,由GDI位圖來(lái)構造DIB、通過(guò)該函數,

  可以對DIB的格式進(jìn)行控制,可以指定每個(gè)像素顏色的位數,而且可以指定是否進(jìn)行壓縮。

  4、CreateDIBitmap函數:利用該函數可以從DIB出發(fā)來(lái)創(chuàng )建GDI位圖。

  5、CreateDIBSection函數:該函數能創(chuàng )建一種特殊的DIB,稱(chēng)為DIB項,然后返回一個(gè)GDI位圖句柄。

  6、LoadImage函數:該函數可以直接從磁盤(pán)文件中讀入一個(gè)位圖,并返回一個(gè)DIB句柄。

  7、DrawDibDraw函數:Windows提供了窗口視頻(VFW)組件,VisualC++支持該組件、VFW中的DrawDibDraw函數是一個(gè)可以替代StretchDIBits的函數、它的最主要的優(yōu)點(diǎn)是可以使用抖動(dòng)顏色,并且提高顯示DIB的速度,缺點(diǎn)是必須將VFW代碼連接到進(jìn)程中、

  3.5圖像的幾何變換

  圖像的幾何變換,通常包括圖像的平移、圖像的鏡像變換、圖像的轉置、圖像的縮放和圖像的旋轉等。

  數字圖像處理實(shí)驗報告2

  一、實(shí)驗的目的和意義

  實(shí)驗目的:本實(shí)驗內容旨在讓學(xué)生通過(guò)用VC等高級語(yǔ)言編寫(xiě)數字圖像處理的一些基本算法程序,來(lái)鞏固和掌握圖像處理技術(shù)的基本技能,提高實(shí)際動(dòng)手能力,并通過(guò)實(shí)際編程了解圖像處理軟件的實(shí)現的基本原理。為學(xué)生進(jìn)一步學(xué)習數字攝影測量、遙感和地理信息系統等專(zhuān)業(yè)課程以及應用圖像處理解決實(shí)際問(wèn)題奠定基礎。

  二、實(shí)驗原理和方法

  (1)Raw格式到BMP格式的轉換:

  Raw格式:Raw格式文件是按照數字圖像組成的二維矩陣,將像素按行列號順序存儲在文件中。這種文件只含有圖像像素數據,不含有信息頭,因此,在讀圖像時(shí),需要根據文件大小,計算圖像所包含的行列號,或者需要事先知道圖像大小(矩陣大小)。RAW文件按圖像上行到下行、左列到右列順序存儲。

  BMP格式:BMP文件數據區按圖像上下行到上行、左列列到右列順序存儲到數據區。BMP文件由文件頭、信息頭、顏色表、數據區四個(gè)部分組成。

  做Raw格式文件到BMP格式文件的轉化,先要為BMP格式文件申請四部分的內存:文件頭,位圖信息頭,顏色表,圖象數據,然后根據輸入值以及Raw文件信息,BMP格式文件信息計算出這幾部分的值,賦給他們,寫(xiě)到BMP文件中去。

  (2)灰度圖象的線(xiàn)性拉伸:

  灰度變化是點(diǎn)運算,將原圖象的每個(gè)像素的灰度值改成線(xiàn)性變化之后的灰度即可。

  灰度的線(xiàn)性變換就是指圖像的中所有點(diǎn)的灰度按照線(xiàn)性灰度變換函數進(jìn)行變換;叶茸儞Q方程如下:

  該方程為線(xiàn)性方程。式中參數為輸入圖像的像素的灰度值,參數為輸出圖像的灰度值。

  設原圖象的灰度范圍為[a,b],變化之后的范圍為[a’,b’],則:

  fA=(b’-a’)/(b-a)

  fB=-(b’-a’)/(b-a)*a+a’

  如果算出來(lái)的值大于255,則讓它等于255,小于0則讓其等于0。

  (3)局部處理(3*3高通濾波,3*3低通濾波):

  局部處理在處理某一像素時(shí),利用與該像素相鄰的一組像素,經(jīng)過(guò)某種變換得到處理后圖像中某一點(diǎn)的像素值。目標像素的鄰域一般是由像素組成的二維矩陣,該矩陣的大小為奇數,目標像素位于該矩陣的中央,即目標像素就是區域的中心像素。經(jīng)過(guò)處理后,目標像素的值為經(jīng)過(guò)特定算法計算后所得的結果。

  實(shí)際上都是利用卷積來(lái)實(shí)現的,卷積往往用一個(gè)矩陣表示,將矩陣的中心對齊某個(gè)像素,矩陣中的值乘到相應的像素中去,然后將所有乘積加起來(lái)就得到中心像素的灰度值。邊界像素不做處理,仍為原來(lái)的灰度值。求出的像素灰度值若超過(guò)[0~255],則向離其最近的屬于該范圍的像素值靠攏。

  (4)圖象幾何處理(圖象平移,圖象縮放):

  對于圖像平移來(lái)說(shuō),若平移量是(tx,ty),像素在原圖像中的坐標為(x0,y0),則變化后的坐標為(x1,y1),x1=x0+tx,y1=y0+ty。平移只需改變像素的灰度值,不必改變位圖信息頭和調色板內容。

  對于圖像縮放,假設放大因子為ratio,縮放的變換矩陣為:

  圖像信息頭中新圖像的寬度和高度都變?yōu)樵瓉?lái)寬度和高度分別與水平垂直比例的乘積,圖像大小變?yōu)樾聦挾?變?yōu)?的整數倍)與新高度的乘積。

  (5)灰度圖象中值濾波:

  中值濾波也屬于局部處理的一種,將窗口中的各個(gè)像素排序之后排序,取中值賦給模板中心的像素,所以窗口中個(gè)數一般是基數。

  我用的中值濾波窗口是十字絲的9個(gè)數的窗口。

  (6)灰度圖象邊緣檢測:

  邊緣檢測有三種算子:Roberts,Prewit,Sobel。三種算子都是做一階差分的,通過(guò)算子算出各個(gè)像素的梯度值,將水平梯度的絕對值和垂直梯度的絕對值相加,若此梯度值大于某個(gè)閾值,則將其灰度值賦為255,否則賦為0。

  (7)圖象旋轉:

  圖像旋轉一般是以圖像中心為中心順時(shí)針旋轉,利用圖像的四個(gè)角點(diǎn)求出圖像旋轉后的大小。

  先計算以圖像中心為原點(diǎn)坐標系下原圖像四個(gè)角點(diǎn)的坐標值,按照旋轉矩陣計算其旋轉之后的坐標值,根據四個(gè)角點(diǎn)的新坐標值計算出最大寬度和高度作為新圖像的寬度和高度值,按照計算值修改位圖信息頭,申請一塊新內存,存儲旋轉后圖像的灰度值。

  旋轉矩陣如下:

  同樣要求各個(gè)像素在原圖像中的坐標,先將新圖像的坐標系平移到圖像中心,做逆時(shí)針旋轉,然后再平移到屏幕左上角,然后將原圖像對應坐標的值賦給新圖像。

  (8)圖象二值化:

  判斷分析法:假定圖像的灰度區間為[0,L-1],則選擇一閾值T將圖像的像素分為兩組。

  為最大值所對應的T,就是所求判斷分析法的分割閾值。

  搜尋到閾值之后,灰度值小于閾值的像素賦0,其他的賦1,修改文件信息頭,調色板,申請新內存。

  (9)圖象直方圖:

  統計各灰度值出現的頻數,以及像素的總個(gè)數,用頻數除以總個(gè)數作為頻率,以灰度值作為橫坐標,頻率作為縱坐標繪圖。

  三、實(shí)驗過(guò)程和步驟

  首先要建立一個(gè)基于MFC的多文檔工程,將視圖基類(lèi)改為滾動(dòng)視圖,以自己的學(xué)號命名。

  我用的是書(shū)上給的CDib類(lèi),類(lèi)里面有獲取BMP寬度,高度的函數,有指向位圖信息頭的指針,指向圖象數據的指針,因此我在文檔類(lèi)(Doc類(lèi))里定義了一個(gè)CDib類(lèi)的對象,打開(kāi)以及保存文件的時(shí)候利用這個(gè)對象去調用CDib里讀取與存儲文件的函數,并且可以利用這個(gè)對象的兩個(gè)指針對打開(kāi)的圖象進(jìn)行各種操作。

  1、Raw格式到BMP格式的轉換:

  首先建立一個(gè)RawToBMP的對話(huà)框,在上面加上四個(gè)編輯框(一個(gè)輸入打開(kāi)文件的路徑一個(gè)輸入保存文件的路徑,另兩個(gè)),兩個(gè)按鈕,以及默認的確認,取消按鈕。利用類(lèi)向導插入此對話(huà)框類(lèi),并且為前兩個(gè)編輯框定義CString的兩個(gè)變量,用來(lái)存儲打開(kāi)與保存文件的路徑。同時(shí)為兩個(gè)瀏覽按鈕添加消息響應函數,在消息函數里創(chuàng )建CFileDialog對象,利用此對象的函數將兩個(gè)路徑值賦給前兩個(gè)編輯框的成員變量。再為OK鍵添加消息響應函數,分別定義BMP格式文件前三部分數據變量,計算出各變量的值,并且利用一個(gè)CFile對象獲取Raw圖象的數據,利用另一個(gè)CFile對象將數據存儲到所輸入的路徑的文件中去,CFile對象的Read函數會(huì )自動(dòng)創(chuàng )建一個(gè)文件。

  然后在菜單上新建一個(gè)菜單,為菜單添加消息響應函數,在其消息響應函數里創(chuàng )建RowToBMP對話(huà)框。這樣點(diǎn)擊菜單后就會(huì )彈出一個(gè)對話(huà)框,按確定鍵之后就可以讀取Raw文件并且存儲BMP文件,完成整個(gè)消息循環(huán)。

  2、灰度圖象的線(xiàn)性拉伸:

  創(chuàng )建一個(gè)對話(huà)框來(lái)輸入變化后的灰度值,為對話(huà)框的兩個(gè)編輯框定義成員變量,在文檔類(lèi)中添加處理函數,按照對話(huà)框輸入值計算出fA與fB,做一個(gè)循環(huán),將0到255的灰度值,計算出拉伸后的灰度值(超限情況特殊處理),存放在下標為此值的一個(gè)數組中,然后利用文檔類(lèi)的中定義的CDib類(lèi)的成員變量m_DIB,獲得當前打開(kāi)的圖像指向圖像數據部分的指針m_DIB、m_pBits,在數組中查出每個(gè)像素變化后的灰度值,并將此值賦給指針m_pBits指向的內存。刷新視圖。

  然后在菜單中加上線(xiàn)性拉伸的菜單,為該菜單的ID添加消息響應函數,在該函數中創(chuàng )建對話(huà)框,并調用文檔類(lèi)線(xiàn)性拉伸的函數,將對話(huà)框的兩個(gè)成員變量傳給此函數。

  3、局部處理:

  在文檔類(lèi)里添加低通濾波和高通濾波的成員函數,在函數中使用m_DIB對象中指向圖像數據部分的指針m_pBits,首先申請一個(gè)新內存,將原來(lái)圖像的灰度值存儲起來(lái),然后定義9個(gè)BYTE類(lèi)型的指針,利用雙重嵌套循環(huán),在循環(huán)中每次用這9個(gè)指針指向復制圖像對應模板中的9個(gè)數,然后按照模板中的數值計算出中心像素的灰度值,判斷是否超過(guò)范圍,如果超過(guò)范圍則做相應的處理,否則將此值直接賦給m_pBits中對應的中心像素。循環(huán)之后刷新視圖。

  添加局部處理的菜單,為菜單設置消息響應函數,在菜單消息響應函數中調用文檔類(lèi)的函數,完成對m_DIB的處理。

  4、圖像幾何變換:

  建立平移對話(huà)框,定義兩個(gè)成員變量,分別存儲輸入的水平位移和垂直位移。

  在文檔類(lèi)里添加平移函數,申請一塊新內存復制原圖像的信息,在函數中將外層循環(huán)變量i視為縱坐標,內層循環(huán)變量j視為橫坐標,通過(guò)雙重循環(huán),對每個(gè)像素,求出其在原圖像中的坐標(i0,j0),將復制圖像中的對應(i0,j0)的像素灰度值賦給m_DIB、m_pBits指針中的圖像。如果在原圖像中找不到該像素,置為背景色。刷新視圖。

  在菜單中添加圖像平移菜單,并為該菜單添加消息響應函數,在此函數中創(chuàng )建平移對話(huà)框,調用文檔類(lèi)的平移函數,將對話(huà)框的成員變量傳入該函數。

  建立縮放對話(huà)框類(lèi),為此類(lèi)定義兩個(gè)成員變量,存儲輸入的水平縮放因子和垂直縮放因子。

  再在文檔類(lèi)中添加縮放函數,利用m_DIB、m_pBMI(指向位圖信息頭的指針),修改位圖信息頭中的寬度,高度,圖像大小。計算出新圖像的大小,申請一塊新內存存儲新圖像,同平移函數一樣,計算出每個(gè)像素在原圖像中的坐標,i0=i/PRatio,j0=j/VRatio,PRatio與VRatio分別為水平縮放因子和垂直縮放因子。將原圖像中對應坐標的灰度值賦給新內存,然后將m_DIB、m_pBits(指向圖像數據的指針)指向新內存,刷新視圖。

  5、中值濾波:

  在文檔類(lèi)中添加兩個(gè)成員函數。一個(gè)用來(lái)把傳入的指針里的內容排序,一個(gè)用來(lái)做中值濾波。也要申請一塊新內存來(lái)復制原圖像的信息,雙重嵌套循環(huán),邊界像素不處理,對每個(gè)像素,使用一個(gè)大小為9個(gè)字節的數組來(lái)存放復制圖像窗口中各像素值,然后將數組首地址傳入排序的函數中,將中間的值賦給當前圖像窗口中心的像素。排序函數我用的是快速排序法。

  在菜單中添加中值濾波菜單項,為其添加消息響應函數,調用文檔類(lèi)的中值濾波函數。

  6、邊緣檢測:

  在文檔類(lèi)中定義三個(gè)函數,分別為Roberts,Prewit,Sobel算子處理函數,處理時(shí),先申請新內存復制原來(lái)圖像信息,邊界像素不作處理,對每個(gè)像素值,求出其在復制圖像中的梯度,判斷,若梯度值大于150(這個(gè)是我自己定的),則將灰度值賦為255,否則置零。

  菜單中添加邊緣檢測菜單,置屬性為Pop—up,添加三個(gè)下一級菜單,分別為Roberts,Prewit,Sobel,各個(gè)菜單的消息響應函數中調用文檔類(lèi)中各自的處理函數。

  7、圖像旋轉:

  創(chuàng )建一個(gè)對話(huà)框輸入旋轉角度,在文檔類(lèi)中添加成員函數。

  先將角度化為弧度值。

  計算原圖像四個(gè)角點(diǎn)的坐標,以及新圖像四個(gè)角點(diǎn)的坐標。

  根據新圖像四個(gè)角點(diǎn)的坐標,取對角線(xiàn)上兩個(gè)點(diǎn)橫坐標差值較大值作為寬度,縱坐標差值較大值作為高度。

  根據計算出來(lái)的高度和寬度修改文件信息頭,并且申請內存存儲新圖像。

  計算每點(diǎn)的像素在原來(lái)圖像中的坐標從而獲取其灰度值,寫(xiě)入新內存。

  將m_DIB、m_pBits指向該新內存。刷新視圖。

  添加圖像旋轉菜單,在菜單響應函數中創(chuàng )建對話(huà)框,調用文檔類(lèi)中旋轉函數,將對話(huà)框中獲取的角度傳給旋轉函數。

  8、圖像二值化:

  在文檔類(lèi)添加一個(gè)成員函數,根據傳人的圖像和閾值返回組間方差和組內方差的比值。

  再添加一個(gè)成員函數,進(jìn)行二值化。

  在函數中:

  計算新BMP文件的大小,申請一塊新內存,存儲新的整個(gè)BMP文件的信息,將位圖信息頭中biBitCount置為1,調色板數組只有兩個(gè)兩個(gè)元素,下標為0的三個(gè)灰度值都為0,下標為1的三個(gè)灰度值為255。

  從最大灰度值到最小灰度值之間搜尋上述函數返回值最大的值,作為閾值。

  對每個(gè)像素,若其原來(lái)灰度值小于閾值,賦1,否則賦0。

  將m_DIB,m_pBits指向新內存的圖像數據部分,m_DIB、m_pBMI指向位圖信息頭。

  9、圖像直方圖:

  為文檔類(lèi)添加一個(gè)int型指針成員變量m_pGray,在構造函數中將該指針賦空,在文檔類(lèi)中定義了一個(gè)函數,統計各個(gè)灰度值出現的頻數,申請一個(gè)內存,存儲在這個(gè)內存中,并將m_pGray指向它。

  創(chuàng )建一個(gè)畫(huà)直方圖的對話(huà)框,添加Picture控件,在控件里調用文檔類(lèi)成員變量,畫(huà)直方圖。添加一個(gè)滾動(dòng)條,用來(lái)確定閾值,為滾動(dòng)條添加消息響應函數,按照滾動(dòng)條的值進(jìn)行二值化。

  在菜單中添加直方圖菜單,添加消息響應函數,在響應函數中創(chuàng )建直方圖對話(huà)框對象。

  最后,因為我開(kāi)始做工程的時(shí)候沒(méi)有把菜單設計好,做得有點(diǎn)亂,所以,我又在View里添加WM_CONTEXTMENU消息響應函數,在函數體內用CMenu類(lèi)來(lái)實(shí)現彈出菜單。

  四、實(shí)驗總結與體會(huì )

  這次實(shí)驗學(xué)到最大的東西,是自己總算有MFC編程的概念了,雖然自己VC++考試的分數還不錯,但是里面的很多東西,不通過(guò)自己的編程時(shí)絕對不能真正理解。比如說(shuō)封裝性,這次用CDib的方便,很好地利用了類(lèi)的封裝性。另外,比如MFC是基于消息響應機制的,這就決定了,要利用鼠標或者菜單響應函數去實(shí)現功能,而用c語(yǔ)言編寫(xiě)程序的時(shí)候,完全是按主函數的線(xiàn)程來(lái)的。

  另外,我也學(xué)會(huì )了調試的真正含義。以前都只知道那幾個(gè)按鍵是做什么用的,調試的真正目的,是根據自己的算法來(lái)檢驗程序計算的各個(gè)值是否符合,從而可以很快速方便地查到自己的錯誤。

  自學(xué)也是很重要的一方面。實(shí)際上,在現在來(lái)說(shuō),用MSDN也不是很難的事了,我們不應該被英文打到,而且現在,隨著(zhù)對一些專(zhuān)有名詞熟悉了之后,看MSDN也容易一些了,萬(wàn)一不懂的函數,也可以利用網(wǎng)絡(luò )查到很多函數功能用法的解釋。

  剛開(kāi)始的時(shí)候做的是位圖的讀取和顯示,實(shí)在是不知從哪里做起,所以就照著(zhù)實(shí)驗書(shū)上敲了前面的部分,但是慢慢地也看懂了代碼的意思。所以后來(lái)的基本上都是自己做的了,但是算法還是基本上和書(shū)上差不多。不過(guò)自己編的時(shí)候還是有很多細節的部分沒(méi)有注意到,比如說(shuō),強制數據類(lèi)型轉換,我自己編的時(shí)候沒(méi)有注意這個(gè)問(wèn)題,結果出了很多錯,有些事由于函數調用引起的,有些是由于不等號兩邊數據的匹配問(wèn)題,還有的是由于指針的移動(dòng),直到這個(gè)時(shí)候,才真正明白實(shí)驗書(shū)上程序為什么那么多強制類(lèi)型轉換,雖然書(shū)上很多東西不是盡善盡美,但是對于我這種剛開(kāi)始學(xué)會(huì )編程的人還是有很多可以學(xué)習的地方的。

  如老師所說(shuō),算法的效率是很重要的。要提高算法的效率,一個(gè)是要簡(jiǎn)化計算(不得不說(shuō),這需要數學(xué)基礎),另外一個(gè)就是要避免許多重復的計算。在參考書(shū)上的程序里,很多時(shí)候,為了避免這種重復的計算(在循環(huán)中表現尤其明顯),會(huì )把某些數當常數算出來(lái),只要后來(lái)加上這個(gè)常數就可以,這樣,效率高很多。

  另外,對許多出錯的情況,我的程序里也沒(méi)有做好。比如,如果打開(kāi)的不是8位圖像,我的程序不會(huì )提示錯誤,正常結束,而可能做錯,所以,這也是我應該向別人程序學(xué)習的地方。

  最后一個(gè),自己菜單的布局也是很亂的。要從一開(kāi)始就布局好。

【數字圖像處理實(shí)驗報告】相關(guān)文章:

1.數字圖像處理實(shí)驗報告

2.微污染水源處理實(shí)驗報告

3.數字圖像處理技術(shù)的方法及發(fā)展方向論文

4.數字圖像處理教學(xué)與學(xué)生創(chuàng )新能力培養的探尋論文

5.主題式數字圖像處理教學(xué)與學(xué)生創(chuàng )新能力培養的探尋論文

6.科技實(shí)驗報告實(shí)驗報告

7.實(shí)驗報告芯片解剖實(shí)驗報告

8.實(shí)驗報告

9.實(shí)驗報告總結