課程作業(yè)-提取影像特征點(diǎn)_第1頁
課程作業(yè)-提取影像特征點(diǎn)_第2頁
課程作業(yè)-提取影像特征點(diǎn)_第3頁
課程作業(yè)-提取影像特征點(diǎn)_第4頁
課程作業(yè)-提取影像特征點(diǎn)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)字?jǐn)z影測量作業(yè)報告提取影像特征點(diǎn)2010年 12月 15日 TOC o 1-5 h z HYPERLINK l bookmark4 o Current Document 1作業(yè)任務(wù) 3 HYPERLINK l bookmark6 o Current Document 2作業(yè)思想 3 HYPERLINK l bookmark8 o Current Document 3設(shè)計原理與思路 3 HYPERLINK l bookmark10 o Current Document 4作業(yè)過程 45源程序 5 HYPERLINK l bookmark12 o Current Document 6作業(yè)成果 9

2、 HYPERLINK l bookmark14 o Current Document 7作業(yè)自我評點(diǎn) 10 HYPERLINK l bookmark16 o Current Document 8心得體會與建議 101作業(yè)任務(wù)提取一幅數(shù)字影像中的特征點(diǎn):根據(jù)Moravec算子,編制程序,從一幅數(shù)字影像中自動提取50個以上的點(diǎn)特征(特征點(diǎn))2作業(yè)思想理論上,特征是影像灰度曲面的不連續(xù)點(diǎn)。在實(shí)際影像中,由于點(diǎn)擴(kuò)散函數(shù)的作用, 特征表現(xiàn)為在一個微小鄰域中灰度的急劇變化,或灰度分布的均勻性,也就是在局部區(qū)域中具有較大的信息量。若不考慮噪聲,實(shí)際影像是理想灰度函數(shù)與點(diǎn)擴(kuò)散函數(shù)的卷積,則點(diǎn)特征與邊緣特征如圖

3、23 2和圖2 3 3所示,其灰度的分布均表現(xiàn)為從小到大或從大到小的明顯變化, 因而除了用局部信息量來檢測特征之外,還可以利用各種梯度或差分算于提取特征。本次作業(yè)便采用Moravec算子,從影像中提取感興趣的特征點(diǎn)。33 2 3-2點(diǎn)特征3設(shè)計原理與思路點(diǎn)特征主要是指明顯點(diǎn),如角點(diǎn)、圓點(diǎn)等。提取點(diǎn)特征的算子稱為興趣算子,即用某種算法從影像中提取感興趣的特征點(diǎn)。本次作業(yè)采用Moravec算子的算法,提取特征點(diǎn)。Moravec算子的計算原理與步驟如下:(1).計算各像素的興趣值IV。在以像素(c, r)為中心的n* n (如5* 5)的窗口中, 如圖3-1所示,計算四個方向相鄰像素灰度差的平方和,

4、則k -1V 1 = ( gc i,r - gc i 1, r)2i zu-k k -1V 2 =、( g c /i, r- gc -i, 1, r個-1)(3 -1)i =-kk 1V 3 = ( gc, r,i - gc, r,i)i =-k k 1V 4 = ,(gc /i, r -i - gc , 1, r1)2i -k圖 3-1 Morabec 算子式中:k=int (n/2)。取其中最小者作為該像素(c ,r)的興趣值,即IVc r =minVi, V2, V3, V4.給定一閾值,將興趣值大于該閾值的點(diǎn)(窗口中心)作為候選點(diǎn)。.選取候選點(diǎn)中的極值點(diǎn)作為特征點(diǎn)。在一定大小的窗口內(nèi)(

5、窗口大小可不同于興趣值計算窗口),選擇候選點(diǎn)中興趣值最大的點(diǎn)作為特征點(diǎn)。根據(jù)以上Moravec算子的計算原理與步驟,運(yùn)用visual studi。新建項(xiàng)目,制作一個簡單的小程序,包括打開圖像,提取特征點(diǎn),并且將特征點(diǎn)行列號列表顯示等功能。4作業(yè)過程4. 1窗體設(shè)計如圖4-1-1,添加picturebox控件,相當(dāng)于圖像顯示區(qū);添加 4個Button控件,分別為 “打開圖像”,“保存圖像”,“提取特征點(diǎn)”,“關(guān)閉”事件按鈕;添加 textbox控件,輸入閾 值;添加listview控件用于列表顯示所提取特征點(diǎn)的相關(guān)信息。Fami.-s- Form Ixs 設(shè)計)圖4-1-1窗體設(shè)計4. 2編寫代

