课程作业4--相关系数法识别同名点要点
相关分析知识分享

第17章 相关分析唯物论者认为,任何事物之间都是有联系的,这种联系间存在着强弱、直接或间接的差别。
相关分析就是通过定量的指标来描述这种联系。
提到相关分析,许多人会认为,研究的是两个变量间的关系。
但实际上,广义的相关分析研究的可以是一个变量和多个变量之间的关系,也可以是研究两个变量群,甚至于多个变量群之间的关系。
17.1 相关分析简介测量相关程度的相关系数有很多,各种参数的计算方法、特点各异。
有的基于卡方值、有的则主要考虑预测效果。
有些是对称性的,有些是非对称性的(在将变量的位置互换时,对称性参数将不变,非对称性参数则会改变)。
大部分关联强度参数的取值范围在0~1之间,0代表完全不相关,1代表完全其取值范围则在-1到11.连续变量的相关指标这种情况是最多见的,此时一般使用积差相关系数,又称为Pearson 相关系数,来表示其相关性的大小,其数值介于-1~1之间,当两个变量的相关性达到最大,散点呈一条直线时取值为-1或1,正负号表明了相关的方向;如两变量完全无关,则取值为0。
积差相关系数应用非常广泛,但严格地讲只适用于两变量呈线性相关时。
此外,作为参数方法,积差相关分析有一定的适用条件,当数据不能满足这些条件时,分析者可以考虑使用Spearman 等级相关系数来解决这一问题。
2. 有序变量的相关指标对于有序的等级资料的相关性,又往往称其为一致性,所谓一致性高,就是指行变量等级高的列变量等级也高,行变量等级低的列变量等级也低。
如果行变量等级高而列变量等级低,则称其为不一致。
3. 名义变量的相关指标 见教材,p328-329。
4. 其他特殊指标 见教材,p329。
也可参考 李沛良书第四章p80-118。
17.1.2 SPSS 中的相应功能SPSS 的相关分析功能基本可以在两个过程中完成。
1. “交叉表:统计量”子对话框 (1)“相关性”复选框:适用于两个连续变量的分析,计算行-列变量的Pearson 相关系数和Spearman 相关系数。
摄影测量 5.26

一、名词解释(4分每题,共20分)1、框标设置在摄影机焦平面(承影面)上位置固定的光学机械标志,用于在焦平面上(亦即像片上)建立像方坐标系。
2摄影航高以摄区内的平均高程面作为摄影基准面,摄影机的物镜中心至该面的距离。
1、数字摄影测量是以数字影像为基础,用计算机进行分析和处理,确定被摄物体的形状、大小、空间位置及性质的技术。
2、合面:过投影中心作一水平面平行于地面,这一个平面称为真水平面,也叫合面;核面:摄影基线与地面点所作平面。
3、摄影测量与非摄影测量观测值的联合平差指的是在摄影测量平差中使用了更一般的原始的非摄影测量观测值或条件。
4、有限元法把地面分成适当大小的有限单元,在单元内,用一个简单的函数来描述所求的曲面,并保证相邻单元之间有连续(或光滑)的过渡,这种内插方法称为有限元法。
5、数字微分纠正或数字纠正根据有关的参数与数字地面模型,利用相应的构像方程式,或按一定的数学模型用控制点解算,从原始非正摄投影的数字影像获取正射影像,这种过程是将影像化为很多微小的区域逐一进行纠正,且使用的是数字方式处理,1、相对定向:确定一个立体像对的相对位置称为相对定向。
2、核线:核面与像片面的交线称为核线,对于同一核面的左右像片的核线,称为同名核线。
3、数字高程模型:若地面点按一定格网形式排列,点的平面坐标X、Y可由起始原点推算而无需记录,地面形态只用点的高程Z来表达,这种数据列阵称为数字高程模型(DEM)4、立体像对:在两摄站点对同一地面景物摄取有一定影像重叠的两张像片5、前方交会:由立体像对中两张像片的内、外方位元素和像点坐标来确定相应地面点在物方空间坐标系中坐标的方法1.摄影测量学:摄影测量是从非接触成像系统,通过记录、量测、分析与表达等处理,获取地球及其环境和其他物体的几何、属性等可靠信息工艺、科学与技术。
2.空间前方交会:通过立体像对像点坐标和提供的像片的内、外方位元素求地面控制点在摄影测量坐标系中的坐标。
相关性分析(相关系数)

