




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)字?jǐn)z影測(cè)量作業(yè)報(bào)告相關(guān)系數(shù)法識(shí)別同名點(diǎn)2010 年 12 月 16 日1 作業(yè)任務(wù) -32 作業(yè)思想 -33 設(shè)計(jì)原理與思路-34 作業(yè)過程 -45 源程序 - 56 作業(yè)成果 - 97作業(yè)自我評(píng)點(diǎn) - 108心得體會(huì)與建議- 101 作業(yè)任務(wù)根據(jù)給出的兩幅影像,編制程序:1. 從左影像(L.jpg)中,利用Moravec算子,自動(dòng)提取10個(gè)以上的特征點(diǎn)。要求:程序能讀取*.JPG圖像、在窗口或控件中顯示整幅圖像、在圖像中顯示出所提取的特征點(diǎn)(+),并列表顯示各特征點(diǎn)的像素坐標(biāo)。2. 從右(R.jpg)影像中,利用相關(guān)系數(shù)測(cè)度,自動(dòng)提取與左影像特征點(diǎn)匹配的同名像點(diǎn)。要求:在左、右影像中分別顯
2、示特征點(diǎn)與同名像點(diǎn),并列表顯示各點(diǎn)的像素坐標(biāo)。2作業(yè)思想數(shù)字影像相關(guān)原理:數(shù)字影像相關(guān)是利用計(jì)算機(jī)對(duì)數(shù)字影像進(jìn)行數(shù)字計(jì)算得方式完成影像的相關(guān),識(shí)別出兩幅(或多幅)影像的同名點(diǎn)。計(jì)算時(shí),首先取出以待定點(diǎn)為中心的小區(qū)域中的影像信號(hào),然后取出其在另一影像中相應(yīng)區(qū)域的影像信號(hào),計(jì)算兩者的相關(guān)函數(shù),以相關(guān)函數(shù)最大值對(duì)應(yīng)的相應(yīng)區(qū)域中心點(diǎn)為同名點(diǎn),即以影像信號(hào)分布最相似的區(qū)域?yàn)橥麉^(qū)域。同名區(qū)域的中心點(diǎn)為同名點(diǎn),這就是自動(dòng)化立體量測(cè)的基本原理。一般在影像上搜索同名點(diǎn)是一個(gè)二維搜索即二維相關(guān)的過程。二維影像相關(guān)時(shí),先在一般在左影像上先確定一個(gè)待定點(diǎn),稱之為目標(biāo)點(diǎn),以此待定點(diǎn)為中心選取m * n(通常取mn)個(gè)
3、像素的灰度陣列作為目標(biāo)區(qū)或稱目標(biāo)窗口,如圖2-1所示。為了在右影像上搜索同名點(diǎn),必須估計(jì)出該同名點(diǎn)可能存在的范圍,建立一個(gè)k * l(km,ln)個(gè)像素的灰度陣列作為搜索區(qū),相關(guān)的過程就是依次在搜索區(qū)中取出m * n個(gè)像素灰度陣列作為搜索窗口,計(jì)算其與目標(biāo)區(qū)的相似性測(cè)度,則式中:(i0 , j0) 為搜索中心。當(dāng)取最大值時(shí),該搜索窗口的中心像素被認(rèn)為是目標(biāo)點(diǎn)的同名點(diǎn)。即當(dāng)時(shí),(c , r )即為目標(biāo)點(diǎn)的同名點(diǎn)。圖2-13設(shè)計(jì)原理與思路在“課程作業(yè)3提取影像特征點(diǎn)”編制的程序基礎(chǔ)上,提取數(shù)字影像左片的特征點(diǎn),根據(jù)以上思想和原理,按照相關(guān)系數(shù)法算法繼續(xù)編制程序提取出右片中相應(yīng)特征點(diǎn)的相關(guān)系數(shù)最大的
4、點(diǎn),即同名點(diǎn)。相關(guān)系數(shù)法:相關(guān)系數(shù)是標(biāo)準(zhǔn)化的協(xié)方差函數(shù),協(xié)方差函數(shù)除以兩信號(hào)的方差即得相關(guān)系數(shù)。函數(shù)g (x , y)與g (x , y )的相關(guān)系數(shù)為對(duì)于離散灰度數(shù)據(jù),相關(guān)系數(shù)的估計(jì)公式為:若,則為搜索區(qū)影像相對(duì)于目標(biāo)去影像位移的行、列參數(shù)。4作業(yè)過程 41 窗體設(shè)計(jì)如圖4-1-1,添加2個(gè)picturebox控件,相當(dāng)于圖像顯示區(qū),分別用于顯示左片和右片;添加7個(gè)Button控件,分別為“提取左片特征點(diǎn)”,“識(shí)別右片同名點(diǎn)”,“關(guān)閉”, 2個(gè)“打開圖像”,2個(gè)“保存圖像”事件按鈕;添加textbox控件,輸入閾值;添加listview控件用于列表顯示所提取特征點(diǎn)的相關(guān)信息以及所識(shí)別的同名點(diǎn)
5、的相關(guān)信息,使兩個(gè)控件靠近,便于做數(shù)據(jù)比對(duì)。圖 4-1-1 窗體設(shè)計(jì)42 編寫代碼: 根據(jù)所設(shè)計(jì)的窗體,為各控件添加事件代碼。 “打開圖像”,“保存圖像”以及“關(guān)閉”控件代碼參考C#數(shù)字圖像處理算法典型事例編寫;“提取特征點(diǎn)”代碼根據(jù)Moravec算子的計(jì)算原理與步驟編寫,并標(biāo)記特征點(diǎn);“識(shí)別同名點(diǎn)”代碼根據(jù)數(shù)字影像匹配的原理,按照相關(guān)系數(shù)法的估計(jì)公式計(jì)算相關(guān)系數(shù),分別識(shí)別出每一個(gè)特征點(diǎn)的同名點(diǎn);添加listview控件中的列(序號(hào)、行號(hào)、列號(hào)、興趣值)并設(shè)置屬性,于listview控件中列表顯示特征點(diǎn)的行列號(hào)和興趣值。43 調(diào)試程序: 編寫完代碼后啟用調(diào)試,根據(jù)錯(cuò)誤提示找原因,一個(gè)一個(gè)解決問
6、題。左右片使用同一張圖片,運(yùn)行程序,對(duì)比圖像和數(shù)據(jù),觀察特征點(diǎn)的提取有無(wú)異常,觀察同名點(diǎn)識(shí)別是否準(zhǔn)確,觀察相關(guān)系數(shù)值大小變化,有錯(cuò)誤便重新返回程序?qū)ふ以颍鉀Q問題。5 源程序using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace 相關(guān)系數(shù)法識(shí)別同名點(diǎn) public partial class Form1 : Form
7、 public Form1() InitializeComponent(); private string curFileName1; private string curFileName2; private System.Drawing.Bitmap curBitmap1; private System.Drawing.Bitmap curBitmap2; /打開左片 private void open1_Click(object sender, EventArgs e) OpenFileDialog opnDlg = new OpenFileDialog(); opnDlg.Filter
8、= 所有圖像文件 | *.bmp; *.pcx; *.png; *.jpg; *.gif; + *.tif; *.ico; *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf| + 位圖( *.bmp; *.jpg; *.png;.) | *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif; *.ico| + 矢量圖( *.wmf; *.eps; *.emf;.) | *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf; opnDlg.Title = 打開圖像文件; opnDlg.ShowHelp = t
9、rue; if (opnDlg.ShowDialog() = DialogResult.OK) curFileName1 = opnDlg.FileName; try curBitmap1 = (Bitmap)Image.FromFile(curFileName1); pictureBox1.Image = curBitmap1; catch (Exception exp) MessageBox.Show(exp.Message); Invalidate(); /打開右片 private void open2_Click(object sender, EventArgs e) OpenFile
10、Dialog opnDlg = new OpenFileDialog(); opnDlg.Filter = 所有圖像文件 | *.bmp; *.pcx; *.png; *.jpg; *.gif; + *.tif; *.ico; *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf| + 位圖( *.bmp; *.jpg; *.png;.) | *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif; *.ico| + 矢量圖( *.wmf; *.eps; *.emf;.) | *.dxf; *.cgm; *.cdr; *.wmf; *.ep
11、s; *.emf; opnDlg.Title = 打開圖像文件; opnDlg.ShowHelp = true; if (opnDlg.ShowDialog() = DialogResult.OK) curFileName2 = opnDlg.FileName; try curBitmap2 = (Bitmap)Image.FromFile(curFileName2); pictureBox2.Image = curBitmap2; catch (Exception exp) MessageBox.Show(exp.Message); Invalidate(); /保存左片圖像 private
12、 void save1_Click(object sender, EventArgs e) if (curBitmap1 = null) return; SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.Title = 保存為; saveDlg.OverwritePrompt = true; saveDlg.Filter = BMP文件 (*.bmp) | *.bmp| + Gif文件 (*.gif) | *.gif| + JPEG文件 (*.jpg) | *.jpg| + PNG文件 (*.png) | *.png; saveDlg
13、.ShowHelp = true; if (saveDlg.ShowDialog() = DialogResult.OK) string fileName = saveDlg.FileName; string strFilExtn = fileName.Remove(0, fileName.Length - 3); switch (strFilExtn) case bmp: curBitmap1.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp); break; case jpg: curBitmap1.Save(fileName, S
14、ystem.Drawing.Imaging.ImageFormat.Jpeg); break; case gif: curBitmap1.Save(fileName, System.Drawing.Imaging.ImageFormat.Gif); break; case tif: curBitmap1.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff); break; case png: curBitmap1.Save(fileName, System.Drawing.Imaging.ImageFormat.Png); break;
15、 default: break; /保存右片圖像 private void save2_Click(object sender, EventArgs e) if (curBitmap2 = null) return; SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.Title = 保存為; saveDlg.OverwritePrompt = true; saveDlg.Filter = BMP文件 (*.bmp) | *.bmp| + Gif文件 (*.gif) | *.gif| + JPEG文件 (*.jpg) | *.jpg|
16、+ PNG文件 (*.png) | *.png; saveDlg.ShowHelp = true; if (saveDlg.ShowDialog() = DialogResult.OK) string fileName = saveDlg.FileName; string strFilExtn = fileName.Remove(0, fileName.Length - 3); switch (strFilExtn) case bmp: curBitmap2.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp); break; case
17、jpg: curBitmap2.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); break; case gif: curBitmap2.Save(fileName, System.Drawing.Imaging.ImageFormat.Gif); break; case tif: curBitmap2.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff); break; case png: curBitmap2.Save(fileName, System.Drawing.
18、Imaging.ImageFormat.Png); break; default: break; private int I = new int50;/存儲(chǔ)左片特征點(diǎn)列號(hào) private int J = new int50;/存儲(chǔ)左片特征點(diǎn)行號(hào) private double V = new double50;/存儲(chǔ)左片特征點(diǎn)興趣值 private double, Gray = new double600, 500;/存儲(chǔ)左片所有像素點(diǎn)灰度值 private double, Gray1 = new double600, 500;/存儲(chǔ)右片所有像素點(diǎn)灰度值 /提取左片特征點(diǎn) private voi
19、d extraction_Click(object sender, EventArgs e) double V1, V2, V3, V4; int t = 0; int w, h; w = curBitmap1.Width; h = curBitmap1.Height; double f = int.Parse(textBox1.Text); double, IV = new doublew, h; Color curColor; Color c1 = Color.FromArgb(255, 0, 0); for (int i = 0; i w; i+) for (int j = 0; j h
20、; j+) curColor = curBitmap1.GetPixel(i, j); Grayi, j = (int)(curColor.R * 0.299 + curColor.G * 0.587 + curColor.B * 0.114); 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
21、, j), 2) + Math.Pow(Grayi + 1, j - Grayi + 2, j), 2); V2 = Math.Pow(Grayi - 2, j - 2 - Grayi - 1, j - 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) + M
22、ath.Pow(Grayi, j - 1 - Grayi, j), 2) + Math.Pow(Grayi, j - Grayi, j + 1), 2) + Math.Pow(Grayi, j + 1 - Grayi, j + 2), 2); V4 = Math.Pow(Grayi - 2, j + 2 - Grayi - 1, j + 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
23、 + 2, j - 2), 2); double IV1 = Math.Min(V1, V2); double IV2 = Math.Min(IV1, V3); double IV3 = Math.Min(IV2, V4); IVi, j = IV3; for (int i = 2; i w - 2; i+) for (int j = 2; j f) Vt = IVi, j; It = i; Jt = j; t+; curBitmap1.SetPixel(i, j, c1); for (int n = 1; n 4; n+) if (i + n w & j + n = 0 & j - n =
24、0) curBitmap1.SetPixel(i - n, j, c1); curBitmap1.SetPixel(i + n, j, c1); curBitmap1.SetPixel(i, j - n, c1); curBitmap1.SetPixel(i, j + n, c1); 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.ToS
25、tring(); li.SubItems.Add(Vk.ToString(); listView1.Items.Add(li); textBox2.Text = t.ToString(); /計(jì)算相關(guān)系數(shù) public double RelatedCoefficient(int x, int y, int c, int r) double g = 0, g1 = 0, h1 = 0, h2 = 0, h3 = 0, p = 0; for (int i = -2; i 2; i+) for (int j = -2; j 2; j+) g += Grayx + i, y + j; g1 += Gr
26、ay1c + i, r + j; g /= 25; g1 /= 25; for (int i = -2; i 2; i+) for (int j = -2; j 2; j+) h1 += (Grayx + i, y + j - g) * (Gray1c + i, r + j - g1); h2 += Math.Pow(Grayx + i, y + j - g), 2); h3 += Math.Pow(Gray1c + i, r + j - g1), 2); p = h1 / Math.Sqrt(h2 * h3); return p; /識(shí)別同名點(diǎn) private void matching_C
27、lick(object sender, EventArgs e) int f = int.Parse(textBox2.Text);/獲取特征點(diǎn)個(gè)數(shù) int w2 = curBitmap1.Width; int h2 = curBitmap1.Height; int I2 = new intf;/存儲(chǔ)同名點(diǎn)列號(hào) int J2 = new intf;/存儲(chǔ)同名點(diǎn)行號(hào) double RC = new doublef; Color curColor; Color c1 = Color.FromArgb(255, 0, 0); /計(jì)算右片所有像素點(diǎn)灰度值 for (int i = 0; i w2; i
28、+) for (int j = 0; j h2; j+) curColor = curBitmap2.GetPixel(i, j); Gray1i, j = (int)(curColor.R * 0.299 + curColor.G * 0.587 + curColor.B * 0.114); /識(shí)別同名點(diǎn)并標(biāo)記 for (int k = 0; k f; k+) double p = 0; for (int c = 2; c w2 - 2; c+) for (int r = 2; r h2 - 2; r+) if (p RelatedCoefficient(Ik, Jk, c, r) p =
29、RelatedCoefficient(Ik, Jk, c, r); I2k = c; J2k = r; RCk = p; curBitmap2.SetPixel(I2k, J2k, c1); for (int n = 1; n 4; n+) if (I2k + n w2 & J2k + n = 0 & J2k - n = 0) curBitmap2.SetPixel(I2k - n, J2k, c1); curBitmap2.SetPixel(I2k + n, J2k, c1); curBitmap2.SetPixel(I2k, J2k - n, c1); curBitmap2.SetPixel(I2k, J2k + n, c1); int xh = k + 1; ListViewItem li = new ListViewItem(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 利樂灌裝機(jī)考試題及答案
- 2025年農(nóng)村電商生態(tài)構(gòu)建策略與農(nóng)產(chǎn)品電商品牌影響力研究報(bào)告
- 2025年農(nóng)產(chǎn)品質(zhì)量安全追溯體系在農(nóng)業(yè)科技創(chuàng)新中的應(yīng)用報(bào)告
- 長(zhǎng)沙消防考試題庫(kù)及答案
- 2017材料員考試試題及答案
- 期末檢測(cè)卷(試題)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文一年級(jí)下冊(cè)
- 2024-2025學(xué)年高一下學(xué)期期末考試考前模擬物理試題(四)
- 2025年農(nóng)產(chǎn)品保鮮技術(shù)對(duì)農(nóng)產(chǎn)品保鮮行業(yè)市場(chǎng)格局鑒定報(bào)告
- 2025版高考地理一輪復(fù)習(xí)第十單元1第一講工業(yè)的區(qū)位選擇夯基提能作業(yè)湘教版
- 六年級(jí)語(yǔ)文下冊(cè)語(yǔ)文七色光三教學(xué)設(shè)計(jì)教科版
- 碧道施工方案
- 2024北京海淀區(qū)高一(下)期末英語(yǔ)試題和答案
- 部編版四年級(jí)道德與法治下冊(cè)期末復(fù)習(xí)課件
- 高原反應(yīng)的知識(shí)講座課件
- 侵華日軍第七三一部隊(duì)罪證陳列館之旅
- DBT29-81-2010 天津市園林綠化工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 2025年人力資源代理合作招聘協(xié)議
- 2024秋廣東開放大學(xué)《數(shù)學(xué)大觀(本)》測(cè)驗(yàn)1-5答案
- 工業(yè)大數(shù)據(jù)采集處理與應(yīng)用
- 公共體育(四)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 正畸病歷書模板
評(píng)論
0/150
提交評(píng)論