<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Visual-Experiments.com &#187; opencv</title>
	<atom:link href="http://www.visual-experiments.com/tag/opencv/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.visual-experiments.com</link>
	<description>ASTRE Henri experiments with Ogre3D and web stuff</description>
	<lastBuildDate>Mon, 16 Jan 2017 18:59:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Outdoor tracking using panoramic image</title>
		<link>http://www.visual-experiments.com/2010/12/22/outdoor-tracking-using-panoramic-image/</link>
		<comments>http://www.visual-experiments.com/2010/12/22/outdoor-tracking-using-panoramic-image/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 13:10:29 +0000</pubDate>
		<dc:creator>Henri</dc:creator>
				<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[ogre3d]]></category>
		<category><![CDATA[opencv]]></category>
		<category><![CDATA[sift]]></category>
		<guid isPermaLink="false">http://www.visual-experiments.com/?p=1167</guid>
		<description><![CDATA[I have made this experiment in 2 days: First of all, I must admit that this is more a &#8220;proof-of-concept&#8221; rather than a prototype&#8230; But the goal was to illustrate a concept needed for my job. I love this kind of challenge! Building something like this in 2 days was only possible thanks to great [...]]]></description>
			<content:encoded><![CDATA[<p>I have made this experiment in 2 days:</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/ZmbP022QXpk?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ZmbP022QXpk?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>First of all, I must admit that this is more a &#8220;proof-of-concept&#8221; rather than a prototype&#8230; But the goal was to illustrate a concept needed for my job. I love this kind of challenge! Building something like this in 2 days was only possible thanks to great open-source library:</p>
<ul style="margin-left: 20px;">
<li><a href="http://www.ogre3d.org/">Ogre3D</a> (MIT)</li>
<li><a href="http://opencv.willowgarage.com/wiki/">OpenCV</a> (BSD)</li>
<li><a href="http://www.cs.unc.edu/~ccwu/siftgpu/">SiftGPU</a> (non-profit license)</li>
</ul>
<h3>Analysis</h3>
<p>I&#8217;m using a panoramic image as reference. For each frame of the video I&#8217;m extracting Sift feature using SiftGPU and matching them with those of the reference image. Then I&#8217;m computing the homography between the 2 images using Ransac homography estimator (OpenCV cvFindHomography).</p>
<h3>Performance</h3>
<p>The performance are low due to complexity of the Sift detection and matching and that I&#8217;m applying the homography using cvWarpPerspective.</p>
<style type="text/css">
table.result {
color: black;
border: 1px solid black;
}
table.result td {
text-align: left;
padding: 1px;
}
</style>
<table class="result">
<tr>
<td>Sift extraction:</td>
<td>28ms</td>
<td>1228 features</td>
</tr>
<tr>
<td>Sift matching:</td>
<td>17ms</td>
<td>using SiftGPU</td>
</tr>
<tr>
<td>Ransac Homography estimation:</td>
<td>2ms</td>
<td>89 inliers of 208 matches</td>
</tr>
<tr>
<td>Homography application:</td>
<td>36ms</td>
<td>done on the CPU with OpenCV</td>
</tr>
<tr>
<td colspan="3">Global: 12fps</td>
</tr>
</table>
<div style="height: 20px;">&nbsp;</div>
<p>I&#8217;m working on another version using <a href="http://svr-www.eng.cam.ac.uk/~er258/work/fast.html">Fast</a> (or <a href="http://www6.in.tum.de/Main/ResearchAgast">Agast</a>) as feature detector and <a href="http://cvlab.epfl.ch/software/brief/index.php">Brief</a> as descriptor. This should lead to a significant speed-up and may eventually run on a mobile&#8230; Using the GPU vertex and pixel shader instead of the CPU to apply the homography should also gives a nice speed-up.</p>
<p>I&#8217;m also aware that it is not correct to apply an homography on a cylindric panoramic image (especially if you don&#8217;t undistort the input video frame too <img src='http://www.visual-experiments.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.visual-experiments.com%2F2010%2F12%2F22%2Foutdoor-tracking-using-panoramic-image%2F&amp;title=Outdoor%20tracking%20using%20panoramic%20image"><img src="http://www.visual-experiments.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.visual-experiments.com/2010/12/22/outdoor-tracking-using-panoramic-image/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