相关系数是变量之间相关程度的指标。
样本相关系数用r表示,总体相关系数用ρ表示,相关系数的取值一般介于—1~1之间.相关系数不是等距度量值,而只是一个顺序数据。
计算相关系数一般需大样本。
相关系数又称皮(尔生)氏积矩相关系数,说明两个现象之间相关关系密切程度的统计分析指标。
相关系数用希腊字母γ表示,γ值的范围在—1和+1之间。
γ>0为正相关,γ<0为负相关.γ=0表示不相关;γ的绝对值越大,相关程度越高.两个现象之间的相关程度,一般划分为四级:如两者呈正相关,r呈正值,r=1时为完全正相关;如两者呈负相关则r呈负值,而r=—1时为完全负相关.完全正相关或负相关时,所有图点都在直线回归线上;点子的分布在直线回归线上下越离散,r的绝对值越小。
当例数相等时,相关系数的绝对值越接近1,相关越密切;越接近于0,相关越不密切。
当r=0时,说明X和Y两个变量之间无直线关系。
相关系数的计算公式为〈见参考资料>.其中xi为自变量的标志值;i=1,2,…n;■为自变量的平均值,为因变量数列的标志值;■为因变量数列的平均值.为自变量数列的项数。
对于单变量分组表的资料,相关系数的计算公式〈见参考资料〉.其中fi为权数,即自变量每组的次数.在使用具有统计功能的电子计算机时,可以用一种简捷的方法计算相关系数,其公式〈见参考资料>。
使用这种计算方法时,当计算机在输入x、y数据之后,可以直接得出n、■、∑xi、∑yi、∑■、∑xiy1、γ等数值,不必再列计算表.简单相关系数:又叫相关系数或线性相关系数。
它一般用字母r 表示。
它是用来度量定量变量间的线性相关关系。
复相关系数:又叫多重相关系数复相关是指因变量与多个自变量之间的相关关系。
例如,某种商品的需求量与其价格水平、职工收入水平等现象之间呈现复相关关系.偏相关系数:又叫部分相关系数:部分相关系数反映校正其它变量后某一变量与另一变量的相关关系,校正的意思可以理解为假定其它变量都取值为均数。
初中数学 什么是数据的相关性 如何判断数据之间的相关性

初中数学什么是数据的相关性如何判断数据之间的相关性数据的相关性是指两个或多个变量之间的相关程度。
在统计学中,我们可以使用相关系数来衡量数据之间的相关性。
相关系数为-1到+1之间的值,其绝对值越接近于1,表示两个变量之间的相关性越强,而绝对值越接近于0,则表示两个变量之间的相关性越弱。
在实际应用中,我们通常使用皮尔逊相关系数来衡量数据之间的相关性。
皮尔逊相关系数可以通过以下公式计算:r = (Σ(xi - X)(yi - Y)) / [(Σ(xi - X)^2)*(Σ(yi - Y)^2)]^(1/2)其中,r为皮尔逊相关系数,xi和yi分别为第i个数据的值,X和Y分别为所有数据的均值。
判断数据之间的相关性可以采用以下方法:1. 绘制散点图:通过绘制散点图,可以直观地看出两个变量之间的关系。
如果散点图呈现出一定的趋势性,例如呈现出直线或曲线的形状,那么这两个变量之间可能存在相关性。
2. 计算皮尔逊相关系数:通过计算皮尔逊相关系数,可以得到两个变量之间的相关性程度。
如果相关系数的绝对值接近于1,那么这两个变量之间的相关性较强。
3. 利用假设检验进行判断:在一些情况下,我们需要通过假设检验来判断数据之间的相关性。
例如,当我们需要判断两个变量之间是否存在显著的相关性时,可以采用t检验或F检验进行判断。
需要注意的是,相关性并不等同于因果关系。
即使两个变量之间存在相关性,也不能确定其中一个变量是另一个变量的原因。
因此,在进行数据分析时,需要谨慎对待相关性的结论,并需要进行更加深入的研究和分析。
总结起来,数据的相关性是指两个或多个变量之间的相关程度。
我们可以使用皮尔逊相关系数来衡量数据之间的相关性,并可以通过绘制散点图、计算相关系数和假设检验等方法来判断数据之间的相关性。
需要注意的是,相关性并不等同于因果关系,需要进行更加深入的研究和分析。
相关分析方法