6、碼:根據(jù)所設(shè)計的窗體,為各控件添加事件代碼?!按蜷_圖像”,“保存圖像”以及“關(guān)閉”控件代碼參考C#數(shù)字圖像處理算法典型事例編寫;“提取特征點(diǎn)”代碼根據(jù)Moravec算子的計算原理與步驟編寫,并標(biāo)記特征點(diǎn);添加listview控件中的列(序號、行號、列號、興趣值)并設(shè)置屬性,于 listview控件中列 表顯示特征點(diǎn)的行列號和興趣值。4. 3調(diào)試程序:準(zhǔn)備一張?zhí)卣髅黠@的圖像(在同學(xué)建議下,采用八卦圖),編寫完代碼后啟用調(diào)試,根據(jù)錯誤提示找原因,一個一個解決問題。觀察提取點(diǎn)的圖像位置和數(shù)據(jù)有無異常,不斷調(diào)試程序,直至程序運(yùn)行正常。5源程序using System;using System.Coll

7、ections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace提取影像特征點(diǎn)public partial class Form1 : Form public Form1() InitializeComponent();private string curFileName;private System.Drawing. Bitmap curBitmap;/打開圖像至picturebox控

8、件窗口 privatevoid open_Click( object sender,EventArgs e)OpenFileDialog opnDlg = new OpenFileDialog (); TOC o 1-5 h z opnDlg.Filter =所有圖像文件 | *.bmp; *.pcx; *.png; *.jpg; *.gif;+*.tif; *.ico; *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf|+位圖(*.bmp; *.jpg; *.png;)| *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif;*.i

9、co|+矢量圖(*.wmf; *.eps; *.emf;)| *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf;opnDlg.Title =打開圖彳t文件;opnDlg.ShowHelp =true ;if (opnDlg.ShowDialog() = DialogResult .OK)(curFileName = opnDlg.FileName; try(curBitmap = (Bitmap) Image.FromFile(curFileName);pictureBox1.Image = curBitmap; catch ( Exception exp)(M

10、essageBoxShow(exp.Message);Invalidate();/提取特征點(diǎn)private void extraction_Click( object sender, EventArgs e) (double V1, V2, V3, V4; int t = 0; int w, h, s;w = curBitmap.Width;h = curBitmap.Height;s = w * h;double f = int .Parse(textBoxl.Text); / 獲取閾值 double , Gray = new double w, h; / 存儲所有像素點(diǎn)灰度值 double

11、 , IV = new double w, h; /存儲所有像素點(diǎn)興趣值 double V =newdoubles;/存儲特征點(diǎn)興趣值double I =newdoubles;/存儲特征點(diǎn)列號double J =newdoubles;/存儲特征點(diǎn)行號Color curColor;Color c = Color .FromArgb(255, 0, 0);設(shè)置標(biāo)注特征點(diǎn)的顏色:紅色/計算并存儲所有像素點(diǎn)灰度值 for ( int i = 0; i w; i+)(for ( int j = 0; j h; j+)(curColor = curBitmap.GetPixel(i, j);Grayi,

12、j = (int )(curColor.R * 0.299 + curColor.G * 0.587 + curColor.B *0.114);/計算并存儲所有像素點(diǎn)興趣值 for ( int i = 2; i w - 2; i+)for ( int j = 2; j h - 2; j+)V1 =Math.Pow(Grayi - 2, j - Grayi - 1, j), 2) +Math.Pow(Grayi - 1,j- Grayi, j), 2) +Math.Pow(Grayi, j - Grayi + 1, j), 2) +Math.Pow(Grayi + 1, j-Grayi + 2,

13、 j), 2);V2=Math.Pow(Grayi - 2, j - 2- Grayi - 1,-1), 2) + Math.Pow(Grayi-1, j - 1 - Grayi, j), 2) +Math.Pow(Grayi, j - Grayi + 1, j + 1), 2) +Math.Pow(Grayi+ 1, j + 1 - Grayi + 2, j + 2), 2);V3 =Math.Pow(Grayi, j - 2 - Grayi, j - 1), 2) +Math.Pow(Grayi, j-1 - Grayi, j), 2) +Math.Pow(Grayi, j - Grayi

14、, j + 1), 2) +Math.Pow(Grayi, j + 1-Grayi, j + 2), 2);V4-1, j + 1 - Grayi, j), 2) +=Math.Pow(Grayi - 2, j + 2 - Grayi - 1, jMath.Pow(Grayi, j - Grayi + 1, j - 1), 2) + 1), 2) + Math.Pow(GrayiMath.Pow(Grayi+ 1, j - 1 - Grayi + 2, j - 2), 2);double IV1 =Math.Min(V1, V2);double IV2 =Math.Min(IV1, V3);d

