⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opencv用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译) - hunnish的opencv专栏.htm

📁 Opencv的中文参考指南
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<P class=Blurb><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">精确角点位置</SPAN></P><PRE>void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,
                         int count, CvSize win, CvSize zero_zone,
                         CvTermCriteria criteria );
</PRE>
<P>
<DL>
  <DT>image 
  <DD>输入图像. 
  <DT>corners 
  <DD>输入角点的初始坐标,也存储精确的输出坐标 
  <DT>count 
  <DD>角点数目 
  <DT>win 
  <DD>搜索窗口的一半尺寸。如果 <CODE><SPAN lang=EN-US>win</SPAN></CODE><SPAN 
  lang=EN-US>=(5,5) 那么使用 5*2+1 × 5*2+1 = 11 × 11 大小的搜索窗口</SPAN> 
  <DT>zero_zone 
  <DD>死区的一半尺寸,死区为不对搜索区的中央位置做求和运算的区域。它是用来避免自相关矩阵出现的某些可能的奇异性。当值为<SPAN lang=EN-US> 
  (-1,-1) 表示没有死区。</SPAN> 
  <DT>criteria 
  <DD>求角点的迭代过程的终止条件。即角点位置的确定,要么迭代数大于某个设定值,或者是精确度达到某个设定值。 <CODE><SPAN 
  lang=EN-US>criteria</SPAN></CODE><SPAN lang=EN-US> 可以是最大迭代数目,也可以是精确度</SPAN> 
  </DD></DL>
<P>函数 <SPAN lang=EN-US><A 
href="file:///C:/DOCUME~1/user/LOCALS~1/Temp/FrontPageTempDir/pvw1.htm#decl_cvFindCornerSubPix">cvFindCornerSubPix</A> 
通过迭代来发现具有子象素精度的角点位置,或如图所示的放射鞍点(radial saddle points)。</SPAN></P>
<P><IMG src="" align=center> </P>
<P>Sub-pixel accurate corner locator is based on the observation that every 
vector from the center <CODE>q</CODE> to a point <CODE>p</CODE> located within a 
neighborhood of <CODE>q</CODE> is orthogonal to the image gradient at 
<CODE>p</CODE> subject to image and measurement noise. Consider the 
expression:</P><PRE>ε<SUB>i</SUB>=DI<SUB>p<SUB>i</SUB></SUB><SUP>T</SUP>•(q-p<SUB>i</SUB>)
</PRE>
<P>where <CODE>DI<SUB>p<SUB>i</SUB></SUB></CODE> is the image gradient at the 
one of the points <CODE>p<SUB>i</SUB></CODE> in a neighborhood of 
<CODE>q</CODE>. The value of <CODE>q</CODE> is to be found such that 
<CODE>ε<SUB>i</SUB></CODE> is minimized. A system of equations may be set up 
with <CODE>ε<SUB>i</SUB></CODE>' set to zero: </P><PRE>sum<SUB>i</SUB>(DI<SUB>p<SUB>i</SUB></SUB>•DI<SUB>p<SUB>i</SUB></SUB><SUP>T</SUP>)•q - sum<SUB>i</SUB>(DI<SUB>p<SUB>i</SUB></SUB>•DI<SUB>p<SUB>i</SUB></SUB><SUP>T</SUP>•p<SUB>i</SUB>) = 0
</PRE>
<P>where the gradients are summed within a neighborhood ("search window") of 
<CODE>q</CODE>. Calling the first gradient term <CODE>G</CODE> and the second 
gradient term <CODE>b</CODE> gives:</P><PRE>q=G<SUP>-1</SUP>•b
</PRE>
<P>The algorithm sets the center of the neighborhood window at this new center 
<CODE>q</CODE> and then iterates until the center keeps within a set 
threshold.</P>
<HR>

<H3><A name=decl_cvGoodFeaturesToTrack>GoodFeaturesToTrack</A></H3>
<P class=Blurb><SPAN 
style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">确定图像的强角点</SPAN></P><PRE>void cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image, CvArr* temp_image,
                            CvPoint2D32f* corners, int* corner_count,
                            double quality_level, double min_distance,
                            const CvArr* mask=NULL );
