<?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>What&#039;s new about OTB? &#187; Preview</title>
	<atom:link href="http://blog.orfeo-toolbox.org/category/preview/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.orfeo-toolbox.org</link>
	<description>For the latest news on the Orfeo Toolbox</description>
	<lastBuildDate>Tue, 31 Jan 2012 17:01:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OTB: Wrapping gifts</title>
		<link>http://blog.orfeo-toolbox.org/preview/otb-wrapping-gifts</link>
		<comments>http://blog.orfeo-toolbox.org/preview/otb-wrapping-gifts#comments</comments>
		<pubDate>Tue, 20 Dec 2011 15:39:54 +0000</pubDate>
		<dc:creator>Julien Malik</dc:creator>
				<category><![CDATA[Preview]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[OTB]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=820</guid>
		<description><![CDATA[First of all, we would like to share with all of you the pride and excitement following the success of Pleiades launch on Soyouz which took place on saturday the 17th at 03:03 AM CET. To best prepare OTB for these up-coming images, the next OTB release will happen in late january, allowing to test [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">First of all, we would like to share with all of you the pride and excitement following the <strong>success of Pleiades launch</strong> on Soyouz which took place on saturday the 17th at 03:03 AM CET. To best prepare OTB for these up-coming images, the next OTB release will happen in late january, allowing to test it against real Pleiades images. Until then, we are starting a series of short posts in order to present one of the major changes of this new release : the new applications framework.</p>
<h1 style="text-align: justify;">History</h1>
<p style="text-align: justify;">Until now, there was an OTB-Applications package built on top of the library, which provided command-line tools, Qt and FLTK based GUIs, and Qgis C++ plugins. This package was not very popular among our users : it was lacking of documentation, missed really useful auto-generated GUIs and did not provide an interface to interpreted languages. These applications were barely more than a serie of mains decorated with an argument parser. However, these applications were providing a lot of image manipulation utilities and high-level processing chains like ortho-rectification, classification or segmentation. Being too obscure, they simply did not get the attention they deserved.</p>
<p style="text-align: justify;">Six month ago, we started a side project called OTB-Wrapper, which was designed as a sand-box to experiment with all the possible enhancements to make the applications really useful. After a while, we came up with a complete solution and implemented it directly into the OTB library. All applications from the OTB-Applications package have then been migrated to this new framework, also directly into the OTB library.</p>
<h1 style="text-align: justify;">The new framework in a nutshell</h1>
<p style="text-align: justify;">So, what does this new framework provide to the users ? A lot of things ! See :</p>
<ul>
<li>Each application is now compiled into a single tiny shared-library,</li>
<li>Writing new applications in an external project is as simple as inheriting the base class and calling a CMake macro,</li>
<li>These applications shared libraries are loaded dynamically as plugins of several generic access points :</li>
<ul>
<li>Directly from C++</li>
<li>From an interpreted or compiled higher level language like Python through the SWIG interface,</li>
<li>From a command-line launcher, like the old applications,</li>
<li>From a nice auto-generated Qt GUI,</li>
<li>From QGis through seamless OTB plugins.</li>
</ul>
</ul>
<p style="text-align: justify;">The general philosophy of this new framework is to have to write the processing only once, and then use it from whatever environment, programming language or software you want through one of these access points.</p>
<h1 style="text-align: justify;">Success !</h1>
<p style="text-align: justify;">Even before the official release, success is already showing up :</p>
<ul>
<li>A simple python script allows to generate documentation for all the applications,</li>
<li>A simple python script allows to generate applications file descriptors for integration in external tools like the <a href="http://keo-karisma.esrin.esa.int/keo-home/KEO.html" target="_blank">KEO</a> system from ESA,</li>
<li>A simple python script allows to perform batched processing chaining several applications,</li>
<li>Qt GUIs are really nice to use, with a lot of useful features like automatic parameters estimation (for instance, the ortho-rectification application provides you with the best-fit parameters for your image),</li>
<li>The python interface allows nice integration within <a href="http://www.qgis.org/" target="_blank">QGis</a>,</li>
<li>And the command-line interface is more robust and easier to use.</li>
</ul>
<h1 style="text-align: justify;">Learn more in next posts</h1>
<p style="text-align: justify;">If you want to give this a try, clone a the OTB mercurial repository and activate the <em>BUILD_APPLICATIONS</em> flag. You are ready to go ! In the following posts, we will focus on key features that makes this new framework so exciting. But for now, it is time for us to wish you all <strong>a merry christmas </strong>!</p>
<p style="text-align: justify;">Julien, on behalf of the OTB team</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/preview/otb-wrapping-gifts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jpeg2000 and Pleiades data support in OTB</title>
		<link>http://blog.orfeo-toolbox.org/news/jpeg2000-and-pleiades-data-support-in-otb</link>
		<comments>http://blog.orfeo-toolbox.org/news/jpeg2000-and-pleiades-data-support-in-otb#comments</comments>
		<pubDate>Thu, 24 Nov 2011 16:21:00 +0000</pubDate>
		<dc:creator>Julien Michel</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Preview]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=763</guid>
		<description><![CDATA[With the Pleiades launch a few weeks ahead, there has been a lot of ongoing work from the OTB team to prepare for these new data. Since a lot of discussions happened off the list, either with phone meetings, or on other mailing lists (we will see later on why), and since we now have [...]]]></description>
			<content:encoded><![CDATA[<div>
<p id="internal-source-marker_0.3633089808281511" style="text-align: justify;" dir="ltr">With the <a href="http://www.cnes.fr/web/CNES-en/3236-pleiades.php">Pleiades</a> launch a few weeks ahead, there has been a lot of ongoing work from the OTB team to prepare for these new data. Since a lot of discussions happened off the list, either with phone meetings, or on other mailing lists (we will see later on why), and since we now have a comprehensive knowledge of what the support of Pleiades images in OTB will be, it is about time we explain it to users and developers.</p>
<h4 style="text-align: justify;" dir="ltr">Reminder on Pleiades images</h4>
<p style="text-align: justify;" dir="ltr">We will start with a reminder : Pleiades images will be available in Jpeg2000 format allowing a high compression rate, tiled in 2048&#215;2048 pixels, so a standard Pleiades image will contain a few hundreds of tiles. A typical Pleiades image size is 40 000 x 40 000 pixels (corresponding to a 20 km by 20 km area), and one of the standard product is a pan-sharpened one, which is a merge of the high resolution panchromatic and lower resolution multispectral imagery to create a single high resolution color image. These images would be very heavy without Jpeg2000 compression : for instance, if the Jpeg2000 file weights 1.7 Go, the decompressed file weights 7.3 Go. To decode those JPEG2000 files, there are a few commercial libraries, the most popular beeing <a href="http://www.kakadusoftware.com/">Kakadu</a>. There is also some open-source alternatives, among which <a href="http://code.google.com/p/openjpeg/">OpenJPEG</a> seems to be the most advanced. Of course, for Pleiades support in OTB, we need an open-source solution, even if <a href="http://www.gdal.org/">GDAL</a> can be compiled with a driver based on Kakadu (has to be the commercial version, not the trial one available for free under restrictions of use).</p>
</div>
<h4 style="text-align: justify;">Open-source <a href="http://en.wikipedia.org/wiki/JPEG_2000">JPEG 2000</a> implementation</h4>
<div>
<p style="text-align: justify;" dir="ltr">Back in 2007, the OTB people here at CNES already spotted OpenJPEG as the best open-source bet for JPEG2000 support in OTB. Since the library was missing some important features (like partial decoding and MCT support), they set-up a CNES contract with the CS Company in order to add these features to OpenJPEG. But when this contract was over, the new features were not integrated in OpenJPEG trunk but left on a side branch (the so-called v2), because nobody in OpenJPEG community had in-dept knowledge of what had been done in this new version. The development of the trunk went on with bug-fixes and enhancements, while the v2 branch did not evolve. In the meantime, we started a driver in OTB based on the v2 OpenJPEG version, but this was not a sustainable option, because the v2 was barely maintained. Thanks to its more advanced functionnalities, the v2 branch of OpenJPEG also received interest from other FOSS projects in need for advanced decoding capabilities, and got integrated in at least <a href="http://www.itk.org">ITK</a>, <a href="http://sourceforge.net/projects/gdcm">GDCM</a> and <a href="http://www.gdal.org">GDAL</a>.</p>
<p style="text-align: justify;" dir="ltr">Four months ago, we agreed with the OpenJPEG community that we needed to get the v2 merged with the OpenJPEG trunk. Mickaël Savinaud from the CS OTB team got involved into OpenJPEG development to get the merge between v2 and trunk done, and we now have a full-featured version of OpenJPEG in trunk thanks to his great work and to the support of the OpenJPEG community.</p>
<p style="text-align: justify;" dir="ltr">Now, it is time to face the truth : even with this new version, in terms of decoding performances, this state-of-the-art open-source software is way worse than Kakadu : decoding one tile is way slower than with Kakadu, and one tile of 2048&#215;2048 pixels is the atomic unit for decoding (i.e. if you need one pixel, you will still need to first decode the whole tile).</p>
<p style="text-align: justify;" dir="ltr">We looked into optimization : reducing file seeking, implementing some macroscopic code optimisation (mainly avoiding pessimisation) of the Tier1 part which is clearly identify as the performances bottleneck (see figure below with profiling reports using <a href="http://kcachegrind.sourceforge.net/html/Home.html">kcachegrind</a>). We made some clear progress, but the JPEG2000 standard is complex, and without knowledge of the big picture, we could not gain a lot.</p>
<div id="attachment_785" class="wp-caption aligncenter" style="width: 440px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/11/openjpeg_callgrind.png"><img class="size-large wp-image-785  " title="openjpeg_callgrind" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/11/openjpeg_callgrind-1024x474.png" alt="" width="430" height="199" /></a><p class="wp-caption-text">KCachegrind representation of time percentage per functions</p></div>
<div style="text-align: justify;">
<h4 id="internal-source-marker_0.3633089808281511" dir="ltr">What does it mean for Pleiades data ?</h4>
</div>
<div style="text-align: justify;">
<p dir="ltr">It means that simply decoding a full Pleiades image at full resolution will take about 20 minutes on a decent i5 CPU with 4 Go of RAM, while the same image in standard TIF format would have taken 8 minutes and Kakadu takes only 4 minutes. Any OTB processing pipeline streaming the whole image will be limited by this decompression time. And we are not even talking of sub-sampling or estimating statistics at some point in the pipeline.</p>
<div>
<p id="internal-source-marker_0.3633089808281511" dir="ltr">Of course, we could tell our users to buy a Kakadu licence and compile GDAL with the Kakadu driver enabled, but we can not even tell them how much it will cost, and this is clearly in contradiction with the open-source philosophy of OTB. Still, this remains an option to get high performances JPEG2000 support in OTB, but you are on your own if you choose this solution.</p>
</div>
</div>
<div>
<p id="internal-source-marker_0.3633089808281511" style="text-align: justify;" dir="ltr">Now, what will it be possible to do using Pleiades data with the open-source solution OpenJPEG in OTB ?</p>
<ul style="text-align: justify;">
<li>
<p dir="ltr">On OTB side: No specific handling will be added. It is the responsibility of the developer to know that the JPEG2000 driver is not as fast as the other drivers. The developer has the possibility to easily select the appropriate resolution and accordingly set the size streamed region (to reduce the number of decoding operations).  Of course, metadata related to geometric and radiometric calibration will be supported through <a href="http://www.ossim.org/OSSIM/OSSIM_Home.html" target="_blank">OSSIM</a>. Moreover, we will support the GMLJP2 box included in the Pleiades to support geo-information in case of ortho-image products.</p>
</li>
<li>
<p dir="ltr">On applications side:</p>
</li>
<ul>
<li>
<p dir="ltr">We will provide an application able to convert a Pleiades image, either full or extract, from any JPEG2000 resolution, into another file format (like TIF for instance). Of course, one will need a lot of disk space to handle the decompressed data. Please note that this is not fully supported by Kakadu trial version, which decodes a maximum of 3 channels (and which use is restricted by the way),</p>
</li>
<li>
<p dir="ltr">All applications will support Pleiades images, but it will be highly recommended to first decompress the image to disk for reasonable performances and if more than one processing is to be executed on the image,</p>
</li>
</ul>
<li>
<p dir="ltr">On Monteverdi side:</p>
</li>
<ul>
<li>
<p dir="ltr">Pleiades images will open in a dedicated new type of data in Monteverdi interface, and the user will be able to select the resolution level for decoding,</p>
</li>
<li>
<p dir="ltr">The viewer module will accept this new type of data and we will be able to efficiently navigate within Pleiades images : fast quicklook computation due to JPEG2000 capabilities, instant navigation into a 4 tiles squared area thanks to caching, and quick-enough refresh when moving outside this cached area thanks to parallel tiles decoding. We expect the navigation experience to be quite good !</p>
</li>
<li>
<p dir="ltr">The extract ROI module will accept this new type of data and allow to select an extract of the image using the fast quicklook ability. Caching (which will decompress image to disk in TIF format) will be recommended (this behaviour might be extended to other modules later).</p>
</li>
<li>
<p dir="ltr">The writer module will accept this new type of data for conversion purposes.</p>
</li>
<li>
<p dir="ltr">All other modules will not accept this new type of data : to use them, the user will first have to use the extract ROI module which will produce a plain image type accepted by all modules. Caching will be recommended for this purpose.</p>
</li>
</ul>
</ul>
<h4 style="text-align: justify;" dir="ltr">Closing Thoughts</h4>
<p style="text-align: justify;" dir="ltr">We can hope that the widening use of JPEG2000 in spatial imagery will encourage the improvement of open-source JPEG2000 libraries performances. When and if this becomes available, you will be able to use those datasets in OTB seamlessly, as any other image.</p>
<p style="text-align: justify;" dir="ltr">Until then, we can look at the bright side :</p>
<p style="text-align: justify;" dir="ltr"><strong>OTB will provide an open-source and free access to Pleiades data for those not owning a commercial image processing software <strong> (please note that Gdal is looking into the new OpenJPEG version and might also support Pleiades through it in a near future)</strong>. </strong></p>
<p style="text-align: justify;" dir="ltr"><strong>OTB will provide an efficient solution for Pleiades data decompression and visualization. </strong></p>
<p style="text-align: justify;" dir="ltr"><strong>Last, the whole set of OTB processing remains fully available, at the expense of extra decoding time or once your Pleiades data have been decompressed to disk.</strong></p>
<p style="text-align: justify;" dir="ltr">This has also been a great experience of collaboration between open-source projects towards a common goal. We would like to thank again the members of the OpenJPEG community, as well as the OTB Team at CS for their great work !</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/news/jpeg2000-and-pleiades-data-support-in-otb/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Elevation maps from along-track stereo pairs</title>
		<link>http://blog.orfeo-toolbox.org/preview/elevation-maps-from-along-track-stereo-pairs</link>
		<comments>http://blog.orfeo-toolbox.org/preview/elevation-maps-from-along-track-stereo-pairs#comments</comments>
		<pubDate>Tue, 09 Aug 2011 12:48:51 +0000</pubDate>
		<dc:creator>Julien Michel</dc:creator>
				<category><![CDATA[Preview]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=632</guid>
		<description><![CDATA[Processing stereo pairs to derive an elevation map is a very frequent feature request from our users. The otb::FineRegistrationImageFilter has been a first step toward it but it and allows to estimates disparities in a precise way (see for instance this previous post). Yet, there are several steps missing to achieve an elevation (not disparity) map [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Processing stereo pairs to derive an elevation map is a very frequent feature request from our users. The <a href="http://orfeo-toolbox.org/doxygen-current/classotb_1_1FineRegistrationImageFilter.html">otb::FineRegistrationImageFilter</a> has been a first step toward it but it and allows to estimates disparities in a precise way (see for instance this <a href="http://blog.orfeo-toolbox.org/preview/coming-next-fine-registration">previous post</a>). Yet, there are several steps missing to achieve an elevation (not disparity) map using this tool. In the mean time, nowadays sensors allow to acquire Very High Resolution stereo-pairs along-track (from the same orbit, and near simultaneous acquisition). The future Pleiades sensor will even be able to acquire triplets of stereo-images. All these new sensors make use of the RPC modelling to provide highly accurate sensor-to-ground transformation.</p>
<p><strong>Classical scheme</strong></p>
<p style="text-align: justify;">The classical scheme to compute elevation maps from these kind of data is to first resample both images of the pair into the epipolar geometry (with optional refinement of the sensor-to-ground function using GPCs and tie points) , where displacement related to height only occurs in the horizontal direction. A block-matching algorithm (just like <a href="http://orfeo-toolbox.org/doxygen-current/classotb_1_1FineRegistrationImageFilter.html">otb::FineRegistrationImageFilter</a> does) is then applied to retrieve the disparities. Finally, disparities are casted back to height values using sensor modelling and the elevation map is resampled to a cartographic projection. Several post-processing may be needed to make the produced elevation map usable, which are out of the scope of this post.</p>
<p style="text-align: justify;">However, resampling to epipolar geometry is an heavy process that must be done for both images, and in the case of push-broom acquisition system, this resampling may be tricky. Moreover, this resampling is often done with an average elevation hypothesis, which leads to a wide range of disparities to explore in case of highly varying relief over the scene.</p>
<p style="text-align: justify;"><strong>Implicit exploration of epipolar lines</strong></p>
<p style="text-align: justify;">In Orfeo ToolBox, the <a href="http://orfeo-toolbox.org/doxygen-current/classotb_1_1GenericRSTransform.html">otb::GenericRSTransform</a> allows to map points from sensor geometry to ground, but it also allows to map points between two sensors geometries : we can therefore use it to build a function that will transform a point of the first image of our stereo pair to its homologous point in the second image of the stereo pair, according to both RPC modelling (possibly refined). This function also uses an elevation value as a parameter (either average or drawn from a Digital Elevation Model), so that we in fact have a function which associate a point with a candidate elevation to its homologous point in the other image of the stereo pair. If we transform the same point with a range of candidate elevation, we are then implicitly exploring its associated epipolar line in the other image (a similar approach is performed by the <a href="http://www.micmac.ign.fr/">MicMac software</a>).</p>
<p style="text-align: justify;"><strong>A new OTB filter</strong></p>
<p style="text-align: justify;">Using this principle, we developped a new OTB filter called <a href="http://orfeo-toolbox.org/doxygen-current/classotb_1_1StereoSensorModelToElevationFilter.html">otb::StereoSensorModelToElevationFilter</a>. This filter takes a pair of along-track stereo images, and behave as follows. For each pixel of the first (reference) image:</p>
<ol>
<li>Extract the neighborood of the pixel in the reference image according to the user-defined radius,</li>
<li>For candidate elevations in a user-defined range:</li>
<ol>
<li>Transform the patch grid into the secondary image with the sensor-to-sensor function and the candidate height</li>
<li>Interpolate the corresponding secondary patch</li>
<li>Compute cross-correlation of reference and secondary patches</li>
</ol>
<li>If best correlation is high enough, keep the corresponding best elevation candidate as the final elevation.</li>
</ol>
<p style="text-align: justify;">The output of the algorithm is directly an elevation map in meters, in the same geomety and grid as the reference image of the stereo pair. There is no need to resample both image in epipolar geometry, we only need to interpolate necessary locations along the epipolar lines in the secondary image. One can then orthorectify the elevation map in any desired cartographic projection.</p>
<p style="text-align: justify;">We can see that a difficult part of this algorithm lies in the definition of the appropriate elevation exploration range. First, it requires to know about the average elevation over the area, and even with this information, elevation might be varying a lot over the scene, so this range has to be pretty wide, and lead to high computation time and lots of matching errors. Therefore, the filter allows to draw the initial elevation from a DEM (like SRTM for instance). The algorithm will then explore elevation values around this intiial local elevation, which allows to define a much more narrow range.</p>
<p style="text-align: justify;"><strong>Results</strong></p>
<p style="text-align: justify;">Our first result will be a pair of Worldview 2 images over the city of Toulouse. The following results were obtained on a detail of the multi-spectral images (2.3 meters resolution) over the city stadium.</p>
<div id="attachment_643" class="wp-caption alignleft" style="width: 138px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/07/sensor_stereo_left.png"><img class="size-full wp-image-643 " title="sensor_stereo_left" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/07/sensor_stereo_left.png" alt="" width="128" height="128" /></a><p class="wp-caption-text">©CNES</p></div>
<div id="attachment_642" class="wp-caption alignleft" style="width: 138px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/07/sensor_stereo_right.png"><img class="size-full wp-image-642 " title="sensor_stereo_right" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/07/sensor_stereo_right.png" alt="" width="128" height="128" /></a><p class="wp-caption-text">©CNES</p></div>
<div class="mceTemp">
<dl id="attachment_644" class="wp-caption alignleft" style="width: 138px;">
<dt class="wp-caption-dt"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/07/sensor_stereo_height.png"><img class="size-full wp-image-644 " title="sensor_stereo_height" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/07/sensor_stereo_height.png" alt="" width="128" height="128" /></a></dt>
<dd class="wp-caption-dd"></dd>
</dl>
</div>
<p style="text-align: justify;">Applying the same algorithm to the panchromatic images (0.5 meters resolution) leads to noisier results, but we can still clearly distinguish the shape of the stadium. Image on the left is the correlation mask associated with the result (and produced by the filter). Dark values correspond to low correlation, brighter ones correspond to higher correlation. Please note that in this case, initial height has been subtracted from the result (filter option).</p>
<p style="text-align: left;"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/wv2_h_ew_pan.png"><img class="alignleft size-full wp-image-672" title="wv2_h_ew_pan" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/wv2_h_ew_pan.png" alt="" width="214" height="214" /></a></p>
<p style="text-align: left;"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/wv2_h_ew_pan_correl.png"><img class="alignnone size-full wp-image-673" title="wv2_h_ew_pan_correl" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/wv2_h_ew_pan_correl.png" alt="" width="214" height="214" /></a></p>
<p style="text-align: justify;">Next results were obtained from a pair of WorldView 2 multi-spectral images (2.3 meters)  over the area of Aurignac, in France, an area of agricultural and natural landscape with lots of valley and hills. The two images were first properly down-sampled at a resolution of around 11.5 meters before the process was applied. The upper-left corner is more blur because it is an area which is only viewed in one of the image, and thus contains only the initial SRTM elevation.</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/aurignac_small.png"><img class="aligncenter size-full wp-image-660" title="aurignac_small" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/aurignac_small.png" alt="" width="1346" height="958" /></a></p>
<p>The two images bellow shows the difference between the SRTM (on the left) and the estimated elevation (on the right).</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/aurignac_srtm.png"><img class="alignleft size-full wp-image-708" title="aurignac_srtm" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/aurignac_srtm.png" alt="" width="223" height="223" /></a><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/aurignac_estimated.png"><img class="size-full wp-image-709 alignnone" title="aurignac_estimated" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/aurignac_estimated.png" alt="" width="223" height="222" /></a></p>
<p style="text-align: justify;">If one does not want to use an initial DEM, the filter can start from a user-defined average elevation. Next image shows the result of using an average elevation on the Aurignac scene. Red pixels are those for which correlation fails. The result looks worse than the one using an initial DEM because in the DEM case pixels for which correlation fails are given the intial DEM value, which leads to a smooth result.</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/average_elevation1.png"><img class="alignnone size-full wp-image-725" title="average_elevation" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2011/08/average_elevation1.png" alt="" width="1677" height="1082" /></a></p>
<p><strong>Conclusion</strong></p>
<p style="text-align: justify;">Of course, this block-matching algorithm is still very simple, and we do not claim that these results are better, faster or even valid with respect to those one can produce with similar tools. For instance, it is obvious that the results suffers from the well known fattening effect, and no particular filtering is performed to reduce it. The same holds for occlusions, incorrect matches or stereoscopic effects. Using some work from <a href="http://www.ipol.im/">Ipol</a> would be of great interest in this purpose. Still, this filter provides a very simple tool to perform elevation map estimation from along-track stereo pairs which makes use of the generic implementation of sensor-to-ground and ground-to-sensor transformation in Orfeo ToolBox to avoid the need for explicit epipolar geometry. Built-in access to DEM allows to initialise the height map with sound values and thus to narrow the search space. One can also make use of the filter streaming capability to produce only part of the image, which is more delicate with the standard scheme. Future work is to speed-up the computation, since the filter currently makes an intensive use of the sensor to sensor transform and of interpolation. Reviewers are welcome to read and comment the code which can be found <a href="http://hg.orfeo-toolbox.org/OTB/file/f54e1ff3f302/Code/DisparityMap/otbStereoSensorModelToElevationMapFilter.txx">here</a>, whereas users can give it a try using the new <strong>otbStereoSensorModelToElevationMap-cli </strong>application from the latest revision.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/preview/elevation-maps-from-along-track-stereo-pairs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Already Available: Band Math</title>
		<link>http://blog.orfeo-toolbox.org/preview/band-math</link>
		<comments>http://blog.orfeo-toolbox.org/preview/band-math#comments</comments>
		<pubDate>Wed, 20 Oct 2010 15:10:53 +0000</pubDate>
		<dc:creator>Aurelien Bricier</dc:creator>
				<category><![CDATA[Preview]]></category>
		<category><![CDATA[band math]]></category>
		<category><![CDATA[Monteverdi]]></category>
		<category><![CDATA[OTB]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=455</guid>
		<description><![CDATA[When processing your images and building up your cutting-edge processing chain with OTB, the need arises to do simple arithmetic operations between the different bands of your images : substracting two bands to study the image differences, threshold the image, apply conditional filtering rule or perform a logarithmic rescaling for example. It requires the use [...]]]></description>
			<content:encoded><![CDATA[<p>When processing your images and building up your cutting-edge processing chain with OTB, the need arises to do simple arithmetic operations between the different bands of your images : substracting two bands to study the image differences, threshold the image, apply conditional filtering rule or perform a logarithmic rescaling for example. It requires the use of several basic operation filters, such as <a href="http://orfeo-toolbox.org/Doxygen/classitk_1_1SubtractImageFilter.html" target="_blank">itk::SubtractImageFilter</a>, for each and every operand you want to apply. The brand new <a href="http://www.orfeo-toolbox.org/doxygen-current/classotb_1_1BandMathImageFilter.html" target="_blank">BandMathImageFilter</a> provides a simpler and more efficient way to perform complex mathematical operations over n images. It is based on the mathematical parser library <a href="http://muparser.sourceforge.net/" target="_blank">muParser</a> and comes with a bunch of build-in functions and operators (listed <a href="http://muparser.sourceforge.net/mup_features.html#idDef2" target="_blank">here</a>). This homebrewed digital calculator is also bundled with custom functions allowing to compute a full expression result simply and really fast, since the filter supports streaming and multi-threading.</p>
<p>This new functionality has also been included into the Monteverdi application to provide a intuitive way to perform complex band computation the easy way. The module also prevents error in the mathematical command by checking the expression as the user types it, and notifying information on the detected error:</p>
<div id="attachment_460" class="wp-caption aligncenter" style="width: 291px"><a href="../wp-content/uploads/2010/10/snapshot1.png"><img class="size-medium wp-image-460   " src="../wp-content/uploads/2010/10/snapshot1-300x206.png" alt="Expression check and error notifier" width="281" height="192" /></a><p class="wp-caption-text">The new Monteverdi Band Math module showing syntax error on mathematical expression.</p></div>
<div id="attachment_459" class="wp-caption aligncenter" style="width: 291px"><a href="../wp-content/uploads/2010/10/snapshot2.png"><img class="size-medium wp-image-459   " src="../wp-content/uploads/2010/10/snapshot2-300x206.png" alt="" width="281" height="192" /></a><p class="wp-caption-text">Correct mathematical expressions are highlighted in green.</p></div>
<p>This feature is already available in <a href="http://blog.orfeo-toolbox.org/news/release-of-otb-3-6-and-monteverdi-1-4-and-new-otb-developers-mailing-list" target="_blank">the release 3.6 of the Orfeo Toolbox</a>.</p>
<p>Give it a try!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/preview/band-math/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coming next: Fine Registration</title>
		<link>http://blog.orfeo-toolbox.org/preview/coming-next-fine-registration</link>
		<comments>http://blog.orfeo-toolbox.org/preview/coming-next-fine-registration#comments</comments>
		<pubDate>Wed, 25 Aug 2010 11:47:43 +0000</pubDate>
		<dc:creator>Julien Michel</dc:creator>
				<category><![CDATA[Preview]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=423</guid>
		<description><![CDATA[Local displacements estimation between two images is a common task in many remote sensing applications : DEM extraction, clouds detection &#8230; In Orfeo ToolBox, some filters are already available to perform this kind of task, like the otb::NCCRegistrationFilter based on a finite differences method or the otb::DisparityMapEstimationMethod which allows to apply ITK registration framework locally [...]]]></description>
			<content:encoded><![CDATA[<p>Local displacements estimation between two images is a common task in many remote sensing applications : DEM extraction, clouds detection &#8230; In Orfeo ToolBox, some filters are already available to perform this kind of task, like the <a href="http://www.orfeo-toolbox.org/doxygen-current/classotb_1_1NCCRegistrationFilter.html">otb::NCCRegistrationFilter</a> based on a finite differences method or the <a href="http://www.orfeo-toolbox.org/doxygen-current/classotb_1_1DisparityMapEstimationMethod.html">otb::DisparityMapEstimationMethod</a> which allows to apply ITK registration framework locally on an irregular grid. Yet, an efficient implementation of the classical block matching algorithm was still missing. Starting next release and already available for our early users (see <a href="http://wiki.orfeo-toolbox.org/index.php/Source_checkout_Instructions"> how to get the latest source code</a>), the <strong>otb::FineRegistrationImageFilter</strong> along with the <strong> Fine Correlation </strong> Monteverdi module intend to fill the gap.</p>
<p>The new <strong>otb::FineRegistrationImageFilter</strong> uses the full range of image-to-image metrics available in ITK (<a href="http://www.orfeo-toolbox.org/SoftwareGuide/SoftwareGuidech9.html#x32-1540009.7">see the available metrics here</a>) to perform block matching on a given neighborhood at each location of the reference image. The filter has two outputs, the optimum metric field and the deformation field (i.e. displacement in each image direction for which the optimum has been found), and both outputs support streaming. The filter performs dichotomic sub-pixel refinement up to a user defined accuracy, allows to generate coarser result with respect to a given grid step and can take into account an initial offset between the two images. It can also process reference and moving images with different sizes, origins and spacings. Here are some results of applying this filter to a pair of small stereo patches with two different metrics: the correlation and the mean reciprocal square difference (MRSD).</p>
<div style=clear:both;></div>
<div id="attachment_429" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoFixed.png"><img class="size-thumbnail wp-image-429" title="Reference" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoFixed.png" alt="First image of the stereo pair" width="160" height="130" /></a><p class="wp-caption-text">First image</p></div>
<div id="attachment_435" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoCorrelResampled.png"><img class="size-thumbnail wp-image-435" title="CorrelationResampled" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoCorrelResampled.png" alt="Second image resampled using displacements estimated from correlation" width="160" height="130" /></a><p class="wp-caption-text">Second image resampled (correlation)</p></div>
<div id="attachment_433" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMRSDResampled.png"><img class="size-thumbnail wp-image-433" title="MRSDResampled" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMRSDResampled.png" alt="Second image resampled using displacements estimated from Mean Reciprocal Square Difference" width="160" height="130" /></a><p class="wp-caption-text">Second image resampled (MRSD)</p></div>
<div id="attachment_430" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMoving.png"><img class="size-full wp-image-430" title="Moving" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMoving.png" alt="Second image of the stereo pair" width="160" height="130" /></a><p class="wp-caption-text">Second image of the stereo pair</p></div>
<div style=clear:both;></div>
<div id="attachment_434" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoCorrel.png"><img class="size-thumbnail wp-image-434" title="Correlation" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoCorrel.png" alt="Maximum of correlation field" width="160" height="130" /></a><p class="wp-caption-text">Correlation field</p></div>
<div id="attachment_436" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMRSD.png"><img class="size-thumbnail wp-image-436" title="MRSD" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMRSD.png" alt="Maximum of Mean Reciprocal Square Difference field" width="160" height="130" /></a><p class="wp-caption-text">MRSD field</p></div>
<div id="attachment_431" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoCorrelField.png"><img class="size-thumbnail wp-image-431" title="CorrelationField" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoCorrelField.png" alt="Displacement in the epipolar direction estimated using Correlation" width="160" height="130" /></a><p class="wp-caption-text">Displacement (correlation)</p></div>
<div id="attachment_432" class="wp-caption alignleft" style="width: 100px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMRSDField.png"><img class="size-thumbnail wp-image-432" title="MRSDField" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/StereoMRSDField.png" alt="Displacement in the epipolar direction estimated using Mean Reciprocal Square Difference" width="160" height="130" /></a><p class="wp-caption-text">Displacement (MRSD)</p></div>
<div style=clear:both;></div>
<p>This new filter can be accessed through Monteverdi using the new <strong> Fine Correlation </strong> module. This module allow to perform displacement estimation using the standard correlation metric. It also includes an optional gaussian smoothing of the input images, an optional resampling of the second image and allows to tune all the parameters in a clear and compact way. Here is what it looks like.</p>
<div style=clear:both;></div>
<div id="attachment_443" class="wp-caption aligncenter" style="width: 219px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/FineCorrelationModule.png"><img class="size-medium wp-image-443" title="FineCorrelationModule" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/FineCorrelationModule-209x300.png" alt="The new Fine Correlation module for Monteverdi" width="209" height="300" /></a><p class="wp-caption-text">The new Fine Correlation module for Monteverdi</p></div>
<div style=clear:both;></div>
<p>Here is an example of application of this new feature. Using Monteverdi, we produce two patches of ortho-image from a Quickbird bundle product over a cloudy part of the scene. The panchromatic image has a ground sampling distance of 0.7 meters, whereas the multispectral one has 2.8 meters.</p>
<div style=clear:both;></div>
<div id="attachment_445" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulousePanUtm.png"><img class="size-medium wp-image-445" title="qbToulousePanUtm" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulousePanUtm-300x300.png" alt="Cloudy extract of a Quickbird panchromatic ortho-image" width="300" height="300" /></a><p class="wp-caption-text">Panchromatic</p></div>
<div id="attachment_446" class="wp-caption alignleft" style="width: 85px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulouseXsUtmRGB.png"><img class="size-full wp-image-446" title="qbToulouseXsUtmRGB" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulouseXsUtmRGB.png" alt="Cloudy extract of a Quickbird multispectral ortho-image" width="256" height="256" /></a><p class="wp-caption-text">Multispectral</p></div>
<div style=clear:both;></div>
<p>Due to the space between the panchromatic and multispectral detectors, there is a small stereo effect between the two images. This space also induces a small time delay between the two images, that is why some moving objects (such as cars) show a small displacement. These two effects are well known (see <a href="http://www.google.fr/url?sa=t&amp;source=web&amp;cd=3&amp;ved=0CCoQFjAC&amp;url=http%3A%2F%2Fwww.itc.nl%2Fisprsc7%2Fsymposium%2Fproceedings%2FTS17_1.pdf&amp;rct=j&amp;q=moving%20objects%20quickbird&amp;ei=vS91TPKzCpi8jAe07LG5Bg&amp;usg=AFQjCNG5eO35b9gD7ow3RJdYFNBHJ2g8bQ&amp;sig2=ndNJlFKS6okX9xzgS4YJyg&amp;cad=rja"> this paper</a> for instance).</p>
<p>Using the new <strong> Fine Correlation </strong> module, it is possible to estimate displacements between the intensity of the multispectral image and a gaussian-smoothed version of the panchromatic image. In the below image of the estimated displacement amplitude, we can clearly see that the cloud, being a lot higher than surrounding ground, shows a noticeable displacement due to the stereo effect.</p>
<div style=clear:both;></div>
<div id="attachment_447" class="wp-caption alignleft" style="width: 210px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulouseCorrel.png"><img class="size-full wp-image-447" title="qbToulouseCorrel" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulouseCorrel.png" alt="Maximum correlation between multispectral and panchromatic image" width="256" height="256" /></a><p class="wp-caption-text">Correlation field</p></div>
<div id="attachment_448" class="wp-caption alignleft" style="width: 210px"><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulouseFieldAmp.png"><img class="size-full wp-image-448" title="qbToulouseFieldAmp" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/08/qbToulouseFieldAmp.png" alt="Amplitude of displacement between multispectral and panchromatic image" width="256" height="256" /></a><p class="wp-caption-text">Amplitude of displacement</p></div>
<div style=clear:both;></div>
<p>Please feel free to give a try to the new filter and module, and do not hesitate to send your feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/preview/coming-next-fine-registration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outside The Box (OTB)</title>
		<link>http://blog.orfeo-toolbox.org/preview/outside-the-box-otb</link>
		<comments>http://blog.orfeo-toolbox.org/preview/outside-the-box-otb#comments</comments>
		<pubDate>Fri, 09 Apr 2010 14:46:14 +0000</pubDate>
		<dc:creator>Emmanuel Christophe</dc:creator>
				<category><![CDATA[Preview]]></category>
		<category><![CDATA[Monteverdi]]></category>
		<category><![CDATA[tile map]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=339</guid>
		<description><![CDATA[Now that computer are connected to the internet and that tons petabytes of data are available, that would be a shame not to use all this for some processing. The development version of Monteverdi has just added the capability to get images from out of your box: tile map access. Basically, it gets data which [...]]]></description>
			<content:encoded><![CDATA[<p>Now that computer are connected to the internet and that tons petabytes of data are available, that would be a shame not to use all this for some processing. The development version of Monteverdi has just added the capability to get images from out of your box: <strong>tile map access</strong>.</p>
<p>Basically, it gets data which are provided as small image files to produce a big image of the area requested. The available source for now are <a href="http://www.openstreetmap.org/">open street map</a>,  landsat background provided by <a href="http://www.nearmap.com">nearmap</a>, and a hill shaded terrain model.</p>
<p>After launching Monteverdi, just pick up the <strong>tilemap import</strong>:</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/04/monteverdi-tilemap1.png"><img class="aligncenter size-medium wp-image-340" title="monteverdi-tilemap1" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/04/monteverdi-tilemap1-300x171.png" alt="" width="300" height="171" /></a></p>
<p>You can then <strong>choose your location</strong>, either by providing the latitude and longitude or if you have no idea of it, the name of the city, street, town, country, etc. Also pick up the level of zoom (0 is the entire earth, 18 is really zoomed in) and the size of the image you want as an output.</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/04/monteverdi-tilemap2.png"><img class="aligncenter size-medium wp-image-341" title="monteverdi-tilemap2" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/04/monteverdi-tilemap2-250x300.png" alt="" width="250" height="300" /></a></p>
<p>After that, you get some nice images that you can <strong>plug to the other processing algorithms </strong>available in Monteverdi:</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/04/monteverdi-tilemap3-sc.png"><img class="aligncenter size-full wp-image-342" title="monteverdi-tilemap3-sc" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2010/04/monteverdi-tilemap3-sc.png" alt="" width="550" height="466" /></a></p>
<p>This is still quite experimental so we are willing to get any suggestion on how to improve that. The tiles are kept locally in cache to minimize the network transfer when working repeatedly on the same area, but try to stay reasonable in term of how much data are requested&#8230;</p>
<p>Note that the stuff is working on both direction even if we illustrated only the part which is getting the image. The hill shading part is provided by the OTB server and <strong>all the tiles</strong>, several hundreds of thousand, have been <strong>generated by OTB</strong>. This behave (almost) like a standard writer, so <strong>tiling your own satellite images</strong> (with of without additional processing in between) should be just plumbing some filters together.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/preview/outside-the-box-otb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coming soon: Visualization Refactoring</title>
		<link>http://blog.orfeo-toolbox.org/preview/coming-soon-visualization-refactoring</link>
		<comments>http://blog.orfeo-toolbox.org/preview/coming-soon-visualization-refactoring#comments</comments>
		<pubDate>Mon, 23 Mar 2009 21:59:46 +0000</pubDate>
		<dc:creator>Julien Michel</dc:creator>
				<category><![CDATA[Preview]]></category>
		<category><![CDATA[kml]]></category>
		<category><![CDATA[shapefile]]></category>
		<category><![CDATA[viewer]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=161</guid>
		<description><![CDATA[At first, the visualization module of the Orfeo ToolBox was designed as a lightweight tool to view results at the end of a pipeline and to be integrated into graphical OTB applications. But as the number of these applications increases, we started adding more and more features to this tool: polygonal ROI selection, link betweeen [...]]]></description>
			<content:encoded><![CDATA[<p>At first, the visualization module of the <strong>Orfeo ToolBox</strong> was designed as a lightweight tool to view results at the end of a pipeline and to be integrated into graphical <strong>OTB </strong>applications. But as the number of these applications increases, we started adding more and more features to this tool: polygonal ROI selection, link betweeen displays, histograms &#8230; Since the initial design was not supposed to handle such things, code was growing and side-effects became more and more frequent. Needless to say, the cost of adding new functions tends to grow along with the code &#8230; It was about time to do something.</p>
<p>For a few weeks now, the OTB development team has been working on this task called <strong>refactoring</strong>. In software development, the purpose of <strong>refactoring </strong>is to rewrite parts of the code to enhance its robustness and clarity, to make it easier to maintain and re-usable in other contexts, without modifying its external functional behaviour (source: <a title="Wikipedia article on Code Refactoring" href="http://en.wikipedia.org/wiki/Code_refactoring" target="_blank">wikipedia</a>). That is why end users should not notice a lot of changes appart from minor changes in the way it looks. But behind the curtains, it makes a big difference.</p>
<p>The whole visualization module is now fully compliant with the <strong>Model-View-Controller</strong> architecture in use in the most recent OTB applications. The initial limited set of classes has been splitted into several lighter classes and customization entry points have been carefully introduced in each critical part in order to provide maximum extensibility at minimal cost. Adding a new user interaction, a new type of curve to display or a new eyecandy object rendering onto the image is now as simple as rewriting a light class with about no code overhead.</p>
<p>The <em>otbFeatureExtractionApplication </em>was chosen to beta-test the refactored module, and was therefore modified to use the new visualization tool. Migrating the applications essentially involved removing hundreds of lines of code without compromising any of its functions, and therefore greatly improved its clarity, robustness and maintainabilty. We are already on the way to migrate other applications in order to make everyone benefit from the changes.</p>
<div id="attachment_169" class="wp-caption alignnone" style="width: 496px"><img class="size-full wp-image-169" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2009/03/featureextractionapplicationscaled.png" alt="The otbFeatureExtractionApplication now uses the new visualization module" width="486" height="291" /><p class="wp-caption-text">The otbFeatureExtractionApplication now uses the new visualization module</p></div>
<p>Using the new design, we also built a new overlay component to render the content of a shapefile or a kml file over an image in about no time.</p>
<div id="attachment_170" class="wp-caption alignnone" style="width: 496px"><img class="size-full wp-image-170" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2009/03/standardviewerwithroadsscaled.png" alt="Using the new design, a tool to quickly render vector data files (shapefile or kml) has been built" width="486" height="291" /><p class="wp-caption-text">Using the new design, a tool to quickly render vector data files (shapefile or kml) has been built</p></div>
<p>Of course, this does not extend the functionnal scope of the Orfeo ToolBox or its applications, but in the future, it will help us to reduce the cost and improve the robustness of new applications. Developping users will also find it easier to extend it to suit their needs. For further technical details, you might want to read the <a title="OTB wiki page on visualization refactoring" href="http://wiki.orfeo-toolbox.org/index.php/Visualisation_Refactoring" target="_blank">OTB wiki page on this topic,</a> which includes a small tutorial to start using the new visualization module.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/preview/coming-soon-visualization-refactoring/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Road extraction revamped</title>
		<link>http://blog.orfeo-toolbox.org/preview/road-extraction-revamped</link>
		<comments>http://blog.orfeo-toolbox.org/preview/road-extraction-revamped#comments</comments>
		<pubDate>Fri, 16 Jan 2009 02:31:51 +0000</pubDate>
		<dc:creator>Emmanuel Christophe</dc:creator>
				<category><![CDATA[Preview]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[google earth]]></category>
		<category><![CDATA[kml]]></category>
		<category><![CDATA[road extraction]]></category>
		<category><![CDATA[shapefile]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=116</guid>
		<description><![CDATA[The road extraction application was one of the first applications distributed with OTB. Originally, it was intended for demonstration purposes only for the IEEE ICIP 2007 conference. It was suffering from serious shortcomings in terms of size of the image to process, export of the results, access to the parameters, etc. The application has been [...]]]></description>
			<content:encoded><![CDATA[<p>The road extraction application was one of the first applications distributed with OTB. Originally, it was intended for demonstration purposes only for the IEEE ICIP 2007 conference. It was suffering from serious shortcomings in terms of size of the image to process, export of the results, access to the parameters, etc.</p>
<p>The application has been redesigned from scratch and will be distributed with the next release of OTB (2.8) coming next Monday. You can now load full images, as only the area displayed will be processed. You also have access to all the parameters (you can refer to the ICIP paper for details:<span class="bodyCopyBlackLargeSpaced"> E. Christophe, J.                                                                       Inglada,</span><span class="headNavBlueXLarge2"> <em>Robust Road Extraction for High Resolution Satellite Images</em></span>, ICIP 2007).</p>
<div id="attachment_117" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-117" title="road-extract1-reduced" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2009/01/road-extract1-reduced.png" alt="Road Extraction Application" width="450" height="361" /><p class="wp-caption-text">Road Extraction Application</p></div>
<p>One of the main improvement is coming from the changes in the vector data handling. Now, OTB knows how to convert these data between different projection systems (which could be map projections or sensor models). That means that you can now export the results of the main OTB application in shapefile format to load it in you favorite GIS (<a title="QGIS" href="http://www.qgis.org" target="_blank">Quantum GIS</a> for example) or in KML to load it in <a title="Google Earth" href="http://earth.google.com/" target="_blank">Google Earth</a>.</p>
<p>For example, with the previous extraction, Google Earth will display:</p>
<div id="attachment_118" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-118" title="road-extract2-reduced" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2009/01/road-extract2-reduced.png" alt="Road extraction results on Google Earth" width="450" height="341" /><p class="wp-caption-text">Road extraction results on Google Earth</p></div>
<p>You can notice that there is an offset of several meters due to registration problems. Indeed the orthorectification of the image used for the extraction was not done with OTB and images on Google Earth can also suffer from registration problems.</p>
<p>Looking as such results may give you some ideas of new stuff to try with OTB. We are bubbling with ideas but lacking the time to try them all!</p>
<p>One last thing, the algorithm included here is far from being perfect and was designed mostly to be fast enough to allow interaction. There are many ways to improve the results and adapt the algorithm to your needs. The good thing is that this application has been designed following the MVC architecture. That means that the visualization (the View) is decoupled from the processing (the Model). You could quite easily create a new model with a completely different algorithm to have a better road extraction application. Feel free to reuse the code!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/preview/road-extraction-revamped/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Counting Objects</title>
		<link>http://blog.orfeo-toolbox.org/uncategorized/counting-objects</link>
		<comments>http://blog.orfeo-toolbox.org/uncategorized/counting-objects#comments</comments>
		<pubDate>Thu, 08 Jan 2009 08:16:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Preview]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=106</guid>
		<description><![CDATA[OTB 2.8 (to be relased next week) will ship an object counting application. Object counting is one of the main features needed by the future Pléiades imagery end users. Therefore, we decided to implement object counting as a standalone application. Object counting includes a very broad field of problems. For this first version of the [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">OTB 2.8 (to be relased next week) will ship an object counting application. Object counting is one of the main features needed by the future Pléiades imagery end users. Therefore, we decided to implement object counting as a standalone application.</p>
<p style="text-align: left;">Object counting includes a very broad field of problems. For this first version of the application, we have narrowed the problem to the case where the objects to be counted are compact and radiometrically homogeneous. In this case, an operator can select several of the objects she wants to count as training examples and a simple algorithm can find the other objects in the image. After that, the counting step is trivial.</p>
<p style="text-align: left;">The OTB library offers all the building blocks needed for this kind of algorithm. Actually, 2 different algorithms have been implemented in the application by now.</p>
<p style="text-align: left;">The first one uses a supervised classification (a One-Class SVM) fused with the result of a Mean-Shift clustering. After that, the connected components of the classifed image are extracted and counted. This approach is not very stable and needs very pertinent examples in order to give good results. However, it can be useful in some cases.</p>
<p style="text-align: left;">The second approach, which is rather robust is as follows. Using the examples entered by the user, a mean spectral reference is computed (remember that we are assuming that the objects are radiometrically homogeneous). This spectral reference is used to compute a spectral angle for all the pixels in the image. The spectral angle is thresholded. After that, the algorithm is identical as the SVM one: extract the connected components and count.</p>
<p style="text-align: left;">The following image shows an example of use of the application.</p>
<div class="mceTemp mceIEcenter" style="text-align: left;">
<dl id="attachment_107" class="wp-caption aligncenter" style="width: 410px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-107" title="objectcountingsam" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2009/01/objectcountingsam.png" alt="Obect counting results" width="400" height="365" /></dt>
<dd class="wp-caption-dd">Obect counting results</dd>
</dl>
</div>
<p style="text-align: left;">The red polygons are the examples selected by the operator. As you can see, some parameters can be selected on the GUI. The resulting objects are plotted in blue on top of the image.</p>
<p style="text-align: left;">What is also interesting about this application is that you can load a full scene (say, 30000&#215;30000 pixels) and tune the algorithm on a small area. The tuning and the generation of the results for the small area will take only a few seconds. Once you are happy with the results, you can run the processing on the full image by using the &#8220;File&#8221; menu. The results can be exported as a raster labeled image or in vector format (shape or kml). With the latter option, and if you are using ortho-rectified images, you can upload the results of the counting to GoogleEarth!</p>
<p style="text-align: left;">The source code for the application is as usual available in the <a href="http://hg.orfeo-toolbox.org/">Mercurial site</a>. You will need to update both the library and the applications in order to compile the application.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/uncategorized/counting-objects/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fine registration</title>
		<link>http://blog.orfeo-toolbox.org/uncategorized/fine-registration</link>
		<comments>http://blog.orfeo-toolbox.org/uncategorized/fine-registration#comments</comments>
		<pubDate>Wed, 10 Dec 2008 16:48:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Preview]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.orfeo-toolbox.org/?p=86</guid>
		<description><![CDATA[In preparation for release 2.8, we have developed an application which allows to perform fine registration of images. The application, which can already be downloaded from the mercurial repository, takes a pair of single band images with similar geometry. They are displayed using a color composition (R=fixed, G=moving, B=resampled moving) as shown in the following [...]]]></description>
			<content:encoded><![CDATA[<p>In preparation for release 2.8, we have developed an application which allows to perform fine registration of images. The application, which can already be downloaded from the <a href="http://hg.orfeo-toolbox.org">mercurial repository</a>, takes a pair of single band images with similar geometry. They are displayed using a color composition (R=fixed, G=moving, B=resampled moving) as shown in the following image.</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2008/12/fra1.png"><img class="alignnone size-full wp-image-89" title="Fine registration" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2008/12/fra1.png" alt="" width="500" height="547" /></a></p>
<p>Of course, before the registration starts, the resampled moving image is identical to the moving one. Using the widgets on the lower right part of the GUI, the user can tune the parameters for the disparity map estimation. Using the <em>Run</em> button, the disparity map estimation is triggered on the displayed area only. This way, the optimum set of parameters can be found by try and error.</p>
<p>Once the disparity map is estimated, it is displayed on the lower left part of the GUI. A color composition is used as follows: R= horizontal disparity, G= vertical disparity, B=modulus of the deformation field.</p>
<p><a href="http://blog.orfeo-toolbox.org/wp-content/uploads/2008/12/fra21.png"><img class="alignnone size-full wp-image-90" title="Fine registration result" src="http://blog.orfeo-toolbox.org/wp-content/uploads/2008/12/fra21.png" alt="" width="500" height="547" /></a></p>
<p>The different components of the color composition can be checked or unchecked at will. Also, on the upper part of the GUI, the resampled moving image (the result of the registration using the estimated disparity map) will be displayed on the blue channel.</p>
<p>Once the user is satisfied with the results obtained on the displayed area, she can choose to apply the registration on the whole image. This is done by selecting to save the registered image and/or the disparity map (<em>File</em> menu).</p>
<p>We have chosen to use a disparity map estimation based on <a href="http://www.orfeo-toolbox.org/doxygen/classotb_1_1NCCRegistrationFilter.html">normalized correlation</a>, but other choices are available given the fact that many <a href="http://www.orfeo-toolbox.org/doxygen/classitk_1_1PDEDeformableRegistrationFilter.html">disparity map estimation filters</a> (using PDEs) are available in OTB.</p>
<p>The application still needs some minor tweaks before it is released, but interested users can start playing with it and giving some feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.orfeo-toolbox.org/uncategorized/fine-registration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