相关分析方法地理要素之间相互关系密切程度的测定,主要是通过对相关系数的计算与检验来完成的。
1. 两要素之间相关程度的测定1) 相关系数的计算与检验(1) 相关系数的计算相关系数——表示两要素之间的相关程度的统计指标。
对于两个要素x与y,如果它们的样本值分别为xi与yi(i=1,2,...,n),它们之间的相关系数:,r xy>0,表示正相关,即同向相关;rxy<0,表示负相关,即异向相关。
的绝对值越接近于1,两要素关系越密切;越接近于0,两要素关系越不密切。
■ 若记:则:■ 若问题涉及到x1,x2,…,xn等n个要素,多要素的相关系数矩阵:[相关系数矩阵的性质][举例说明]例1:中国1952~1999年期间的国内总产值(GDP)及其各次产业构成数据如表3.1.1(单击显示该表)所示。
试计算GDP与各次产业之间的相关系数及相关系数矩阵。
解:(1) 将表3.1.1中的数据代入相关系数计算公式计算,得到国内生产总值(GDP)与第一、二、三产业之间的相关系数分别为0.9954,0.9994,0.9989。
(2) 根据表3.1.1中的数据,进一步计算,得到国内生产总值及一、二、三产业之间的相关系数矩阵:(2) 相关系数的检验一般情况下,相关系数的检验,是在给定的置信水平下,通过查相关系数检验的临界值表来完成。
表3.1.2(点击显示该表)给出了相关系数真值(即两要素不相关)时样本相关系数的临界值[临界值表说明]2) 秩相关系数的计算与检验(1) 秩相关系数的计算秩相关系数——是描述两要素之间相关程度的一种统计指标,是将两要素的样本值按数据的大小顺序排列位次,以各要素样本值的位次代替实际数据而求得的一种统计量。
实际上,它是位次分析方法的数量化。
设两个要素x和y有n对样本值,令R1代表要素x的序号(或位次),R2代表要素y的序号(或位次),代表要素x和y的同一组样本位次差的平方,则要素x和y之间的秩相关系数被定义为(2) 秩相关系数的检验与相关系数一样,秩相关系数是否显著,也需要检验。
第五章相关系数

第三节 等级相关
一、斯皮尔曼等级相关
使用条件
(1)两个变量以等级次序排列(包括一个变量是
等级,而另一个变量是连续的)
(2)两个变量虽然是连续性数据,但其总体不是
正态分布(非参数的相关方法)
(3)样本容量不一定大于30
被试 1 2 3 4 5 6 7 8 9 10
听X 172 140 152 187 139 195 212 164 149 146
6 3 0 -10 -22 -21 -8 -52
108 63
342 46
例题:10名考生一次测验的卷面总分和一道问答题的得 分,试求该问答题的区分度(该问答题满分10分,因此 得6分和6分以上则为该题通过) 考生
因果关系 共变关系 相关关系 从数量上考虑事物间的联系 函数关系 相关关系
一、相关关系
两个变量间不确定、不精确的变化关系, 为相关关系 举例两列数据看似有一定关系,但不能确 定,只是模糊的
二、相关的分类
1、相关方向 (1)正相关:变量之间变动方向相同, 同增同减; ↑↑或者↓↓如: (2)负相关:变量之间变动方向相反, 一个增加,另一个则小;↑↓或者↓↑如: (3)零相关:变量之间的变动完全没 有规律可循。如:
2、计算公式
P
二分变量中某一类别所占的比例
q 二分变量中另一类别所占的比例
St 指连续变量的标准差,
测量的连续变量中与p对应的那部分数据的平均值
测量的连续变量中与p对应的那部分数据的平均值
某一测验中10名考生的卷面总分和一道选 择题的得分,试求该选择题的区分度。
考生 A B C D E F 1 1 0 0 G 1 H 0 I 0 J 1
皮尔森相关系数 重叠系数 共定位系数