</PRE>
<P>
<DL>
  <DT>image 
  <DD>输入图像,<SPAN lang=EN-US>8-位或浮点32-比特,单通道</SPAN> 
  <DT>eig_image 
  <DD>临时浮点<SPAN lang=EN-US>32-位图像,大小与输入图像一致</SPAN> 
  <DT>temp_image 
  <DD>另外一个临时图像,格式与尺寸与 <CODE><SPAN lang=EN-US>eig_image</SPAN></CODE><SPAN 
  lang=EN-US> 一致</SPAN> 
  <DT>corners 
  <DD>输出参数,检测到的角点 
  <DT>corner_count 
  <DD>输出参数,检测到的角点数目 
  <DT>quality_level 
  <DD>最大最小特征值的乘法因子。定义可接受图像角点的最小质量因子。 
  <DT>min_distance 
  <DD>限制因子。得到的角点的最小距离。使用<SPAN lang=EN-US> Euclidian 距离</SPAN> 
  <DT>mask 
  <DD><SPAN lang=EN-US>ROI:感兴趣区域。函数在ROI中计算角点,如果 mask 为 NULL,则选择整个图像。</SPAN> 
</DD></DL>
<P>函数 <SPAN lang=EN-US><A 
href="file:///C:/DOCUME~1/user/LOCALS~1/Temp/FrontPageTempDir/pvw1.htm#decl_cvGoodFeaturesToTrack">cvGoodFeaturesToTrack</A> 
在图像中寻找具有大特征值的角点。该函数,首先用<A 
href="file:///C:/DOCUME~1/user/LOCALS~1/Temp/FrontPageTempDir/pvw1.htm#decl_cvCornerMinEigenVal">cvCornerMinEigenVal</A> 
计算输入图像的每一个象素点的最小特征值,并将结果存储到变量 </SPAN><CODE><SPAN lang=EN-US>eig_image 
中。</SPAN></CODE>然后进行非最大值压缩(仅保留<SPAN lang=EN-US>3x3邻域中的局部最大值)。下一步将最小特征值小于 
</SPAN><CODE><SPAN lang=EN-US>quality_level</SPAN></CODE><SPAN 
lang=EN-US>•max(</SPAN><CODE><SPAN lang=EN-US>eig_image</SPAN></CODE><SPAN 
lang=EN-US>(x,y)) 排除掉。最后,函数确保所有发现的角点之间具有足够的距离,(最强的角点第一个保留,然后检查新的角点与已有角点之间的距离大于 
</SPAN><CODE><SPAN lang=EN-US>min_distance )。</SPAN></CODE></P><BR><BR>
<P id=TBPingURL>Trackback: 
http://tb.blog.csdn.net/TrackBack.aspx?PostId=93171</P></DIV>
<DIV class=postFoot>
<SCRIPT 
src="OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译) - HUNNISH的OPENCV专栏.files/PromoteIcon.aspx"></SCRIPT>
[<A href="javascript:StorePage()">点击此处收藏本文</A>]&nbsp;&nbsp; 发表于 2004年09月03日 9:23 
AM </DIV></DIV><LINK href="http://blog.csdn.net/hunnish/Services/Pingback.aspx" 
rel=pingback><!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://blog.csdn.net/hunnish/archive/2004/09/03/93171.aspx"
dc:identifier="http://blog.csdn.net/hunnish/archive/2004/09/03/93171.aspx"
dc:title="OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译)"
trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=93171" />
</rdf:RDF>
-->
<SCRIPT>function hide(){showComment();}</SCRIPT>
<BR>
<SCRIPT>document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</SCRIPT>
<BR>
<DIV id=comments>
<H3></H3><A name=95841>&nbsp;</A>
<DIV class=post>
<DIV class=postTitle>victor&nbsp;发表于2004-09-06 2:32 PM&nbsp;&nbsp;IP: 
211.100.22.*</DIV>
<DIV class=postText>牛!</DIV></DIV><BR><A name=129069>&nbsp;</A>
<DIV class=post>
<DIV class=postTitle>大姐&nbsp;发表于2004-10-09 10:52 AM&nbsp;&nbsp;IP: 
61.187.54.*</DIV>
<DIV 
class=postText>请问角点提取采用的是哪种算法?能否提供原文?标定模板的交叉角点的提取是不是也是采用这种算法?</DIV></DIV><BR></DIV>
<DIV class=CommentForm id=commentform>
<H3>发表评论</H3>
<TABLE class=CommentForm>
  <TBODY>
  <TR>
    <TD width=69 height=0></TD>
    <TD></TD></TR>
  <TR>
    <TD width=70>大名:</TD>
    <TD align=left><INPUT id=PostComment.ascx_tbName style="WIDTH: 300px" 
      size=40 name=PostComment.ascx:tbName> <SPAN 
      id=PostComment.ascx_RequiredFieldValidator2 
      style="DISPLAY: none; COLOR: red" initialvalue="" 
      evaluationfunction="RequiredFieldValidatorEvaluateIsValid" 
      display="Dynamic" errormessage="<br>请输入尊姓大名" 
      controltovalidate="PostComment.ascx_tbName"><BR>请输入尊姓大名</SPAN> </TD></TR>
  <TR>
    <TD width=70>网址:</TD>
    <TD align=left><INPUT id=PostComment.ascx_tbUrl style="WIDTH: 300px" 
      size=40 name=PostComment.ascx:tbUrl> </TD></TR>
  <TR>
    <TD colSpan=3>评论&nbsp; <SPAN id=PostComment.ascx_RequiredFieldValidator3 
      style="DISPLAY: none; COLOR: red" initialvalue="" 
      evaluationfunction="RequiredFieldValidatorEvaluateIsValid" 
      display="Dynamic" errormessage="<br>请输入评论" 
      controltovalidate="PostComment.ascx_tbComment"><BR>请输入评论</SPAN> <BR><TEXTAREA id=PostComment.ascx_tbComment style="WIDTH: 381px; HEIGHT: 193px" name=PostComment.ascx:tbComment rows=10 cols=50></TEXTAREA> 
    </TD></TR>
  <TR style="DISPLAY: none">
    <TD height=24>验证码</TD>
    <TD><INPUT id=PostComment.ascx_ValidationKey style="WIDTH: 150px" 
      name=PostComment.ascx:ValidationKey> <INPUT id=VCImageSrc type=hidden 
      value=/VerifyCode.aspx?url=http%3a%2f%2fblog.csdn.net%2fhunnish%2farchive%2f2004%2f09%2f03%2f93171.aspx&amp;datetime=4%2f6%2f2006+6%3a13%3a09+PM&amp;ip=61.167.60.209> 
      <SPAN id=VCImageSpan></SPAN>
      <SCRIPT 
      src="OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译) - HUNNISH的OPENCV专栏.files/deferShowVerifyImage.js" 
      type=text/javascript></SCRIPT>
    </TD></TR>
  <TR>
    <TD colSpan=3><INPUT language=javascript class=Button id=PostComment.ascx_btnSubmit onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " type=submit value=提交 name=PostComment.ascx:btnSubmit>&nbsp;&nbsp;&nbsp; 
      <INPUT id=PostComment.ascx_chkRemember type=checkbox 
      name=PostComment.ascx:chkRemember><LABEL 
      for=PostComment.ascx_chkRemember>记住我?</LABEL></TD></TR>
  <TR>
    <TD colSpan=3><SPAN id=PostComment.ascx_Message 
    style="COLOR: red"></SPAN></TD></TR></TBODY></TABLE></DIV></DIV>
