?? opencv用戶手冊之圖像處理部分(之一):梯度、邊緣與角點(中文翻譯) - hunnish的opencv專欄.htm
字號:
<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>] 發表于 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> </A>
<DIV class=post>
<DIV class=postTitle>victor 發表于2004-09-06 2:32 PM IP:
211.100.22.*</DIV>
<DIV class=postText>牛!</DIV></DIV><BR><A name=129069> </A>
<DIV class=post>
<DIV class=postTitle>大姐 發表于2004-10-09 10:52 AM 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>評論 <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&datetime=4%2f6%2f2006+6%3a13%3a09+PM&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>
<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 + -