皮尔森相关系数重叠系数共定位系数标题:皮尔森相关系数、重叠系数和共定位系数的应用与解读导语:在数据分析和统计学中,皮尔森相关系数、重叠系数和共定位系数是三个重要的衡量指标。
它们可以帮助我们了解变量之间的关系以及它们对于某个问题的预测能力。
本文将深入探讨这三个指标的含义、计算方法以及在实际应用中的解读。
一、皮尔森相关系数皮尔森相关系数用于衡量两个变量之间的线性关系强度。
其取值范围在-1到1之间,-1表示完全负相关,1表示完全正相关,0表示无相关性。
皮尔森相关系数的计算方法是通过将两个变量的协方差除以它们的标准差的乘积得到。
二、重叠系数重叠系数是一种用于衡量两个集合之间的相似度的指标。
它计算的是两个集合中共有的元素占总元素数量的比例。
重叠系数的取值范围在0到1之间,0表示两个集合没有共同元素,1表示两个集合完全相同。
三、共定位系数共定位系数是一种用于衡量两个变量在同一方向上的运动趋势的指标。
它用于判断两个变量是否在某个时间段内具有相似的变化趋势。
共定位系数的计算方法是通过比较两个变量在同一时间点上的取值是否相似来确定。
应用与解读:皮尔森相关系数常被用于研究变量之间的关系,例如在经济学中用于分析利率和股票价格之间的相关性。
当相关系数接近1或-1时,表示两个变量之间存在较强的线性关系,可以用一个变量来预测另一个变量的变化。
而当相关系数接近0时,表示两个变量之间没有线性关系,无法通过一个变量来预测另一个变量。
重叠系数可以用于比较两个集合的相似性。
例如,在市场调研中,可以使用重叠系数来判断两个样本中消费者的重叠程度,从而确定目标消费群体。
重叠系数越大,表示两个样本中的消费者群体越相似,可以更有针对性地进行营销策略。
共定位系数常被用于分析两个变量在时间上的变化趋势是否一致。
例如,在气象学中,可以使用共定位系数来比较两个地区的气温变化趋势是否相似。
共定位系数越接近1,表示两个地区的气温变化趋势越相似,可以用一个地区的气温数据来预测另一个地区的气温变化。
相关性检验的知识要点

相关性检验的知识要点(1)相关系数r 的定义对于变量x 与y 随机抽取到的n 对数据11(,)x y ,22(,)x y ,……,(,)n n x y ,称()()nn i ii i x x y y x y nx y r ---==∑∑x 与y 的样本相关系数。
(2)相关系数r 的作用样本相关系数r 用于衡量两个变量之间是否具有线性相关关系,描述线性相关关系的强弱:①||1r ≤越接近1,表明两个变量之间的线性相关程度越强;越接近0,表明两个变量之间的线性相关程度越弱。
②当r >0时,表明两个变量正相关, 即x 增加,y 随之相应地增加,若x 减少,y 随之相应地减少.当r <0时,表明两个变量负相关, 即x 增加,y 随之相应地减少;若x 减少,y 随之相应地增加.若r=0,则称x 与y 不相关。
③当||0.75r >,认为x 与y 之间具有很强的线性相关关系。
④当大于时,表明有95%的把握认为x 与y 之间具有线性相关关系,这时求回归直线方程有必要也有意义,当0.05||r r ≤时,寻找回归直线方程就没有意义。
(3)利用相关系数r 检验的一般步骤:法一:①作统计假设:x 与y 不具有线性相关关系。
②根据样本相关系数计算公式算出r 的值。
③比较与的大小关系,得出统计结论。
如果||0.75r >,认为x 与y 之间具有很强的线性相关关系。
法二:①作统计假设:x 与y 不具有线性相关关系。
②根据样本相关系数计算公式算出r 的值。
③根据小概率与n-2在相关性检验的临界值表中查出r 的一个临界值(n 未数据的对数)。
④比较与,作统计推断,如果0.05||r r >,表明有95%的把握认为x 与y 之间具有线性相关关系。
如果0.05||r r ≤,我们没有理由拒绝原来的假设,即不认为x 与y 之间具有线性相关关系。
这时寻找回归直线方程是毫无意义的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字摄影测量作业报告相关系数法识别同名点2010 年12 月16 日1 作业任务------------------------------------------------------------------------------------ 32 作业思想--------------------------------------------------------------------------------------- 33 设计原理与思路-------------------------------------------------------------------- 34 作业过程--------------------------------------------------------------------------- 45 源程序----------------------------------------------------------------------------- 56 作业成果--------------------------------------------------------------------------- 9 7作业自我评点----------------------------------------------------------------------------- 10 8心得体会与建议----------------------------------------------------------------------------- 101 作业任务根据给出的两幅影像,编制程序:1. 从左影像(L.jpg )中,利用Moravec 算子,自动提取10个以上的特征点。
要求:程序能读取*.JPG 图像、在窗口或控件中显示整幅图像、在图像中显示出所提取的特征点(+),并列表显示各特征点的像素坐标。
2. 从右(R.jpg )影像中,利用相关系数测度,自动提取与左影像特征点匹配的同名像点。
要求:在左、右影像中分别显示特征点与同名像点,并列表显示各点的像素坐标。
2作业思想数字影像相关原理:数字影像相关是利用计算机对数字影像进行数字计算得方式完成影像的相关,识别出两幅(或多幅)影像的同名点。
计算时,首先取出以待定点为中心的小区域中的影像信号,然后取出其在另一影像中相应区域的影像信号,计算两者的相关函数,以相关函数最大值对应的相应区域中心点为同名点,即以影像信号分布最相似的区域为同名区域。
同名区域的中心点为同名点,这就是自动化立体量测的基本原理。
一般在影像上搜索同名点是一个二维搜索即二维相关的过程。
二维影像相关时,先在一般在左影像上先确定一个待定点,称之为目标点,以此待定点为中心选取m * n(通常取m =n)个像素的灰度阵列作为目标区或称目标窗口,如图2-1所示。
为了在右影像上搜索同名点,必须估计出该同名点可能存在的范围,建立一个k * l(k >m ,l >n)个像素的灰度阵列作为搜索区,相关的过程就是依次在搜索区中取出m * n 个像素灰度阵列作为搜索窗口,计算其与目标区的相似性测度,则ij 0000;22222222l n l n k m k m i i i j j j ρ⎛⎫=-++-=-++- ⎪⎝⎭,…,,?, 式中:(i 0 , j 0) 为搜索中心。
当ρ取最大值时,该搜索窗口的中心像素被认为是目标点的同名点。
即当时,(c , r )即为目标点的同名点。
图2-13设计原理与思路在“课程作业3—提取影像特征点”编制的程序基础上,提取数字影像左片的特征点,根据以上思想和原理,按照相关系数法算法继续编制程序提取出右片中相应特征点的相关系数最大的点,即同名点。
相关系数法:相关系数是标准化的协方差函数,协方差函数除以两信号的方差即得相关系数。
函数g (x , y)与g ’ (x ’ , y ’ )的相关系数为对于离散灰度数据,相关系数的估计公式为:若00(,)(,)c r c r ρρ>,则00,c r 为搜索区影像相对于目标去影像位移的行、列参数。
4作业过程4.1 窗体设计如图4-1-1,添加2个picturebox控件,相当于图像显示区,分别用于显示左片和右片;添加7个Button控件,分别为“提取左片特征点”,“识别右片同名点”,“关闭”,2个“打开图像”,2个“保存图像”事件按钮;添加textbox控件,输入阈值;添加listview控件用于列表显示所提取特征点的相关信息以及所识别的同名点的相关信息,使两个控件靠近,便于做数据比对。
图4-1-1 窗体设计4.2 编写代码:根据所设计的窗体,为各控件添加事件代码。
“打开图像”,“保存图像”以及“关闭”控件代码参考《C#数字图像处理算法典型事例》编写;“提取特征点”代码根据Moravec算子的计算原理与步骤编写,并标记特征点;“识别同名点”代码根据数字影像匹配的原理,按照相关系数法的估计公式计算相关系数,分别识别出每一个特征点的同名点;添加listview控件中的列(序号、行号、列号、兴趣值)并设置属性,于listview控件中列表显示特征点的行列号和兴趣值。
4.3 调试程序:编写完代码后启用调试,根据错误提示找原因,一个一个解决问题。
左右片使用同一张图片,运行程序,对比图像和数据,观察特征点的提取有无异常,观察同名点识别是否准确,观察相关系数值大小变化,有错误便重新返回程序寻找原因,解决问题。
5 源程序using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace相关系数法识别同名点{public partial class Form1 : Form{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 = "所有图像文件 | *.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 = true;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){OpenFileDialog 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; *.eps; *.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 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.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, System.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;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|" +"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"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.Imaging.ImageFormat.Png);break;default:break;}}}private int[] I = new int[50];//存储左片特征点列号private int[] J = new int[50];//存储左片特征点行号private double[] V = new double[50];//存储左片特征点兴趣值private double[,] Gray = new double[600, 500];//存储左片所有像素点灰度值private double[,] Gray1 = new double[600, 500];//存储右片所有像素点灰度值//提取左片特征点private void 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 double[w, h];Color curColor;Color c1 = Color.FromArgb(255, 0, 0);for (int i = 0; i < w; i++){for (int j = 0; j < h; j++){curColor = curBitmap1.GetPixel(i, j);Gray[i, 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((Gray[i - 2, j] - Gray[i - 1, j]), 2) + Math.Pow((Gray[i - 1, j] - Gray[i, j]), 2) + Math.Pow((Gray[i, j] - Gray[i + 1, j]), 2) + Math.Pow((Gray[i + 1, j] - Gray[i + 2, j]), 2);V2 = Math.Pow((Gray[i - 2, j - 2] - Gray[i - 1, j - 1]), 2) + Math.Pow((Gray[i - 1, j - 1] - Gray[i, j]), 2) + Math.Pow((Gray[i, j] - Gray[i + 1, j + 1]), 2) + Math.Pow((Gray[i + 1, j + 1] - Gray[i + 2, j + 2]), 2);V3 = Math.Pow((Gray[i, j - 2] - Gray[i, j - 1]), 2) + Math.Pow((Gray[i, j - 1] - Gray[i, j]), 2) + Math.Pow((Gray[i, j] - Gray[i, j + 1]), 2) + Math.Pow((Gray[i, j + 1] - Gray[i, j + 2]), 2);V4 = Math.Pow((Gray[i - 2, j + 2] - Gray[i - 1, j + 1]), 2) + Math.Pow((Gray[i - 1, j + 1] - Gray[i, j]), 2) + Math.Pow((Gray[i, j] - Gray[i + 1, j - 1]), 2) + Math.Pow((Gray[i + 1, j - 1] - Gray[i + 2, j - 2]), 2);double IV1 = Math.Min(V1, V2);double IV2 = Math.Min(IV1, V3);double IV3 = Math.Min(IV2, V4);IV[i, j] = IV3;}}for (int i = 2; i < w - 2; i++){for (int j = 2; j < h - 2; j++){if (IV[i, j] > f){V[t] = IV[i, j];I[t] = i;J[t] = j;t++;curBitmap1.SetPixel(i, j, c1);for (int n = 1; n < 4; n++){if (i + n < w && j + n < h && i - n >= 0 && j - n >= 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(I[k].ToString());li.SubItems.Add(J[k].ToString());li.SubItems.Add(V[k].ToString());listView1.Items.Add(li);}textBox2.Text = t.ToString();}//计算相关系数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 += Gray[x + i, y + j];g1 += Gray1[c + i, r + j];}}g /= 25;g1 /= 25;for (int i = -2; i < 2; i++){for (int j = -2; j < 2; j++){h1 += (Gray[x + i, y + j] - g) * (Gray1[c + i, r + j] - g1);h2 += Math.Pow((Gray[x + i, y + j] - g), 2);h3 += Math.Pow((Gray1[c + i, r + j] - g1), 2);}}p = h1 / Math.Sqrt(h2 * h3);return p;}//识别同名点private void matching_Click(object sender, EventArgs e){int f = int.Parse(textBox2.Text);//获取特征点个数int w2 = curBitmap1.Width;int h2 = curBitmap1.Height;int[] I2 = new int[f];//存储同名点列号int[] J2 = new int[f];//存储同名点行号double[] RC = new double[f];Color curColor;Color c1 = Color.FromArgb(255, 0, 0);//计算右片所有像素点灰度值for (int i = 0; i < w2; i++){for (int j = 0; j < h2; j++){curColor = curBitmap2.GetPixel(i, j);Gray1[i, j] = (int)(curColor.R * 0.299 + curColor.G * 0.587 + curColor.B * 0.114);}}//识别同名点并标记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(I[k], J[k], c, r)){p = RelatedCoefficient(I[k], J[k], c, r);I2[k] = c;J2[k] = r;RC[k] = p;}}}curBitmap2.SetPixel(I2[k], J2[k], c1);for (int n = 1; n < 4; n++){if (I2[k] + n < w2 && J2[k] + n < h2 && I2[k] - n >= 0 && J2[k] - n >= 0) {curBitmap2.SetPixel(I2[k] - n, J2[k], c1);curBitmap2.SetPixel(I2[k] + n, J2[k], c1);curBitmap2.SetPixel(I2[k], J2[k] - n, c1);curBitmap2.SetPixel(I2[k], J2[k] + n, c1);}}int xh = k + 1;ListViewItem li = new ListViewItem();li.Text = xh.ToString();li.SubItems.Add(I2[k].ToString());li.SubItems.Add(J2[k].ToString());li.SubItems.Add(RC[k].ToString());listView2.Items.Add(li);}}private void close_Click(object sender, EventArgs e){this.Close();}}}6 作业成果阈值取9000时,提取出12个特征点,识别同名点12个,个别点有遗漏及误识现象7作业自我评点7.1 优点:∙窗体设计简洁大方,虽然舍去了常规菜单栏的设计,但按钮功能更突出作业目的。