<P id=footer>Powered by: <BR><A id=Footer1_Hyperlink2 
href="http://scottwater.com/blog" name=Hyperlink1><IMG alt="" 
src="OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译) - HUNNISH的OPENCV专栏.files/100x30_Logo.gif" 
border=0></A> <A id=Footer1_Hyperlink3 href="http://asp.net/" 
name=Hyperlink1><IMG alt="" 
src="OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译) - HUNNISH的OPENCV专栏.files/PoweredByAsp.Net.gif" 
border=0></A> <BR>Copyright © HUNNISH </P>
<SCRIPT 
src="OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译) - HUNNISH的OPENCV专栏.files/counter.js"></SCRIPT>

<SCRIPT language=javascript type=text/javascript>
<!--
	var Page_Validators =  new Array(document.all["PostComment.ascx_RequiredFieldValidator2"], document.all["PostComment.ascx_RequiredFieldValidator3"]);
		// -->
</SCRIPT>

<SCRIPT language=javascript type=text/javascript>
<!--
var Page_ValidationActive = false;
if (typeof(clientInformation) != "undefined" && clientInformation.appName.indexOf("Explorer") != -1) {
    if ((typeof(Page_ValidationVer) != "undefined") && (Page_ValidationVer == "125"))
        ValidatorOnLoad();
}

function ValidatorOnSubmit() {
    if (Page_ValidationActive) {
        return ValidatorCommonOnSubmit();
    }
    return true;
}
// -->
</SCRIPT>
</FORM>
<SCRIPT language=javascript>
	<!--
	try{
		hide();
		}
		catch(e){
		}
	//-->
	</SCRIPT>
</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -