<?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; gpusurf</title>
	<atom:link href="http://www.visual-experiments.com/tag/gpusurf/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>2010 visual experiments</title>
		<link>http://www.visual-experiments.com/2011/01/07/2010-visual-experiments/</link>
		<comments>http://www.visual-experiments.com/2011/01/07/2010-visual-experiments/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 16:01:17 +0000</pubDate>
		<dc:creator>Henri</dc:creator>
				<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[ogre3d]]></category>
		<category><![CDATA[photogrammetry]]></category>
		<category><![CDATA[photosynth]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[artoolkit]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[cuda]]></category>
		<category><![CDATA[gpusurf]]></category>
		<category><![CDATA[opencl]]></category>
		<category><![CDATA[visual experiments]]></category>
		<guid isPermaLink="false">http://www.visual-experiments.com/?p=1254</guid>
		<description><![CDATA[Happy new year everyone! 2010 was a year full of visual experiments for me, I hope that you like what you see on this blog. In this post I&#8217;m making a little overview of all visual experiments created by me during this year. This is an opportunity to catch-up something you&#8217;ve missed! I&#8217;d like also [...]]]></description>
			<content:encoded><![CDATA[<h3>Happy new year everyone!</h3>
<p>2010 was a year full of <a href="http://www.visual-experiments.com/">visual experiments</a> for <a href="http://www.visual-experiments.com/about/resume-english/">me</a>, I hope that you like what you see on this blog. In this post I&#8217;m making a little overview of all visual experiments created by me during this year. This is an opportunity to catch-up something you&#8217;ve missed! I&#8217;d like also to thanks some person that have been helping me too: </p>
<ul style="margin-left: 20px;">
<li><strong>Olafur Haraldsson:</strong> for creating <a href="http://www.pgrammetry.com/">the photogrammetry forum</a></li>
<li><strong>Josh Harle:</strong> for his videos tutorials and <a href="http://blog.neonascent.net/">his nice blog</a></li>
<li><strong>You:</strong> for reading this <img src='http://www.visual-experiments.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<h3>Visual experiments created in 2010:</h3>
<p>During this year I have added some features to <strong>Ogre3D</strong>: </p>
<ul style="margin-left: 20px;">
<li><a href="http://www.visual-experiments.com/demos/artoolkitplus-for-ogre3d/">ArToolKitPlus</a>: augmented reality marker-based system</li>
<li><a href="http://www.visual-experiments.com/demos/ogrecuda/">Cuda</a>: for beginner only (at least advanced user could grab some useful code)</li>
<li><a href="http://www.visual-experiments.com/demos/ogreopencl/">OpenCL</a>: for beginner only (at least advanced user could grab some useful code)</li>
<li><a href="http://www.visual-experiments.com/demos/ogrecanvas/">Html5 Canvas</a>: implementation based on <a href="http://code.google.com/p/skia/">skia</a> for graphics and <a href="http://code.google.com/p/v8/">V8</a> for javascript scripting</li>
<li><a href="http://www.visual-experiments.com/2010/11/20/kinect-experiment-with-ogre3d/">Kinect</a>: this is a very hacky solution, I&#8217;ll improve it later</li>
</ul>
<p>I also have learned <strong>GPGPU programming</strong> by myself while coding a partial <a href="http://www.visual-experiments.com/demos/gpusurf/">GPUSurf</a> implementation based on Nico Cornelis paper. But this implementation is not complete and I&#8217;m willing to rewrite it with a GPGPU framework based on OpenGL and CG only (not Ogre3D). With such a framework writing Sift/Surf detector should be easier and more efficient.</p>
<p>I have created some visual experiments related to <strong>Augmented Reality</strong>:</p>
<ul style="margin-left: 20px;">
<li><a href="http://www.visual-experiments.com/2010/07/11/remote-augmented-reality-prototype/">Remote AR prototype</a></li>
<li><a href="http://www.visual-experiments.com/2010/12/13/augmented-reality-outdoor-tracking-becoming-reality/">Outdoor 3D tracking using point cloud generated by structure from motion software</a></li>
<li><a href="http://www.visual-experiments.com/2010/12/22/outdoor-tracking-using-panoramic-image/">Outdoor 2D tracking using panorama image</a></li>
</ul>
<p>My outdoor 3D tracking algorithm for augmented reality needs an accurate point cloud: this is why I&#8217;m interested in <strong>structure from motion</strong> and I&#8217;ve created two SfM toolkit:</p>
<ul style="margin-left: 20px;">
<li><a href="http://www.visual-experiments.com/sfmtoolkit/">SFMToolkit</a> (SiftGPU -> Bundler -> CMVS -> PMVS2)</li>
<li><a href="http://www.visual-experiments.com/photosynthtoolkit/">PhotoSynthToolkit</a> (PhotoSynth -> PMVS2)</li>
</ul>
<h3>Posts published in 2010:</h3>
<ul style="margin-left: 20px;">
<li>2010/12/22: <a href="http://www.visual-experiments.com/2010/12/22/outdoor-tracking-using-panoramic-image/">Outdoor tracking using panoramic image</a></li>
<li>2010/12/20: <a href="http://www.visual-experiments.com/2010/12/20/structure-from-motion-projects/">Structure from motion projects</a></li>
<li>2010/12/13: <a href="http://www.visual-experiments.com/2010/12/13/augmented-reality-outdoor-tracking-becoming-reality/">Augmented Reality outdoor tracking becoming reality</a></li>
<li>2010/11/20: <a href="http://www.visual-experiments.com/2010/11/20/kinect-experiment-with-ogre3d/">Kinect experiment with Ogre3D</a></li>
<li>2010/11/19: <a href="http://www.visual-experiments.com/2010/11/19/photosynthtoolkit-results/">PhotoSynthToolkit results</a></li>
<li>2010/11/09: <a href="http://www.visual-experiments.com/2010/11/09/photosynth-toolkit-updated/">PhotoSynth Toolkit updated</a></li>
<li>2010/11/05: <a href="http://www.visual-experiments.com/2010/11/05/structure-from-motion-toolkit-released/">Structure From Motion Toolkit released</a></li>
<li>2010/09/27: <a href="http://www.visual-experiments.com/2010/09/27/my-5-years-old-quiksee-competitor/">My 5 years old Quiksee competitor</a></li>
<li>2010/09/23: <a href="http://www.visual-experiments.com/2010/09/23/pmvs2-x64-and-videos-tutorials/">PMVS2 x64 and videos tutorials</a></li>
<li>2010/09/08: <a href="http://www.visual-experiments.com/2010/09/08/introducing-opensynther/">Introducing OpenSynther</a></li>
<li>2010/08/22: <a href="http://www.visual-experiments.com/2010/08/22/dense-point-cloud-created-with-photosyth-and-pmvs2/">Dense point cloud created with PhotoSynth and PMVS2</a></li>
<li>2010/08/19: <a href="http://www.visual-experiments.com/2010/08/19/my-photosynth-toolkit/">My PhotoSynth ToolKit</a></li>
<li>2010/07/12: <a href="http://www.visual-experiments.com/2010/07/12/pose-estimation-using-sfm-point-cloud/">Pose Estimation using SfM point cloud</a></li>
<li>2010/07/11: <a href="http://www.visual-experiments.com/2010/07/11/remote-augmented-reality-prototype/">Remote Augmented Reality Prototype</a></li>
<li>2010/07/08: <a href="http://www.visual-experiments.com/2010/07/08/structure-from-motion-experiment/">Structure From Motion Experiment</a></li>
<li>2010/06/25: <a href="http://www.visual-experiments.com/2010/06/25/gpu-surf-video-demo/">GPU-Surf video demo</a></li>
<li>2010/06/23: <a href="http://www.visual-experiments.com/2010/06/23/gpusurf-and-ogregpgpu/">GPUSurf and Ogre::GPGPU</a></li>
<li>2010/06/20: <a href="http://www.visual-experiments.com/2010/06/20/ogrecanvas-a-2d-api-for-ogre3d/">Ogre::Canvas, a 2D API for Ogre3D</a></li>
<li>2010/05/09: <a href="http://www.visual-experiments.com/2010/05/09/ogreopencl-and-ogrecanvas/">Ogre::OpenCL and Ogre::Canvas</a></li>
<li>2010/04/26: <a href="http://www.visual-experiments.com/2010/04/26/cuda-integration-with-ogre3d/">Cuda integration with Ogre3D</a></li>
<li>2010/04/09: <a href="http://www.visual-experiments.com/2010/04/09/multitouch-prototype-done-using-awesomium-and-ogre3d/">Multitouch prototype done using Awesomium and Ogre3D</a></li>
<li>2010/03/05: <a href="http://www.visual-experiments.com/2010/03/05/artoolkitplus-integration-with-ogre3d/">ArToolKitPlus integration with Ogre3D</a></li>
<li>2010/02/20: <a href="http://www.visual-experiments.com/2010/02/20/hello-world/">Hello World !</a></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.visual-experiments.com%2F2011%2F01%2F07%2F2010-visual-experiments%2F&amp;title=2010%20visual%20experiments"><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/2011/01/07/2010-visual-experiments/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Pose Estimation using SfM point cloud</title>
		<link>http://www.visual-experiments.com/2010/07/12/pose-estimation-using-sfm-point-cloud/</link>
		<comments>http://www.visual-experiments.com/2010/07/12/pose-estimation-using-sfm-point-cloud/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 08:42:14 +0000</pubDate>
		<dc:creator>Henri</dc:creator>
				<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[ogre3d]]></category>
		<category><![CDATA[bundler]]></category>
		<category><![CDATA[gpusurf]]></category>
		<category><![CDATA[pose estimation]]></category>
		<category><![CDATA[sift]]></category>
		<category><![CDATA[structure from motion]]></category>
		<guid isPermaLink="false">http://www.visual-experiments.com/?p=600</guid>
		<description><![CDATA[The idea of this pose estimator is based on PTAM (Parallel Tracking and Mapping). PTAM is capable of tracking in an unknown environment thanks to the mapping done in parallel. But in fact if you want to augment reality, it&#8217;s generally because you already know what you are looking at. So, being able to have [...]]]></description>
			<content:encoded><![CDATA[<p>The idea of this pose estimator is based on <a href="http://www.robots.ox.ac.uk/~gk/PTAM/">PTAM</a> <em>(Parallel Tracking and Mapping)</em>. PTAM is capable of tracking in an unknown environment thanks to the mapping done in parallel. But in fact if you want to augment reality, it&#8217;s generally because you already know what you are looking at. So, being able to have a tracking working in an unknown environment is not always needed. My idea was simple: <strong>instead of doing a mapping in parallel, why not using SFM in a pre-processing step ?</strong></p>
<table>
<tbody style="background-color: white">
<tr>
<td colspan="2"><img src="http://www.visual-experiments.com/blog/wp-content/uploads/2010/07/sfm.pose_.estimation.png" alt="" title="sfm.pose.estimation" width="571" height="258" class="alignnone size-full wp-image-621" /></td>
</tr>
<tr>
<td>input: point cloud + camera shot</td>
<td>output: position and orientation of the camera</td>
</tr>
</tbody>
</table>
<div style="height: 10px"></div>
<p>So my outdoor tracking algorithm will eventually work like this:</p>
<ul style="margin-left: 20px">
<li>pre-processing step
<ul style="margin-left: 20px">
<li>generate a point cloud of the outdoor scene you want to track using Bundler</li>
<li>create a binary file with a descriptor <em>(Sift/Surf)</em> per vertex of the point cloud</li>
</ul>
</li>
<li>in real-time, for each frame N:
<ul style="margin-left: 20px">
<li>extract feature using <a href="http://mi.eng.cam.ac.uk/~er258/work/fast.html">FAST</a></li>
<li>match feature from frame N-1 using 2D patch</li>
<li>compute <strong>&#8220;relative pose&#8221;</strong> between frame N and N-1</li>
</ul>
</li>
<li>in almost real-time, for each &#8220;key frame&#8221;:
<ul style="margin-left: 20px">
<li>extract feature and descriptor</li>
<li>match descriptor with those of the point cloud</li>
<li>generate 2D/3D correspondence from matches</li>
<li>compute <strong>&#8220;absolute pose&#8221;</strong> using PnP solver <em>(<a href="http://cvlab.epfl.ch/software/EPnP/">EPnP</a>)</em></li>
</ul>
</li>
</ul>
<p>The tricky part is that absolute pose computation could last several &#8220;relative pose&#8221; estimation. So once you&#8217;ve got the absolute pose you&#8217;ll have to compensate the delay by cumulating the previous relative pose&#8230;</p>
<p>This is what I&#8217;ve got so far:</p>
<ul style="margin-left: 20px">
<li><strong>pre-processing step:</strong> binary file generated using SiftGPU (planning to move on my GPUSurf implementation) and Bundler (planning to move on <a href="http://insight3d.sourceforge.net/">Insight3D</a> or implement it myself using <a href="http://www.ics.forth.gr/~lourakis/sba/index.html">sba</a>)</li>
<li><strong>relative pose:</strong> I don&#8217;t have an implementation of the relative pose estimator</li>
<li><strong>absolute pose:</strong> it&#8217;s basically working but needs some improvements:
<ul style="margin-left: 20px">
<li>switch feature extraction/matching from Sift to Surf</li>
<li>remove unused descriptors to speed-up maching step (by scoring descriptors used as inlier with training data)</li>
<li>use another PnP solver (or add ransac to support outliers and have more accurate results)</li>
</ul>
</li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.visual-experiments.com%2F2010%2F07%2F12%2Fpose-estimation-using-sfm-point-cloud%2F&amp;title=Pose%20Estimation%20using%20SfM%20point%20cloud"><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/07/12/pose-estimation-using-sfm-point-cloud/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>GPU-Surf video demo</title>
		<link>http://www.visual-experiments.com/2010/06/25/gpu-surf-video-demo/</link>
		<comments>http://www.visual-experiments.com/2010/06/25/gpu-surf-video-demo/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 12:29:20 +0000</pubDate>
		<dc:creator>Henri</dc:creator>
				<category><![CDATA[ogre3d]]></category>
		<category><![CDATA[gpusurf]]></category>
		<category><![CDATA[structure from motion]]></category>
		<guid isPermaLink="false">http://www.visual-experiments.com/?p=454</guid>
		<description><![CDATA[In the previous post I&#8217;ve been announcing GPU-Surf first release. Now I&#8217;m glad to show you a live video demo of GPU-Surf and another demo using Bundler (structure from motion tools): There are three demos in this video: GPU-Surf live demo. PlyReader displaying Notre-Dame dataset. PlyReader displaying my own dataset (Place de la Bourse, Bordeaux). [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://www.visual-experiments.com/2010/06/23/gpusurf-and-ogregpgpu/">previous post</a> I&#8217;ve been announcing <a href="http://www.visual-experiments.com/demos/gpusurf/">GPU-Surf</a> first release. Now I&#8217;m glad to show you a live video demo of GPU-Surf and another demo using <a href="http://phototour.cs.washington.edu/bundler/">Bundler</a> (structure from motion tools):</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/lKQZaqG8yJc&#038;hl=fr&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lKQZaqG8yJc&#038;hl=fr&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>There are three demos in this video:</p>
<ol>
<li>GPU-Surf live demo.</li>
<li>PlyReader displaying Notre-Dame dataset.</li>
<li>PlyReader displaying my own dataset (<a href="http://maps.google.fr/maps?cid=16664510742528689060&#038;q=place+de+la+bourse&#038;ved=0CEcQ2wU&#038;ei=WX0kTPCyLd-5jAe4reXTCA&#038;ie=UTF8&#038;hq=place+de+la+bourse&#038;hnear=&#038;ll=44.841576,-0.569524&#038;spn=0.003534,0.006089&#038;t=h&#038;z=18">Place de la Bourse, Bordeaux</a>).</li>
</ol>
<h3>GPU-Surf</h3>
<p>You&#8217;ll get more information on the <a href="http://www.visual-experiments.com/demos/gpusurf/">dedicated demo section</a>.<br />
In this video GPU-Surf was running slowly because of Ogre::Canvas but it should be running really faster.</p>
<h3>PlyReader displaying Notre-Dame dataset</h3>
<p>I&#8217;m also interested in <a href="http://en.wikipedia.org/wiki/Structure_from_motion">structure from motion</a> algorithm, that&#8217;s why I have tested <a href="http://phototour.cs.washington.edu/bundler/">Bundler</a>, which comes with a <a href="http://phototour.cs.washington.edu/datasets/">good dataset of Notre-Dame de Paris</a>.</p>
<p>I have created a very simple PlyReader using Ogre3D, the first version was using billboard to display point cloud but it was slow (30fps with 130k points). Now I&#8217;m using custom vertex buffer and it runs at 800fps with 130k points.</p>
<p>The reconstruction was done by the team who created Bundler from 715 pictures of Notre-Dame de Paris (thanks to Flickr). In fact, in this demo they have done the big part of the job, I have just grab their output to check if my PlyReader was capable of reading such a big file.</p>
<h3>PlyReader displaying my own dataset</h3>
<p>If you already used Bundler you know that structure from motion algorithm needs a very slow pre-processing step to get &#8220;matches&#8221; between pictures of the dataset. Bundler is packaged to use <a href="http://www.cs.ubc.ca/~lowe/keypoints/">Lowe&#8217;s Sift binary</a>, but it&#8217;s very slow because it&#8217;s taking pgm as picture input and the output is written in a text file. Then a matching step is executed using KeyMatchFull.exe which is optimized using libANN but still very slow. </p>
<p>I have replaced the feature extraction and matching steps by my own tool: BundlerMatcher. It is using <a href="http://www.cs.unc.edu/~ccwu/siftgpu/">SiftGPU</a>, which gives a very nice speed-up. As my current implementation of GPU-Surf isn&#8217;t complete I can&#8217;t use it instead of SiftGPU but this is my intention.</p>
<table>
<tbody style="background-color: white">
<tr>
<td colspan="2"><img src="http://www.visual-experiments.com/blog/wp-content/uploads/2010/06/place-de-la-bourse.jpg" alt="" title="place-de-la-bourse" width="590" height="285" class="alignnone size-full wp-image-457" /></td>
</tr>
<tr>
<td>23 pictures taken with a classic camera <br />(Canon Powershot A700)</td>
<td>Point cloud generated using <a href="http://phototour.cs.washington.edu/bundler/">Bundler</a></td>
</tr>
</tbody>
</table>
<div style="height: 20px"></div>
<p>I have created this dataset with my camera and matched the pictures using my own tool: BundlerMatcher. This tool creates the same .key file as Lowe Sift tool and creates a matches.txt file that is used by Bundler. I have tried to get rid off this temporary .key file and keep everything in memory but changing Bundler code to handle this structure was harder than I predicted&#8230; I&#8217;m now more interested by insight3d implementation (<a href="http://insight3d.sourceforge.net/">presentation</a>, <a href="http://sourceforge.net/projects/insight3d/">source</a>) which seems to be easier to hack with.</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%2F06%2F25%2Fgpu-surf-video-demo%2F&amp;title=GPU-Surf%20video%20demo"><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/06/25/gpu-surf-video-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPUSurf and Ogre::GPGPU</title>
		<link>http://www.visual-experiments.com/2010/06/23/gpusurf-and-ogregpgpu/</link>
		<comments>http://www.visual-experiments.com/2010/06/23/gpusurf-and-ogregpgpu/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 21:09:18 +0000</pubDate>
		<dc:creator>Henri</dc:creator>
				<category><![CDATA[ogre3d]]></category>
		<category><![CDATA[gpgpu]]></category>
		<category><![CDATA[gpusurf]]></category>
		<guid isPermaLink="false">http://www.visual-experiments.com/?p=415</guid>
		<description><![CDATA[In this post I&#8217;d like to introduce my GPU-Surf implementation and a new library for Ogre3D Ogre::GPGPU. What is GPUSurf ? It is a GPU accelerated version of Surf algorithm based on a paper of Nico Cornelis1. This version is using GPGPU technique (pixel shader) and Cuda for computing. The Cuda part was done using [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I&#8217;d like to introduce my <a href="http://www.visual-experiments.com/demos/gpusurf/">GPU-Surf implementation</a> and a new library for Ogre3D <a href="http://www.visual-experiments.com/demos/ogregpgpu/">Ogre::GPGPU</a>.</p>
<h3>What is GPUSurf ?</h3>
<p>It is a GPU accelerated version of <a href="http://en.wikipedia.org/wiki/SURF">Surf</a> algorithm based on a paper of Nico Cornelis<sup><a href="#nico_cornelis">1</a></sup>.<br />
This version is using GPGPU technique (pixel shader) and Cuda for computing. The Cuda part was done using my <a href="http://www.visual-experiments.com/demos/ogrecuda/">Ogre::Cuda</a> library and the GPGPU part was done using a new library called <a href="http://www.visual-experiments.com/demos/ogregpgpu/">Ogre::GPGPU</a>. This new library is just a little helper that hide the fact that GPGPU computing is done using quad rendering.</p>
<table>
<tbody style="background-color: white">
<tr>
<td><img src="http://www.visual-experiments.com/blog/wp-content/uploads/2010/06/gpusurf.screenshot.jpg" alt="" title="gpusurf.screenshot" width="560" height="240" class="alignnone size-full wp-image-365" /></td>
</tr>
<tr>
<td>Screenshot of my GPU-Surf implementation <em>(3 octaves displayed)</em></td>
</tr>
</tbody>
</table>
<div style="height: 20px"></div>
<p>GPU-Surf could be used to help panoramic image creation, create tracking algorithm, speed-up structure from motion&#8230; I&#8217;m currently using <a href="http://www.cs.unc.edu/~ccwu/siftgpu/">SiftGPU</a> to speed-up image matching step of structure from motion tools (<a href="http://phototour.cs.washington.edu/bundler/">bundler</a>), but SiftGPU v360 as a memory issue (it&#8217;s eating a lot of virtual memory, your program as to be 64bit to bypass common 32bit application limitation: 2Go of virtual memory under windows), and Sift matching is more expensive than Surf (descriptor of 128 float vs 64 for Surf). That&#8217;s why I have decided to create my own implementation of GPU-Surf.</p>
<table>
<tbody style="background-color: white">
<tr>
<td><iframe frameborder="0" src="http://photosynth.net/embed.aspx?cid=d3b19f2d-59fe-4ce5-8be0-91d0be2f629f&#038;delayLoad=true&#038;slideShowPlaying=false" width="500" height="300"></iframe></td>
</tr>
<tr>
<td>Structure from motion using PhotoSynth</td>
</tr>
</tbody>
</table>
<h3>Implementation details:</h3>
<p>The current version of my implementation of GPU-Surf is uncomplete (descriptor missing, only detector is available). You’ll get all information about license (MIT), svn repository, demo (<a href="http://code.google.com/p/visual-experiments/downloads/list">GPUSurfDemo1.zip</a>) and documentation on the <a href="http://www.visual-experiments.com/demos/gpusurf/">GPUSurf page</a>.</p>
<p><a name="nico_cornelis">[1]</a>: N. Cornelis, L. Van Gool: <em>Fast Scale Invariant Feature Detection and Matching on Programmable Graphics Hardware</em> (<a href="http://homes.esat.kuleuven.be/~ncorneli/gpusurf/ncorneli_cvpr2008.pdf ">ncorneli_cvpr2008.pdf</a>).</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%2F06%2F23%2Fgpusurf-and-ogregpgpu%2F&amp;title=GPUSurf%20and%20Ogre%3A%3AGPGPU"><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/06/23/gpusurf-and-ogregpgpu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
