Moravec算子特征提取
- 格式:doc
- 大小:2.18 MB
- 文档页数:6
摄影测量学第一章 绪论1、摄影测量是从非接触成像系统,通过记录、量测、分析与表达等处理,获取地球及其环境和其他物体的几何、属性等可靠信息的工艺、科学与技术。
2、摄影测量学的三个发展阶段:模拟摄影测量、解析摄影测量、数字摄影测量4、摄影测量存在哪些问题第二章 单幅影像解析基础1、像主点:摄影机主光轴(摄影方向)与像平面的交点,称为像片主点。
像主距:摄影机物镜后节点到像片主点的垂距称为摄影机主距,也叫像片主距(f )。
2、航空摄影:利用安装在航摄飞机上的航摄仪,在空中以预定的飞行高度度沿着事先制定好的航线飞行,按一定的时间间隔进行曝光摄影,获取整个测区的航摄像片。
空中摄影采用竖直摄影方式,即摄影瞬间摄影机物镜主光轴近似与地面垂直。
Hf L l m ==1 (m —像片比例尺分母,f —摄影机主距,H —平均高程面的摄影高度 H=m ·f ) 3、相对航高是指摄影机物镜相对于某一基准面的高度,称为摄影航高。
绝对航高是相对于平均海平面的航高,是指摄影机物镜在摄影瞬间的真实海拔高。
通过相对航高H 与摄影地区地面平均高度H 地计算得到:H 绝=H+H 地5、航向重叠:同一条航线内相邻像片之间的影像重叠称,重叠度一般要求在60%以上; 旁向重叠:两相邻航带像片之间的影像重叠,重叠度要求在30%左右。
6、中心投影:当投影会聚于一点时,称为中心投影; 正射投影:投影射线与投影平面成正交。
中心投影:投影射线会聚于一点(投影射线的会聚点称投影中心) 投影 斜投影:投影射线与投影平面成斜交 平行投影正射投影:投影射线与投影平面成正交7、透视变换中的重要的点线面:① 由投影中心作像片平面的垂线,交像面于o ,称为像主点;像主点在地面上的对应点以O 表示,称为地主点。
② 由摄影中心作铅垂线交像片平面于点n ,称为像底点;此铅垂线交地面于点N ,称为地底点。
③ 过铅垂线SnN 和摄影方向SoO 的铅垂面称为主垂面(W ),主垂面即垂直于像平面P ,又垂直于地平面E ,也垂直于两平面的交线透视轴TT 。
moravec角点特点Moravec角点特点文档引言Moravec角点是计算机视觉和数字图像处理中广泛使用的一种特征点检测算子。
由于它的简单和高效,使得它被广泛运用于图像处理领域。
在本文中,我们将会详细介绍Moravec角点的特点,包括计算过程、角点定义、特征提取等等方面。
本文旨在帮助读者更好地理解Moravec角点算法,为在实际应用中的正确使用提供依据。
计算过程Moravec角点算法首先将原始图像进行平滑处理,减少噪声的影响。
之后,对于每一个像素点,在其周围的邻域内进行窗口滑动,计算每个方向的灰度变化量,然后将这些变化量的平方求和得到误差值。
最后,通过比较周围八个像素点和当前像素点的误差值,判断当前像素点是否为角点。
简单的说,Moravec角点算法的计算过程就是通过窗口滑动计算不同方向上的灰度差值,对其求和,从而对图像特征进行描述与衡量。
角点定义所谓角点,是指在图像中具有明显、显著的线条的交叉点或拐角点等。
这种点的特征表现为在其周围的邻域内,在各个方向上都有显著的灰度变化。
Moravec角点算法就是利用这种灰度变化的特性来寻找角点的。
该算法中,会比较计算得出的当前像素点与周围八个像素点之间的误差值,如果当前像素点的误差值比周围的八个像素点都要大,则表示该点可能是角点。
特征提取Moravec角点算法的目的是通过检测图像中的角点来提取图像的特征。
一个好的特征点检测算法,需要满足对不同图像的适用性强、稳定性强、计算速度快等特点。
而Moravec角点算法也确实满足了这些需求。
其主要特点可归纳为:1.适用性广:Moravec角点算法适用于不同尺度和分辨率的图像,而且对旋转和缩放具有一定的旋转不变性和尺度不变性。
2.稳定性强:由于该算法是通过计算周围邻域内的灰度变化值来判断点的特性,而这种灰度变化是很稳定的,所以算法的稳定性也相应得到了保证。
3.计算速度快:该算法主要是一种基于灰度变化检测的角点检测算法,计算量小、速度快,因此在不同场合下都能得到良好的应用效果。
辽宁工程技术大学模拟实践教学单位测绘学院专业测绘工程名称点特征提取模拟实践班级测绘13-3组长秦小茜组员柳少冬倪贺星刘建琪指导教师徐辛超一、目的理解影像中每个像素灰度值的概念;理解点特征在灰度方面的特点;掌握常用的点特征提取算子,及其对应的点特征提取方法,包括:Moravec 算子、Forstner 算子。
二、要求运用VC++、C#、MATLAB 其中一种自己擅长的语言,实现两种点特征提取算法。
三、方法与步骤(一) Moravec 算子提取过程a. 读取灰度影像,得到影像的灰度矩阵;b. 计算各像元的兴趣值 IV :121,1,122,1,1123,,1124,1,1()()()()k c i rc i r i kk c i r i c i r i i kk c r i c r i i kk c i r i c i r i i k V gg V g g V g g V g g -+++=--++++++=--+++=--+-++--=-⎫=-⎪⎪⎪=-⎪⎬⎪=-⎪⎪=-⎪⎭∑∑∑∑,1234min{,,,}c r IV V V V V =c. 给定一经验阈值,将兴趣值(,c r IV )大于阈值的点作为候选点;d. 选取候选点中的极值点作为特征点;e. 将特征点在原始图像上进行标记、展示。
(二) Forstner 算子提取过程a. 计算各像素的Robert ’s 梯度 ;1,1,,11,u i j i j v i j i j g g g g u g g g g v ++++∂⎫==-⎪∂⎬∂⎪==-∂⎭ b. 计算l ⨯l (如5⨯5或更大)窗口中灰度的协方差矩阵 ;1212uu v v uvgg g Q N g g g--⎡⎤==⎢⎥⎣⎦∑∑∑∑ 其中:11221,1,1122,11,111,1,,11,()()()()c k r k ui j i j i c k j r k c k r k vi j i j i c k j r kc k r k u v i j i j i j i j i c k j r kg g g g g g g g g g g g +-+-++=-=-+-+-++=-=-+-+-++++=-=-∑=-∑=-∑=--∑∑∑∑∑∑c. 计算兴趣值q 与w ;1Det tr tr N w Q N == 24()DetNq trN =式中:DetN 代表矩阵N 之行列式,trN 代表矩阵N 之迹。
1、模拟影像的数字化主要由(采样)与(量化)两个过程来完成。
2、在对影像分辨率为25lps/mm的像片进行数字化时,最佳的采样间隔应为()微米。
3、在实际构建金字塔影像时,一般采用()或()个像元求平均,但最常用的是()个像元求平均。
4、数字摄影测量将影像特征分为(点特征)、(线特征)和(面特征)。
5、Laplace算子是一()滤波器,因此对影像()非常敏感。
6、基于灰度的影像匹配的相似性测度主要有()、()、()、()、()。
7、数字摄影测量系统的硬件主要由()、()和()等组成。
手轮、脚盘、脚踏、接口盒、立体发生器和立体眼镜8、最小二乘匹配同时考虑了(局部影像的灰度畸变和几何畸变),因此有很高的匹配精度。
1、数字摄影测量和摄影测量有什么联系和区别?2、DEM有哪几种主要的形式,其优缺点各是什么?(6分)3、什么是影像匹配?基于灰度的影像匹配的基本过程如何?(6分)影像匹配是在两幅(或多幅)影像之间识别同名元素(点)的过程,它是计算机视觉及数字摄影测量的核心问题。
4、什么是点特征提取算子?主要点特征提取算子有哪些?(6分)点特征提取算子是指运用某种算法使图像中独立像点更为突出的算子,它又被称为兴趣算子或有利算子,主要用于提取我们感兴趣的点(如角点、圆点等)。
Moravec 算子Harris 算子Forstner 算子 SUSAN 算子5、DEM 在测绘中有哪些应用?(6分)绘制等高线、坡度、坡向图、立体透视图、制作正射影像图、立体景观图、立体匹配片、立体地形模型、地图的修侧。
1、试述直接法和间接法数字微分纠正的特点及间接法纠正的主要过程。
(10分2试述“灰度差的平方和最小”影像匹配和“最小二乘”影像匹配的相同点和不同点。
3、填写下图所示的屏幕检索表(10分)1、什么是数字摄影测量?定义一:基于数字影像与摄影测量的基本原理,应用计算机技术、数字影像处理、影像匹配、模式识别等多学科的理论与方法,提取所摄对象用数字方式表达的几何与物理信息的摄影测量的分支学科。
2008年第4期福建电脑基于模板匹配的全景图像拼接王诚1,李琳2(1.湖北美术学院公共课部湖北武汉4300612.武汉科技大学计算机学院湖北武汉430061)【摘要】:图像拼接在制作全景图中具有重要的作用。
本文提出了一种很健壮的区域模板,它采用Moravec算子定位出特征物体区域,并在次区域上构建基准模板,有效地提高了匹配的可靠性。
在模板匹配中采用加权相似性度量的方法,该方法提高了相似性度量的可靠性。
另外,通过采用一种融合的拼接算法,得到了较平滑的全景图像。
试验结果证实了算法的有效性。
【关键词】:全景图;图像拼接;Moravec算子;特征模板1.引言相邻图像的配准及拼接是全景图生成技术的关键,有关图像配准技术的研究至今已有很长的历史,其主要的方法有以下两种:基于两幅图像的亮度差最小的方法和基于特征的方法。
本文采用基于特征模板匹配特征点的拼接方法。
该方法允许待拼接的图像有一定的倾斜和变形,克服了获取图像时轴心必须一致的问题,同时允许相邻图像之间有一定色差。
试验证明采用该方法进行全景图拼接有较好的效果。
全景图的拼接主要包括以下4个步骤[1]:图像的预拼接,即确定两幅相邻图像重合的较精确位置,为特征点的搜索奠定基础。
特征点的提取,即在基本重合位置确定后,找到待匹配的特征点。
图像矩阵变换及拼接,即根据匹配点建立图像的变换矩阵并实现图像的拼接。
最后是图像的平滑处理。
2.基于特征模板匹配的图像拼接2.1基本原理对于待拼接的两幅图像,在第二幅图像的左侧选取一定大小的模板矩阵(一般为5×5到21×21个像素),在第一幅图的右侧搜索找到与其相关性最大的模板矩阵,然后计算出两幅图像重叠的位置。
通过坐标映射,最终实现拼接。
2.2Moravec选取特征模板采用Moravec算子进行特征区域提取的依据是对于一个模板窗口计算其X方向、Y方向及正负45度方向的最小灰度方差值,并与预先设定的阈值进行比较。
对于彩色图像可以采用将图像转化为灰度图来处理。
科技信息2010年第7期SCIENCE&TECHNOLOGY INFORMATION遥感是目前为止能够提供全球范围的动态对地观测数据的惟一手段,其成像模式多种多样。
多源传感器影像的数据融合,可以产生出比单一信息源更精确、更完整、更可靠的影像信息。
在融合这些多源遥感影像数据时,必须先进行影像配准,经过适当配准的多传感器图像可以在像素级直接融合形成融合图像,然后在此基础上完成目标探测、特征提取和目标识别等处理。
图像配准广泛应用于航空航天技术、地理信息系统、图像镶嵌、图像融合、目标识别、虚拟现实等领域。
1图像配准的基本概念图像配准是指同一目标的两幅(或者两幅以上)图像在空间位置上的对准,图像配准的技术过程称为图像匹配。
影像匹配实质上是在两幅(或多幅)影像之间识别同名点,是计算机视觉及遥感数字图像制图的核心问题[1]。
对影像匹配可作如下数学描述[2]:若影像I1与I2中的像点O1与O2具有坐标P1=(x1,y1)、P2=(x2,y2)及特征属性f1与f2,即O1=(P1,f1)、O2=(P2,f2)。
其中f1与f2可以是P1与P2为中心的小影像窗口的灰度矩阵g1与g2,也可以是其他能够描述O1与O2的特征。
基于f1与f2定义某种测度m(f1,f2)。
所谓影像匹配就是建立一个映射函数M满足:P2=M(P1,T)、M(f1,f2)=max或min(O1∈I1,O2∈I2)。
其中T为描述映射M的参数矢量,测度m表示O1与O2的匹配程度,称为匹配测度。
基于不同的理论或不同的思想可以定义各种不同的匹配测度,因而形成了各种影像匹配方法及相应的实现算法。
2图像匹配的一般算法2.1基于图像灰度的匹配方法基于图像灰度的匹配方法的基本思想是:首先对待匹配图像做几何变换;然后根据灰度信息的统计特性定义一个目标函数,作为参考图像与变换图像之间的相似性度量,使得匹配参数在目标函数的极值处取得,并以此为匹配的判决准则和匹配参数最优化的目标函数,从而将匹配问题转化为多元函数的极值问题;最后通过一定的最优化方法求得正确的几何变换参数。
using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Drawing.Imaging;namespace 课程作业3_bk20113268{public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 打开图像/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){//设置文件的类型openFileDialog1.Filter ="*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf";if (openFileDialog1.ShowDialog() == DialogResult.OK) //打开文件对话框{//根据文件的路径创建Image对象Image myImage =System.Drawing.Image.FromFile(openFileDialog1.FileName);pictureBox1.Image = myImage; //显示打开的图片pictureBox1.Height = myImage.Height;pictureBox1.Width = myImage.Width;this.button2.Enabled = true;}}/// <summary>/// 为数据表表头添加行号/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e){try{//添加行号SolidBrush v_SolidBrush = newSolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor);int v_LineNo = 0;v_LineNo = e.RowIndex + 1;string v_Line = v_LineNo.ToString();e.Graphics.DrawString(v_Line, e.InheritedRowStyle.Font,v_SolidBrush, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5);}catch (Exception ex){MessageBox.Show("添加行号时发生错误,错误信息:" + ex.Message, "操作失败");}}/// <summary>/// 提取特征点/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){Image myImage =System.Drawing.Image.FromFile(openFileDialog1.FileName);pictureBox1.Image = myImage;//显示打开的图片toolStripProgressBar1.Visible = true; //进度条可视toolStripProgressBar1.Maximum = 7; //设置进度条最大长度值toolStripProgressBar1.Value = 0; //设置进度条当前值toolStripProgressBar1.Step = 1; //设置进度条步长toolStripProgressBar1.Value += toolStripProgressBar1.Step; //进度条前进int Var_H = pictureBox1.Image.Height; //获取图象的高度int Var_W = pictureBox1.Image.Width; //获取图象的宽度Bitmap Var_bmp = (Bitmap)pictureBox1.Image; //根据图象的大小创建Bitmap对象double[,] huiduzhi = new double[Var_W, Var_H]; //用于存储各点灰度值for (int i = 0; i < Var_W; i++){for (int j = 0; j < Var_H; j++){Color tem_color = Var_bmp.GetPixel(i, j); //获取当前像素的颜色值huiduzhi[i, j] = tem_color.R * 0.299 + tem_color.G * 0.587 +tem_color.B * 0.114; //各点灰度值}}toolStripProgressBar1.Value += toolStripProgressBar1.Step;double[,] xingquzhi = new double[Var_W, Var_H]; //用于存储各点兴趣值for (int i = 2; i < Var_W - 2; i++){for (int j = 2; j < Var_H - 2; j++){double V1 = 0;for (int m = 0; m < 4; m++){V1 = V1 + Math.Pow(huiduzhi[i - 2 + m, j] - huiduzhi[i -1 + m, j], 2); //计算V1方向相邻像素灰度差平方和}double V2 = 0;for (int m = 0; m < 4; m++){V2 = V2 + Math.Pow(huiduzhi[i - 2 + m, j - 2 + m] - huiduzhi[i- 1 + m, j - 1 + m], 2); //计算V2方向相邻像素灰度差平方和}double V3 = 0;for (int m = 0; m < 4; m++){V3 = V3 + Math.Pow(huiduzhi[i, j - 2 + m] - huiduzhi[i, j- 1 + m], 2); //计算V3方向相邻像素灰度差平方和}double V4 = 0;for (int m = 0; m < 4; m++){V4 = V4 + Math.Pow(huiduzhi[i - 2 + m, j + 2 - m] - huiduzhi[i- 1 + m, j + 1 - m], 2); //计算V4方向相邻像素灰度差平方和}xingquzhi[i, j] = Math.Min(Math.Min(Math.Min(V1, V2), V3), V4);//从V1、V2、V3、V4中取最小值作为该点兴趣值}}toolStripProgressBar1.Value += toolStripProgressBar1.Step;double sum=0;for (int i = 0; i < Var_W; i++){for (int j = 0; j < Var_H; j++){sum+=xingquzhi[i,j];}}double pingjunzhi = sum / (Var_W * Var_H);toolStripProgressBar1.Value += toolStripProgressBar1.Step;int houxuan = 0; //统计候选特征点数目int c = 101; //获取准确特征点数目double zeng = 4;while ( c > 100){c = 0;double yuzhi = pingjunzhi * zeng; //设定阈值double[,] jianding = new double[Var_W, Var_H];for (int i = 0; i < Var_W; i++){for (int j = 0; j < Var_H; j++){if (xingquzhi[i, j] <= yuzhi){jianding[i, j] = 0; //选取兴趣值大于阈值的点作为特征候选点,其他点兴趣值归零}else{jianding[i, j] = 1;houxuan++;}}}int[,] tezhengzhi1 = new int[houxuan, 2]; //假定一个数组能容纳所有点皆为特征点的像素坐标矩阵int yuzhimuban = 5; //定义阈值模板int mubanbanchuang = 2;for (int i = mubanbanchuang; i < Var_W - mubanbanchuang; i = i + yuzhimuban){for (int j = mubanbanchuang; j < Var_H - mubanbanchuang; j = j + yuzhimuban){double MAX = 0; //假定5*5模板最大值起始值为第一个元素值int a = 0; //设a为最大值行int b = 0; //设b为最大值列for (int m = 0; m < yuzhimuban; m++){for (int n = 0; n < yuzhimuban; n++){if (jianding[i - mubanbanchuang + m, j - mubanbanchuang + n] == 1){if (MAX < xingquzhi[i - mubanbanchuang + m, j- mubanbanchuang + n]){MAX = xingquzhi[i - mubanbanchuang + m, j- mubanbanchuang + n]; //获取5*5模板中最大值a = i - mubanbanchuang + m; //获取最大值列b = j - mubanbanchuang + n; //获取最大值行}}else{a = 0;b = 0;}}}if ((a != 0) && (b != 0)){tezhengzhi1[c, 0] = a; //存储特征点列tezhengzhi1[c, 1] = b; //存储特征点行c++; //每有一个既不为0也不重复的最大值特征点数目加一}}}tezhengzhi = tezhengzhi1;zeng += 1;}toolStripProgressBar1.Value += toolStripProgressBar1.Step;toolStripProgressBar1.Value += toolStripProgressBar1.Step;int[,] tezhengdian2 = new int[c, 2]; //定义一个数组存储像素坐标for (int i = 0; i < c; i++){for (int j = 0; j < 2; j++){tezhengdian2[i, j] = tezhengzhi[i,j];}}tezheng = tezhengdian2;Image img = pictureBox1.Image; //将pictureBox1中图像存储入另一个变量Bitmap bmp = new Bitmap(img.Width, img.Height); //创建Bitmap对象Graphics g = Graphics.FromImage(bmp); //创建Graphics对象g.InterpolationMode =System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; //设置高质量双三次插值法g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //设置高质量,低速度呈现平滑程度positingQuality =positingQuality.HighQuality; //设置绘制到此 Graphics 的合成图像的呈现质量g.DrawImage(img, 0, 0, img.Width, img.Height); //以img为原本重新于(0,0)点绘制g.Dispose(); //释放资源for (int i = 0; i < c; i++){Graphics myGraphics = Graphics.FromImage(bmp); //创建Graphics对象myGraphics.DrawLine(new Pen(Color.Red, 1), newPoint(tezhengdian2[i, 0], tezhengdian2[i, 1] - 5), new Point(tezhengdian2[i, 0],tezhengdian2[i, 1] + 5)); //画出竖直方向直线myGraphics.DrawLine(new Pen(Color.Red, 1), newPoint(tezhengdian2[i, 0] - 5, tezhengdian2[i, 1]), new Point(tezhengdian2[i, 0] +5, tezhengdian2[i, 1])); //画出水平方向直线myGraphics.Dispose(); //释放资源pictureBox1.Image = bmp; //显示含有“+”的图}toolStripProgressBar1.Value += toolStripProgressBar1.Step;//新建一个datatable用于保存读入的数据DataTable dt = new DataTable();//给datatable添加二个列dt.Columns.Add("列", typeof(String));dt.Columns.Add("行", typeof(String));for (int i = 0; i < c; i++){DataRow dr = dt.NewRow();dr[0] = tezhengdian2[i, 0]; //将列数据赋给表dr[1] = tezhengdian2[i, 1]; //将行数据赋给表dt.Rows.Add(dr); //将这行数据加入到datatable中}this.dataGridView1.DataSource = dt; //将datatable 绑定到datagridview上显示结果dataGridView1.AllowUserToAddRows = false;groupBox1.Text = "特征点像素坐标" + "(" + c.ToString() + "个" + ")"; toolStripProgressBar1.Visible = false; //隐藏进度条MessageBox.Show("共有" + c.ToString() + "个特征点!");}}}。
matlab练习程序(Moravec算⼦)这个算⼦算是图像历史上第⼀个特征点提取算法了,1977年提出的,很简单,拿来练⼿很合适。
算法原理如下:1.选取⼀个合理的邻域遍历图像,这⾥是5*5邻域的。
在邻域中依次计算,垂直,⽔平,对⾓与反对⾓四个相邻像素灰度的差的平⽅和,作为该邻域特征值。
⼤致就是下⾯这个样⼦:公式:这⾥k是窗⼝的半径。
2.从四个特征值中选最⼩的值作为该像素初次候选特征值。
公式:3.设定⼀个阈值,将⼤于该阈值初次候选特征值的选为⼆次候选特征值。
4.设定⼀个邻域,将该邻域最⼤的⼆次候选特征值作为最终要选择的特征值。
原图:处理后:matlab代码如下:clear all;close all;clcimg=double(imread('lena.jpg'));[h w]=size(img);imshow(img,[])imgn=zeros(h,w);n=4;for y=1+n:h-nfor x=1+n:w-nsq=img(y-n:y+n,x-n:x+n);V=zeros(1,4);for i=2:2*n+1 %垂直,⽔平,对⾓,反对⾓四个⽅向领域灰度差的平⽅和V(1)=V(1)+(sq(i,n+1)-sq(i-1,n+1))^2;V(2)=V(2)+(sq(n+1,i)-sq(n+1,i-1))^2;V(3)=V(3)+(sq(i,i)-sq(i-1,i-1))^2;V(4)=V(4)+(sq(i,(2*n+1)-(i-1))-sq(i-1,(2*n+1)-(i-2)))^2;endpix=min(V); %四个⽅向中选最⼩值imgn(y,x)=pix;endendT=mean(imgn(:)); %设阈值,⼩于均值置零ind=find(imgn<T);imgn(ind)=0;for y=1+n:h-n %选局部最⼤且⾮零值作为特征点for x=1+n:w-nsq=imgn(y-n:y+n,x-n:x+n);if max(sq(:))==imgn(y,x) && imgn(y,x)~=0img(y,x)=255;endendendfigure;imshow(img,[]);算法整个过程还是很简单的,练习⼀下,顺便祭下这个特征值开⼭算法。
一种改进型Moravec算子【摘要】 moravec算子在提取角点的时候会同时将很多边缘点也同时提取出来,而且阈值的选取较为繁琐。
通过对moravec算子原理和缺陷的研究,本文提出了利用四个方向相邻像素灰度差平方和的最小值、最大值、总和三个参数和选取3x3窗口来进行边缘点和角点周围点的剔除的新算法。
实验结果证明,该算法能够完全剔除边缘点和角点周围点。
本文还对角点提取中存在的各种情况进行了详细的分析。
【关键词】 moravec算子改进算法角点边缘点周围点1 引言moravec算子是moravec h p于1977年提出的一种“抑制局部非最大”的点特征提取算子。
由于其具有计算简单、提取速度快的优点,因此在摄影测量中广泛的应用于提取航空影像上特征点,进而基于特征点完成影像匹配。
然而moravee算子在提取角点的时候一般存在两个问题:一、边缘上的点也会被提取出来;二、提取出的角点周围存在许多干扰点。
针对moravee算子中存在的不足之处,这里提出一种改进moravec算子的新思路。
2 moravec算子原理moravec算子是利用梯度和差分算子进行点特征提取的算子。
有以下几个步骤。
(1)计算各像元的兴趣值iv(interest value)。
在以像素(c,r)为中心的w*w影像窗口中(如5×5的窗口),计算0°、45°、90°、135°四个方向相邻像素灰度差的平方和:v1、v2、v3、v4,取其中最小者作为该像素(c,r)的兴趣值:ivc,r=min{v1,v2,v3,v4}(2)给定一经验值,将兴趣值大于该阈值的点(即兴趣值计算窗口的中心点)作为候选点。
(3)选取候选点中的极值点作为特征点。
在一定大小的窗口内,将候选点中兴趣值不是最大者均去掉,仅留下一个兴趣值最大者,该像素即为一个特征点。
3 moravec算子的缺陷及分析(1)当边缘角度不为0°、45°、90°、135°时不能有效区分边缘点和角点。
精心整理第一章1.摄影测量学:摄影测量是从非接触成像系统,通过记录、量测、分析与表达等处理,获取地球及其环境和其他物体的几何、属性等可靠信息的工艺、科学与技术。
1.2摄影测量学的任务:地形测量领域:各种比例尺的地形图、专题图、特种地图、正射影像地图、景观图;建立各种数据库;提供地理信息系统和土地信息系统所需要的基础数据。
非地形测量领域:生物医学、公安侦破、古文物、古建筑、建筑物变形监测2.摄影测量的三个发展阶段及其特点:模拟摄影测量阶段:(1)使用的影像资料为硬拷贝像片。
(2)利用光学机械模拟装置,实现了复杂的摄影测量解算。
(3)得到的是(或说主要是)模拟产品。
(4)摄影测量科技的发展可以说6)(44)它是3.1.3.答:1.左右的面。
4.L 于4.对于8.1.9.因素:13. 答:摄影测量中常用的坐标系有两大类。
一类是用于描述像点的位置,称为像方空间坐标系;另—类是用于描述地面点的位置.称为物方空间坐标系。
(1).像方空间坐标系①像平面坐标系像平面坐标系用以表示像点在像平面上的位置,通常采用右手坐标系,y x ,轴的选择按需要而定.在解析和数字摄影测量中,常根据框标来确定像平面坐标系,称为像框标坐标系。
②像空间坐标系,为了便于进行空间坐标的变换,需要建立起描述像点在像空间位置的坐标系,即像空间坐标系。
以摄影中心S 为坐标原点,y x ,轴与像平面坐标系的y x ,轴平行,z 轴与主光轴重合,形成像空间右手直角坐标系xyz S -③像空间辅助坐标系,像点的像空间坐标可直接以像平面坐标求得,但这种坐标的待点是每张像片的像空间坐标系不统一,这给计算带来困难。
为此,需要建立一种相对统一的坐标系.称为像空间辅助坐标系,用XYZ S -表示。
此坐标系的原点仍选在摄影中心S 坐标轴系的选择视需要而定。
(2)物方空间坐标系①摄影测量坐标系,将像空间辅助坐标系XYZ S -沿着Z 轴反方向平移至地面点P ,得到的坐标系p p p Z Y X P -称为摄影测量坐标系②地面测量坐标系,地面测量坐标系通常指地图投影坐标系,也就是国家测图所采用的高斯—克吕格︒3带或︒6带投影的平面直角坐标系和高程系,两者组成的空间直角坐标系是左手系,用t t t Z Y X T -表示。
moravec算子计算例题Moravec 算子是一种用于图像平面特征提取的算法,其原理是通过对图像的窗口进行移动,并计算窗口内像素点的差异来检测图像中的边缘与角点等特征。
下面是一个 Moravec 算子的计算示例:假设我们有一个 5x5 的灰度图像矩阵如下:```6 7 8 3 25 6 9 4 68 5 4 5 23 6 5 1 74 6 8 2 9```我们以一个 3x3 的窗口在图像矩阵上进行移动,并计算窗口内像素点的差异。
首先,我们选取左上角的窗口,计算窗口内像素的差异:```6 7 85 6 98 5 4```差异计算公式为:D(x,y,u) = (I(x+u,y)-I(x,y))^2。
对于左上角的窗口,其差异计算如下:- 左上角:D(0,0,1) = (6-6)^2 = 0- 上中:D(0,1,1) = (5-7)^2 = 4- 右上角:D(0,2,1) = (8-8)^2 = 0- 左中:D(1,0,1) = (5-6)^2 = 1- 中心:D(1,1,1) = (6-6)^2 = 0- 右中:D(1,2,1) = (9-9)^2 = 0- 左下角:D(2,0,1) = (8-8)^2 = 0- 下中:D(2,1,1) = (5-6)^2 = 1- 右下角:D(2,2,1) = (4-4)^2 = 0接下来,我们对窗口内所有像素的差异进行累加计算,得到整个窗口的差异值:D(0,0) = 0 + 4 + 0 + 1 + 0 + 0 + 0 + 1 + 0 = 6然后,我们移动窗口到相邻位置进行计算,得到整个图像的Moravec 算子特征矩阵:```6 12 4 4 28 7 16 10 59 4 1 14 135 8 16 13 76 7 4 8 28```在这个例子中,我们可以看到左上角和右下角的像素都有较大的差异,所以它们可能是边缘或角点。
点特征提取编程实习报告
一.实习简介
本次实习利用VC++6.0编程实现了对8位BMP灰度图像的读取、显示,并用Moravec算子对图像进行点特征的提取。
二.程序设计
1.用MFC创建一个多文档程序框架,用来显示BMP图像:
2.为该程序框架添加菜单:
3.创建一个对话框输入参数:
4.最后提取结果可以显示在视图中:
三.程序框图及核心代码Array
分别定义四个函数计算四个方向的灰度差平方和:
提取特征点:
实验结果分析
1、下图中阈值为8000,窗口大小从上到下从左到右分别为9*9、7*7、5*5、3*3。
可
以看出随着窗口的增大,提取到的特征点个数越来越少,但是精度提高,可以防止将噪声提取出来。
2、下图中窗口大小为9,阈值从左到右从上到下分别为20000、15000、10000、5000。
可以看出,随着阈值的增大,能投提取到的特征点越来越少,只有灰度变化十分剧烈的点才能被提取出来,如下图中左上角是阈值为20000时的提取结果,可以发现没有提取出任何特征点。
实习总结
Moravec 算子是点特征提取算子中的经典算子之一,它具有计算量小, 不丢失灰度信息等优点。
用该算子提取特征点时阈值的选取直接影响着提取结果。
如本次实习过程中所用的图像是武汉地区的TM影像,这幅影像的灰度范围很小,所以阈值不宜取得过大,否则会丢失很多特征点,如:当阈值选为20000时,没有提取出任何特征点。
为了验证对比度对特征点提取的影响,我用Photoshop对图像做了一个对比度的增强,之后用5*5的窗口和10000的阈值对其进行特征点的提取并与原图像的提取结果做了对比,发现增强了对比度的图像中提取出的特
征点确实比原图像中的特征点多,如下图:
所以,虽然Moravec算子是点特征提取的经典算子,但是提取效果还是很大程度上受参数设置的影响,不同灰度范围的图像需要不同的阈值以及不同的窗口大小,这需要长久的实验来积累经验确定参数。
或者可以通过计算整幅图像的
灰度均值的方法是程序自动确定阈值,但没有再本次实习中进行实验。