15、ouble IV3 =Math.Min(IV2, V4);IVi, j = IV3;/提取興趣值大于閾值的點(diǎn)并標(biāo)記for ( int i = 2; i w - 2; i+)for ( int j = 2; j f)Vt = IVi, j;It = i;Jt = j;t+;curBitmap.SetPixel(i, j, c);for ( int n = 1; n 4; n+)if (i + n w & j + n = 0 & j - n = 0)curBitmap.SetPixel(i - n, j, c);curBitmap.SetPixel(i + n, j, c);curBitmap.S

16、etPixel(i, j - n, c);curBitmap.SetPixel(i, j + n, c);)/列表顯示提取點(diǎn)的行列號和興趣值for ( int k = 0; k t; k+)(int xh = k + 1;ListViewItem li = new ListViewItem ();li.Text = xh.ToString();li.SubItems.Add(Ik.ToString();li.SubItems.Add(Jk.ToString();li.SubItems.Add(Vk.ToString();listView1.Items.Add(li);)/保存圖像private

17、 void save_Click( object sender, EventArgs e)(if (curBitmap = null )( return ;)SaveFileDialog saveDlg = new SaveFileDialog ();saveDlg.Title =保存為;saveDlg.OverwritePrompt =true ;saveDlg.Filter = TOC o 1-5 h z BMPt 件(*.bmp) | *.bmp|+Gif 文件(*.gif) | *.gif|+JPEGt件(*.jpg) | *.jpg|+PNGt 件(*.png) | *.png ;s

18、aveDlg.ShowHelp =true ;if (saveDlg.ShowDialog() = DialogResult .OK)(string fileName = saveDlg.FileName;string strFilExtn = fileName.Remove(0, fileName.Length - 3); switch (strFilExtn)(case bmp:ImageFormat.Bmp);curBitmap.Save(fileName, System.Drawing.Imaging.break ;case jpg:ImageFormat.Jpeg);curBitma

19、p.Save(fileName, System.Drawing.Imaging.break ;case gif:ImageFormat.Gif);curBitmap.Save(fileName, System.Drawing.Imaging.break ;case tif:ImageFormat.Tiff);curBitmap.Save(fileName, System.Drawing.Imaging.break ;case png:ImageFormat.Png);curBitmap.Save(fileName, System.Drawing.Imaging.break ;default :

20、break ; /關(guān)閉窗口private void close_Click( object sender, EventArgs e) this .Close();-10 -6作業(yè)成果閾值取26000時,提取55個特征點(diǎn):X濕點(diǎn)保存圖怪輸入周值:/nrin提跟總?cè)吸c(diǎn)佰 5 10*432 41357 453 110取-n 4 2 4 L B 4 7 3 6 5 4 L 7 3 L _y 2 4 L8 -4- 7 o 3 R- 6 2 2 9 7 2 2 9 2 5 4 0 9 7 9 7興2626S3 擊2630普西霹2727盤國羽器2a加洲262626號 的 河 9 Q 5 6 Z 9 o Q

21、6 o r- I -U 5 o s o ID不3J701索27l30K4lJg23232a23霹Z32323SM美 號-1 3 4 T 5 7 B 9 S 4 .H S 0 0 0 7 E fi- 0 9 -H- 8t-2 127才國282g赤30K32斑3EH33M 融J笄值前號序前38步期3S如41始必仃陽始內(nèi)明陪50玉空刎55閾值取20000時,提取423個特征點(diǎn):提取杼任克美配5G256DLOrh6DL6OLB345&739DI2345&7S9OE23OOQOOOn-ll-1l-12-v-ni2 日 qq4q 日冉 444 日o L nu o L 9 Q Q 3 rl 112 2 2L

22、 L 2 2 8 s fi- y 9 7 7 7 7 7 7 s 0 s au 8 B 4 4-4 4 i 4 4-44-fe555556s66663 3 3 3 3 3 3 3 3-3 3 3 3 3 3 3 3 3 3 3 323360 23043 24LSS29415245S1 3QB9329921 2&742691124OOe 2234321 ITT 加期后 22325 24091 25L6223022 241G1219142484s2B7697作業(yè)自我評點(diǎn)7. 1優(yōu)點(diǎn):窗體設(shè)計簡潔大方,雖然舍去了常規(guī)菜單欄的設(shè)計,但按鈕功能更突出作業(yè)目的。提取特征點(diǎn)程序運(yùn)算過程的編寫無迭代和函數(shù)循環(huán)

23、調(diào)用,運(yùn)算速度快。特征點(diǎn)的標(biāo)記采用以特征點(diǎn)為中心,改變周圍像素點(diǎn)顏色使其成“+”的紅色標(biāo)記,定位準(zhǔn)確,避免了直接使用DrawString方法繪制符號,造成符號中心與特征點(diǎn)不重合的定位錯誤。7. 2缺點(diǎn):窗體設(shè)計過于簡單,程序功能不夠完整全面,圖像大小有上限,不能自動調(diào)整適應(yīng)大圖。程序運(yùn)行并提取特征點(diǎn)后, 要將程序最小化,再打開,才能看到特征點(diǎn)的標(biāo)記。(原 因尚在研究中)出現(xiàn)同一區(qū)域重復(fù)提取特征點(diǎn),或是特征點(diǎn)靠太近的現(xiàn)象7. 3自我評點(diǎn):此次作業(yè)總體來說完成了預(yù)定的任務(wù),達(dá)到目的,但仍存在一些問題。在作業(yè)過程中, 通過查閱資料,自主學(xué)習(xí)以及與同學(xué)交流,發(fā)現(xiàn)了不少問題并及時改進(jìn),仍然存在的問題實(shí)屬

24、時間和現(xiàn)階段自己的編程技術(shù)限制,相信在以后的學(xué)習(xí)和提高之后能夠解決好這些問題。8心得體會與建議終于寫到這一部分了, 從開始準(zhǔn)備做這次作業(yè),到現(xiàn)在快要完成報告,不僅經(jīng)歷了很長 時間,這個過程中自己也是感慨頗多,恨不得趕緊來寫心得體會,抒發(fā)一下自己的感想。這一個作業(yè)可能是歷時最長的一次作業(yè)吧,開始的時候?qū)儆跓o從下手什么都不懂的階 段,所以進(jìn)展很慢,積極性也不高,自己也不自覺,導(dǎo)致時間拖得很長。一開始由于受“數(shù) 字圖像處理”這門課程影響,想用matlab來實(shí)現(xiàn)這次作業(yè),不過后來考慮matlab的可視化 和使用方面不如 visual studio編程,果斷放棄了。轉(zhuǎn)投 visual studio 程序設(shè)計后,又發(fā) 現(xiàn)很多東西都忘了,于是又圖書館借書回來自己琢磨,溫習(xí)大一暑假程序設(shè)計實(shí)習(xí),然后一點(diǎn)一點(diǎn)開始了這次作業(yè)的編寫。在程序設(shè)計的過程中,C蹴字圖像處理算法典型事例這本書給了我很大的幫助和影 響,窗口的設(shè)計和“打開圖像”“保存圖像”等的設(shè)計理念和代碼大部分都源于這本書,慢慢地自己也學(xué)習(xí)了不少圖像處理方面的知識。在調(diào)試程序的過程中也很頭疼,因?yàn)閷#吾言還不是非常熟悉, 所以有些錯誤讓人有些束手無策, 不過事實(shí)證明,耐心和細(xì)心地去尋找 原因并解決問題是可行的,也是以后的學(xué)習(xí)過程中自己需要培養(yǎng)的好習(xí)慣。當(dāng)我的程序調(diào)試運(yùn)行之后,各方面都挺順利,不過讓人郁悶的是特征點(diǎn)老是出現(xiàn)在了不

溫馨提示

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

評論

0/150

提交評論