<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2896752457801097172</id><updated>2024-09-02T00:20:19.480-04:00</updated><category term="News"/><category term="General Information"/><category term="Publications"/><category term="Computer Vision Helpers"/><category term="Presentations"/><category term="Books"/><category term="Code"/><title type='text'>George V. Landon</title><subtitle type='html'>Research in Computer Vision, Computer Graphics, Pattern Recognition, and Cultural Heritage.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://georgelandon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-9034111647004777883</id><published>2008-08-01T00:15:00.004-04:00</published><updated>2008-08-01T01:03:40.040-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Code"/><title type='text'>Remote Capture Canon XTi</title><content type='html'>I have been trying to get my Canon Digital Rebel XTi (400D) to repeatedly capture images via computer generated triggers (remote capture).  After much fiddling with the official (Windows only) Canon SDK, I gave up on the Windows messaging requirements, since I am looking for purely console-based applications that will work well with OpenGL.&lt;br /&gt;&lt;br /&gt;This led me to the &lt;a href=&quot;http://www.gphoto.org/&quot;&gt;libgphoto2 API&lt;/a&gt;.  After some tweaking and an excellent post on the devel messageboard.  I got the camera to respond well to the API calls.&lt;br /&gt;This left me dealing with JPEG images referenced as FILE pointers, so I decided to include some libjpeg calls to decompress the JPEG stream in memory instead of the added file I/O overhead.&lt;br /&gt;&lt;br /&gt;The code provided below uses openCV to convert BGR-:RGB and display images.  If anyone tries this code and has suggestions feel free to comment.  I have not fully tested it, so it may contain bugs.  It should compile with something like: &quot;g++ cvtest.cpp -o cvtest -L/usr/lib/  -lcxcore -lcv -lhighgui  -L/usr/local/lib -lgphoto2 -lgphoto2_port -lm&quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;// Capture and Display code for Canon Digital Rebel XTi (7/31/08)&lt;br /&gt;//&lt;br /&gt;// Much of the gphoto code came from a post on the gphoto-devel mailinglist&lt;br /&gt;// http://sourceforge.net/mailarchive/message.php?msg_name=Pine.LNX.4.64.0807211838060.7583%40pl2.zayda.com&lt;br /&gt;// The web archives do not list the poster&#39;s information, but thanks!&lt;br /&gt;//&lt;br /&gt;// The code for using a custom source manager in libjpeg was modified from http://wiki.allegro.cc/Libjpeg&lt;br /&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;pre&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;jpeglib.h&amp;gt;&lt;br /&gt;#include &amp;lt;jerror.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &quot;opencv/cv.h&quot;&lt;br /&gt;#include &quot;opencv/cxcore.h&quot;&lt;br /&gt;#include &quot;opencv/highgui.h&quot;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;extern&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt; &quot;C&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pre&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;#include &amp;lt;gphoto2/gphoto2-abilities-list.h&amp;gt;&lt;br /&gt;#include &amp;lt;gphoto2/gphoto2-camera.h&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pre&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#define GPHOTO_ERROR(x,y) fprintf (stderr, &quot;%s: &#39;%s&#39;.\n&quot;, x, gp_result_as_string (y))&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;typedef struct&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; my_src_mgr my_src_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; my_src_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     struct&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; jpeg_source_mgr pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     JOCTET eoi_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;];&lt;br /&gt;};&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; init_source&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;j_decompress_ptr cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;br /&gt;}&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;static&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; fill_input_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;j_decompress_ptr cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     return&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;static&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; skip_input_data&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;j_decompress_ptr cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; long&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; num_bytes&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     my_src_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; = (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;my_src_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;num_bytes&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; &amp;gt;&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;) {&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;             while&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;num_bytes&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; &amp;gt; (&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;bytes_in_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;                     num_bytes&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; -= (&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;bytes_in_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;                     fill_input_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;br /&gt;             }&lt;br /&gt;     }&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;next_input_byte&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; +=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; num_bytes&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;bytes_in_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; -=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; num_bytes&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;static&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; term_source&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;j_decompress_ptr cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;br /&gt;}&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; jpeg_memory_src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;j_decompress_ptr cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; unsigned char&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt; const&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; size_t bufsize&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; my_src_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (!&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; = (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;jpeg_source_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;*)(*&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;mem&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;alloc_small&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;j_common_ptr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; JPOOL_PERMANENT&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt; sizeof&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;my_src_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;));&lt;br /&gt;     }&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; = (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;my_src_mgr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;init_source&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; init_source&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;fill_input_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; fill_input_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;skip_input_data&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; skip_input_data&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;resync_to_restart&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; jpeg_resync_to_restart&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;term_source&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; term_source&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;next_input_byte&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;pub&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;bytes_in_buffer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; bufsize&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt; main&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; IplImage&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; imgBGR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; imgRGB&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; cvNamedWindow&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;test&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; int&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; int&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     int&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; key&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; = -&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; CameraFilePath path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; CameraFile&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; CameraFileInfo info&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; Camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; unsigned long&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; size&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; const&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; unsigned char&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; // If true this will set up memory allocation for image data structure (IplImage)&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; bool&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; firstCapture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;bool&quot;  style=&quot;font-size:85%;&quot;&gt; true&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; //libjpeg variabless&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; char&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; raw_image&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; struct&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; jpeg_decompress_struct cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;     struct&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; jpeg_error_mgr jerr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;  &lt;br /&gt;     //libjpeg data structure for storing one row, that is, scanline of an image&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;        JSAMPROW row_pointer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;];&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     unsigned long&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; location&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt; //Variables for setting gphoto to &quot;capture&quot;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; &lt;br /&gt; CameraWidget&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;     CameraWidget&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;actualrootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; CameraWidget&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; const&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; char&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;widgetinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; const&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; char&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;widgetlabel&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; int&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; widgetid&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; CameraWidgetType widgettype&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; CameraWidget&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; //Does 0 save to internal memory and 1 save to CF?&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; captureValue&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; // Capture an image, download it and delete it&lt;br /&gt; // Initializing camera&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_camera_new&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;New Camera&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_camera_init&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Camera Init&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; //Get root config&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_camera_get_config&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Get Config&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; actualrootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; //Get main config&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_widget_get_child_by_name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt; &quot;main&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Get Child - Main&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //Get settings config&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; child&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_widget_get_child_by_name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt; &quot;settings&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Get Child - Settings&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //Get capture config&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; child&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_widget_get_child_by_name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;rootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt; &quot;capture&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Get Chile - Capture&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; child&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; gp_widget_get_name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;widgetinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; gp_widget_get_label&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;widgetlabel&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt; gp_widget_get_id&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;widgetid&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; gp_widget_get_type&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;widgettype&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; //Set value for save location internal memory or CF&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_widget_set_value&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;captureValue&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Set capture location&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; //Enabling capture&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_camera_set_config&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; actualrootconfig&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Enable capture with config&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //Begin continuous image capture / JPEG decompression / display image&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt; while&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; !=&lt;/span&gt;&lt;span class=&quot;char&quot;  style=&quot;font-size:85%;&quot;&gt; &#39;q&#39;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // NOP: This gets overridden in the library to /capt0000.jpg&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;  strcpy&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;folder&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt; &quot;/store_5&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;  strcpy&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt; &quot;foo.jpg&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  //Capturing image&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;  if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;gp_camera_capture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_CAPTURE_IMAGE&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;   GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Capture Image&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_file_new&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;   GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Create new file&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  //Downloading image&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;  if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; gp_camera_file_get&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;folder&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_FILE_TYPE_NORMAL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; file&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;))!=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;   GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Retrieve file&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  //Getting Info&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;  if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;gp_camera_file_get_info&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;folder&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; &lt;br /&gt;   GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Retrieve file info&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;gp_file_get_data_and_size&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, (&lt;/span&gt;&lt;span class=&quot;keyword&quot;  style=&quot;font-size:85%;&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt; char&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;**)&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;, &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;   GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Retrieve file data and size&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      location&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;      i&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;      // here we set up the standard libjpeg error handler&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;err&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; jpeg_std_error&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;( &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;jerr&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  // setup decompression process and source, then read JPEG header&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         jpeg_create_decompress&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;( &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  // setup source for memory read&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;  jpeg_memory_src&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; data&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; size&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;      //reading the image header which contains image information&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         jpeg_read_header&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;( &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; TRUE&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;  &lt;br /&gt;  //Uncomment the following to output image information, if needed.&lt;br /&gt;      //printf( &quot;JPEG File Information: \n&quot; );&lt;br /&gt;         //printf( &quot;Image width and height: %d pixels and %d pixels.\n&quot;, cinfo.image_width, cinfo.image_height );&lt;br /&gt;      //printf( &quot;Color components per pixel: %d.\n&quot;, cinfo.num_components );&lt;br /&gt;         //printf( &quot;Color space: %d.\n&quot;, cinfo.jpeg_color_space );&lt;br /&gt;&lt;br /&gt;         //Start decompression jpeg here&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         jpeg_start_decompress&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;( &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;  if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;firstCapture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;   imgBGR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cvCreateImageHeader&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cvSize&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;output_width&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;output_height&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; IPL_DEPTH_8U&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;num_components&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;      cvCreateData&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;imgBGR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;   imgRGB&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cvCreateImageHeader&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cvSize&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;output_width&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;output_height&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;),&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; IPL_DEPTH_8U&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;num_components&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;      cvCreateData&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;imgRGB&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   firstCapture&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;bool&quot;  style=&quot;font-size:85%;&quot;&gt; false&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;br /&gt;  }&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;  //allocate memory to hold the uncompressed image&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         raw_image&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; imgBGR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;imageData&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;  &lt;br /&gt;  //now actually read the jpeg into the raw buffer&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         row_pointer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;] = (&lt;/span&gt;&lt;span class=&quot;type&quot;  style=&quot;font-size:85%;&quot;&gt;unsigned char&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; *)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;malloc&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;output_width&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;num_components&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  //read one scan line at a time&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;         while&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;output_scanline&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;image_height&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; ){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;              jpeg_read_scanlines&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;( &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; row_pointer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;              for&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;image_width&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;num_components&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;++){&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;                      raw_image&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;location&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;++] =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; row_pointer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;];&lt;br /&gt;   }&lt;br /&gt;      }&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt; &lt;br /&gt;&lt;br /&gt;      //wrap up decompression, destroy objects, free pointers&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         jpeg_finish_decompress&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;( &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;      jpeg_destroy_decompress&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;( &amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;cinfo&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; );&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;      free&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; row_pointer&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;] );&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  //Deleting image&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;         gp_camera_file_delete&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;folder&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; path&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  //Show image with openCV window and wait for key (q quits loop)&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;  cvCvtColor&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;imgBGR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; imgRGB&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; CV_BGR2RGB&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;  cvShowImage&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;test&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; imgRGB&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  key&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; cvWaitKey&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;();&lt;br /&gt; }&lt;/span&gt;&lt;span class=&quot;comment&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt; //Finish up with gphoto2&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt; if&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;gp_camera_exit&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;camera&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; NULL&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)) !=&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; GP_OK&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;  GPHOTO_ERROR&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;  style=&quot;font-size:85%;&quot;&gt;&quot;Exit Camera&quot;&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt; retval&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;flow&quot;  style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class=&quot;int&quot;  style=&quot;font-size:85%;&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;operator&quot;  style=&quot;font-size:85%;&quot;&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/9034111647004777883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/9034111647004777883'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2008/08/remote-capture-canon-xti.html' title='Remote Capture Canon XTi'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-8601810125916875062</id><published>2008-06-18T10:46:00.003-04:00</published><updated>2008-11-13T02:37:49.431-05:00</updated><title type='text'>Towards automatic photometric correction of casually illuminated documents</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiETaCUu3PGC3UdQSnLgETJD_AE4YaLGZtmzYRVF4k9WRpLMeGKce_RzJDOeliCVdqjvv4T9sKsz_SLAgjyA2MFvFuv_S5qDYeVaMe-nSCmy2KUpA1PiblSw3wX0XGI90K9x2t2oBpmbc-s/s1600-h/cvpr07.jpg&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5213233187932271522&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiETaCUu3PGC3UdQSnLgETJD_AE4YaLGZtmzYRVF4k9WRpLMeGKce_RzJDOeliCVdqjvv4T9sKsz_SLAgjyA2MFvFuv_S5qDYeVaMe-nSCmy2KUpA1PiblSw3wX0XGI90K9x2t2oBpmbc-s/s200/cvpr07.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; George V. Landon, Yun Lin, and W. Brent Seales. Towards automatic photometric correction of casually illuminated documents. 2007 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR 2007), 18-23 June 2007, Minneapolis, Minnesota, USA.&lt;br /&gt;&lt;br /&gt;Abstract:&lt;br /&gt;Creating uniform lighting for archival-quality document acquisition remains a non-trivial problem. We propose a novel method for automatic photometric correction of non-planar documents by estimating a single, point light-source using a simple light probe. By adding a simple piece of folded white paper with a known 3D surface to a scene, we are able to extract the 3D position of a light source, automatically perform white balance correction, and determine areas of poor illumination. Furthermore, this method is designed with the purpose of adding it to an already implemented document digitization pipeline. To justify our claims, we provide an accuracy analysis of our correction technique using simulated ground-truth data which allows individual sources of error to be determined and compared. These techniques are then applied on real documents that have been acquired using a 3D scanner.&lt;br /&gt;&lt;a href=&quot;http://people.eku.edu/landong/research.html&quot;&gt;article available here&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8601810125916875062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8601810125916875062'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2008/06/george-v.html' title='Towards automatic photometric correction of casually illuminated documents'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiETaCUu3PGC3UdQSnLgETJD_AE4YaLGZtmzYRVF4k9WRpLMeGKce_RzJDOeliCVdqjvv4T9sKsz_SLAgjyA2MFvFuv_S5qDYeVaMe-nSCmy2KUpA1PiblSw3wX0XGI90K9x2t2oBpmbc-s/s72-c/cvpr07.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-4036190266869127669</id><published>2007-03-05T17:22:00.000-05:00</published><updated>2008-11-13T02:37:49.528-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Special issue on 3D acquisition technology for cultural heritage</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGTOxEdb8sOKfQ9vblQEpvlvIAZJTa741x7WR0a5KPaPQyTDh4kGGdIZXNjrA5hS_UgHVWfMS_XtBkR4EU_yTwy4A6Rd9Nd-VQCxhfJfWH2Fl_exOQuH7kU9vu6Ru-Mhswiy6LNC2SYAWM/s1600-h/mva_cover.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGTOxEdb8sOKfQ9vblQEpvlvIAZJTa741x7WR0a5KPaPQyTDh4kGGdIZXNjrA5hS_UgHVWfMS_XtBkR4EU_yTwy4A6Rd9Nd-VQCxhfJfWH2Fl_exOQuH7kU9vu6Ru-Mhswiy6LNC2SYAWM/s400/mva_cover.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5050009656933066706&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&quot;http://www.springerlink.com/content/1432-1769/&quot;&gt;Machine Vision and Applications&lt;/a&gt; has recently published a &lt;a href=&quot;http://www.springerlink.com/content/t7h563307751/?p=e7a75095aff047489aa7175bbb4fff69&amp;amp;pi=2&quot;&gt;special issue&lt;/a&gt; on 3D acquisition for cultural heritage &lt;/span&gt;&lt;/span&gt;edited by Luc Van Gool and Robert Sablatnig.&lt;br /&gt;&lt;br /&gt;Table of Contents:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Three-dimensional acquisition of large and detailed cultural heritage objects&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Gabriele Guidi, Bernard Frischer, Michele Russo, Alessandro Spinetti, Luca Carosso, and Laura Loredana Micoli&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Petroglyph digitization: enabling cultural heritage scholarship&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;George V. Landon and W. Brent Seales&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;A System for 3D Modeling Frescoed Historical Buildings with Multispectral Texture&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;N. Brusco, S. Capeleto, M. Fedel, A. Paviotti, L. Poletto, G. M. Cortelazzo, and G. Tondello&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Recent Developments in 3D Multi-modal Laser Imaging Applied to Cultural Heritage&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;François Blais and J. Angelo Beraldin&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Web-based 3D Reconstruction Service&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Maarten Vergauwen and Luc Van Gool&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4036190266869127669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4036190266869127669'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2007/03/special-issue-on-3d-acquisition.html' title='Special issue on 3D acquisition technology for cultural heritage'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGTOxEdb8sOKfQ9vblQEpvlvIAZJTa741x7WR0a5KPaPQyTDh4kGGdIZXNjrA5hS_UgHVWfMS_XtBkR4EU_yTwy4A6Rd9Nd-VQCxhfJfWH2Fl_exOQuH7kU9vu6Ru-Mhswiy6LNC2SYAWM/s72-c/mva_cover.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-6228848508663539894</id><published>2006-11-02T08:27:00.000-05:00</published><updated>2006-11-02T08:46:40.048-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Publications"/><title type='text'>Petroglyph digitization: enabling cultural heritage scholarship</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/display.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/200/display.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;George V. Landon and W. Brent Seales, “Petroglyph digitization: enabling cultural heritage scholarship,” &lt;span style=&quot;font-style: italic;&quot;&gt;Machine Vision and Applications&lt;/span&gt;, vol. 17, no. 6, pp. 361–371, December 2006.&lt;br /&gt;&lt;br /&gt;Abstract:&lt;br /&gt;The digitization of antiquities is facilitating a &lt;span style=&quot;font-style: italic;&quot;&gt;renaissance&lt;/span&gt; for scholars who have unprecedented access to rich representations of objects. Cultural Heritage digitization is a central challenge, and its subtleties are intertwined with object properties and the constraints of physical access and handling. In this paper, we present the design and analysis of a system built for the digitization of Puerto Rican petroglyphic iconography. The petroglyphs exhibit unique properties (shape, size, surface) that determine system design choices. The 3D models obtained with the system support new scholarly and educational activities, including interactive surface lighting, feature highlighting and annotation through mark-up, and immersive viewing using large-scale displays.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.springerlink.com/content/42501701m845h343&quot;&gt;Available Online&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/6228848508663539894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/6228848508663539894'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/11/petroglyph-digitization-enabling.html' title='Petroglyph digitization: enabling cultural heritage scholarship'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-4225334773091047819</id><published>2006-09-22T09:51:00.000-04:00</published><updated>2006-09-22T10:00:03.393-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Computer Vision Helpers"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Computer Science &amp; Illusion</title><content type='html'>As noted on Robert Burke&#39;s &lt;a href=&quot;http://blogs.msdn.com/robburke/archive/2006/09/07/744128.aspx&quot;&gt;blog&lt;/a&gt;, Trinity College Dublin (&lt;a href=&quot;https://www.cs.tcd.ie/&quot;&gt;TCD&lt;/a&gt;) recently hosted a great lecture by &lt;a href=&quot;http://research.microsoft.com/%7Eablake/&quot;&gt;Prof. Andrew Blake&lt;/a&gt;.  He really runs the gambit on topics in computer vision covering various theories and applications.&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;Part 1:&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/7ti69Kf1HAo&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/7ti69Kf1HAo&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;/embed&gt;&lt;/object&gt; &lt;br /&gt;&lt;br /&gt;Part 2:&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ZL_MVN7Qf-w&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/ZL_MVN7Qf-w&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;/embed&gt;&lt;/object&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If you prefer not to stream: &lt;a href=&quot;http://www.irishdev.com/video/final%20256%20b.wmv&quot;&gt;Full Movie Download (118MB WMV)&lt;/a&gt;.&lt;br /&gt;Also, the PowerPoint slides are &lt;a href=&quot;http://www.heroicsalmonleap.net/Presentations/AndrewBlakeDublin06.zip&quot;&gt;available (44MB ZIPPED PPT)&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4225334773091047819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4225334773091047819'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/09/computer-science-illusion.html' title='Computer Science &amp; Illusion'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-2503790039092402139</id><published>2006-09-18T10:15:00.000-04:00</published><updated>2006-09-17T22:25:12.450-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Is Computer Science losing its coolness?</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/Microsoft_Ballmer.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/200/Microsoft_Ballmer.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The &lt;a href=&quot;http://seattletimes.nwsource.com/html/home/index.html&quot;&gt;Seattle Times&lt;/a&gt; has just run an interesting story, titled &lt;span style=&quot;font-style: italic;&quot;&gt;Where&#39;d The Whiz Kids Go?&lt;/span&gt;, on the lack of CS students in Washington Universities.  It seems that this is a nation-wide problem that has gotten big enough to get the attention of politicians.&lt;br /&gt;&lt;br /&gt;From the &lt;a href=&quot;http://seattletimes.nwsource.com/html/living/2003255696_pacificpcompute17.html&quot;&gt;article&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&quot;... despite the seemingly limitless potential of computers, educators are having a tougher time than ever convincing students to pursue the field. It can be hard work. Boring, even. And there&#39;s that enduring, if unfair, image problem. Picture the socially inept geek hunched over a screen at 3 a.m., Coke in hand, pecking away at pages of incomprehensible code.&lt;br /&gt;&lt;br /&gt;&#39;There was such a boom of interest in the &#39;90s, and now you get the sense around the country that computer science is past its prime. But the most exciting stuff is still in front of us.&#39;&lt;br /&gt;&lt;br /&gt;Meanwhile, Microsoft continues to add workers locally at the rate of 4,000 a year.  In this year&#39;s record class of 5,400 UW freshmen, 300 say they&#39;re hoping to graduate in computer science or engineering. Even if none dropped out or changed majors, the class of 2010 wouldn&#39;t amount to a month&#39;s supply of new workers needed just at Microsoft&#39;s Redmond campus.&quot;&lt;/blockquote&gt;There certainly does not seem to be an easy solution to this shortage.  It is also interesting to note that the &lt;a href=&quot;http://www.act.org/&quot;&gt;ACT&lt;/a&gt; &lt;a href=&quot;http://www.act.org/news/data/06/pdf/four.pdf&quot;&gt;2006 National Report&lt;/a&gt; shows that 2.05% of test takers are interested in at least a 4-year Computer Science or Math degree.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/2503790039092402139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/2503790039092402139'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/09/is-computer-science-losing-its-coolness.html' title='Is Computer Science losing its coolness?'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-4150117214457037460</id><published>2006-09-13T10:49:00.000-04:00</published><updated>2006-09-13T11:08:47.231-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Interactive Tabletop Museum Exhibits</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/floating_numbers.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/320/floating_numbers.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;In the most recent issue of &lt;a href=&quot;http://www.computer.org/cga&quot;&gt;&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;IEEE&lt;/span&gt; Computer Graphics and Applications&lt;/a&gt;, there is an interesting article titled &quot;Interactive Tabletop Exhibits in Museums and Galleries.&quot;&lt;br /&gt;&lt;br /&gt;From the article:&lt;br /&gt;&lt;blockquote&gt;&quot;The museum experience is an unusually tactile, sensual one, and the standard keyboard-mouse-and-screen setup might seem out of place. This trend toward sensual involvement is particularly noticeable in tabletop displays, as they appeal to two aspects of familiar daily life: the horizontal surface as a workspace, and hand gestures (or common objects) as tools for manipulating information.&quot;&lt;/blockquote&gt;The full article can be viewed &lt;a href=&quot;http://www.tgeller.com/portfolio/tabletop-article-as-published.pdf&quot;&gt;online (&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;PDF&lt;/span&gt;)&lt;/a&gt;.  Readers should notice that the article contains a nice sampling of various interactive/tabletop exhibits.  The &lt;a href=&quot;http://www.onomy.com/blue/tilty.html&quot;&gt;&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;Tilty&lt;/span&gt; Table,&lt;/a&gt; in particular, demonstrates that interactivity and intuitive access can (and should) be combined in the museum experience.  A sample video is &lt;a href=&quot;http://www.onomy.com/video/Tilty.mov&quot;&gt;available (&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;MOV&lt;/span&gt;)&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4150117214457037460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4150117214457037460'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/09/interactive-tabletop-museum-exhibits.html' title='Interactive Tabletop Museum Exhibits'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-5080650673453762154</id><published>2006-09-12T08:55:00.000-04:00</published><updated>2006-09-11T16:03:59.950-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Smart Video Surveillance</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/IBM_Surveillance.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/200/IBM_Surveillance.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The &lt;a href=&quot;http://www.lohud.com&quot;&gt;Journal News&lt;/a&gt; has conducted an interview with &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Arun&lt;/span&gt; &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Hampapur&lt;/span&gt; manager of IBM&#39;s &lt;a href=&quot;http://www.research.ibm.com/ecvg/&quot;&gt;Exploratory Computer Vision Group&lt;/a&gt;.  The focus is mainly on how the 9/11/2001 attacks changed their research focus in computer vision.&lt;br /&gt;&lt;br /&gt;From the &lt;a href=&quot;http://www.lohud.com/apps/pbcs.dll/article?AID=/20060911/SPECIAL01/609110348&quot;&gt;Interview&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&quot;Q:How did  9/11 affect your field?&lt;br /&gt;A:&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;Pre&lt;/span&gt;-9/11, the success stories in computer vision were around machine vision: How you inspect a printed circuit board while it is being manufactured. Now the biggest application of computer vision would be security. And there are two pieces to that security puzzle. Biometrics is answering the question, &#39;Who is this person?&#39; Surveillance is answering the question, &#39;What is going on?&#39;&lt;br /&gt;&lt;br /&gt;Q:How does it work?&lt;br /&gt;A:You can apply two kinds of functionality. One I called real-time alerts. You have a port and you have a fence, you don&#39;t want anyone jumping the fence. Or you have a retail store with a loading dock, and you don&#39;t want anyone on the loading dock past 9 o&#39;clock. These are known conditions, for which you can say, &#39;OK, so if someone shows up on the loading dock after 9, tell me.&#39;The second is being able to find things. Security is a kind of a cat-mouse game. Sometimes something becomes relevant only after the fact. If you remember the Washington sniper incident, somebody said there was a white van at the first scene, and then the police spent a lot of energy trying to look for the white van. There was no technology at that time which could use cameras to find white vans.&quot;&lt;/blockquote&gt;An &lt;a href=&quot;http://www.lohud.com/apps/pbcs.dll/article?AID=/20060911/SPECIAL01/609110348&quot;&gt;overview (&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;PDF&lt;/span&gt;)&lt;/a&gt; of this work has been published in &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;IEEE&lt;/span&gt; Transactions on Signal Processing.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/5080650673453762154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/5080650673453762154'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/09/smart-video-surveillance.html' title='Smart Video Surveillance'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-2452302877966217109</id><published>2006-09-08T10:00:00.000-04:00</published><updated>2006-09-08T09:28:04.166-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>3D Photo Tours</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/photo_tour.0.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/320/photo_tour.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;With all the recent web coverage of &lt;a href=&quot;http://labs.live.com/photosynth/&quot;&gt;Microsoft &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Photosynth&lt;/span&gt;&lt;/a&gt;, I thought that I should post some of its foundational work here.&lt;br /&gt;&lt;br /&gt;From the paper:&lt;br /&gt;&lt;blockquote&gt;&quot;Our system consists of an image-based modeling front end,  which automatically computes the viewpoint of each photograph as well as a  sparse 3D model of the scene and image to model correspondences. Our photo  navigation tool uses image-based rendering techniques to smoothly transition  between photographs, while also enabling full 3D navigation and exploration of  the set of images and world geometry, along with auxiliary information such as  overhead maps.  We  demonstrate our system on several large personal photo collections as well as  images gathered from photo sharing Web sites on the Internet.&quot;&lt;/blockquote&gt;From a computer vision standpoint, they claim to be using a modified &lt;a href=&quot;http://www.cs.ubc.ca/%7Elowe/papers/ijcv04.pdf&quot;&gt;SIFT&lt;/a&gt; for wide-baseline matching.  While this does not appear to be revolutionary results, it should be understood that, in this case, presentation is everything.  This work appears to have a very intuitive interface that could revolutionize image search/&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;retrieval&lt;/span&gt;/browsing.  Check out this &lt;a href=&quot;http://phototour.cs.washington.edu/applet/index.html&quot;&gt;Interactive Demo&lt;/a&gt; of a trimmed-down version.  Also, here is a nice &lt;a href=&quot;http://phototour.cs.washington.edu/PhotoTourismFull.mov&quot;&gt;video (120MB &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;MOV&lt;/span&gt;)&lt;/a&gt; from &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;SIGGRAPH&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://phototour.cs.washington.edu/applet/index.html&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://research.microsoft.com/IVM/PhotoTours/PhotoTourism.pdf&quot;&gt;Full Paper (&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;PDF&lt;/span&gt;)&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/2452302877966217109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/2452302877966217109'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/09/3d-photo-tours.html' title='3D Photo Tours'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-8473245297359478471</id><published>2006-09-06T21:31:00.000-04:00</published><updated>2006-09-06T14:32:03.021-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Organic Pixels from Butterflies</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/butterfly_display.8.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/320/butterfly_display.0.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;While this falls outside the normal areas covered here, it does appear to be some rather fascinating work.  Besides, what good is work in graphics without a good display.&lt;br /&gt;&lt;br /&gt;From the &lt;a href=&quot;http://www.newscientisttech.com/article.ns?id=dn10006&amp;feedId=tech_rss20&quot;&gt;article&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&quot;The wings of the male &lt;i&gt;Cyanophrys remus&lt;/i&gt; are bright metallic blue on one side, thought to attract mates, and a dull green on the other to act as camouflage.   ...each side of the wing contained different photonic structures. The metallic blue colour is produced by scales that are photonic single crystals whereas the dull green is the result of a random arrangement of photonic crystals. This randomly arranged structure may have powerful applications. The crystals can actually produce different colours – green, yellow and blue – depending on their orientation, but the overall effect in &lt;i&gt;Cyanophrys remus&lt;/i&gt; is a dull green. The team also found a way to make the crystals generate red reflections.  The red-green-blue palette could be used for flat-panel visual displays... by making an array of crystals mounted on microelectromechanical arms that could change their orientation. In that way it would be possible for each &#39;pixel&#39; to produce red, green or blue.&quot; &lt;/blockquote&gt;From an outsiders perspective, this is quite amazing.  I will leave those more versed in the area to make observations about how novel/unique this work is.  The results, published in &lt;a href=&quot;http://pre.aps.org/&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Physical Review E&lt;/span&gt;&lt;/a&gt;, can be found in this &lt;a href=&quot;http://www.mfa.kfki.hu/int/nano/reprint/pre_74_021922_cyanophrys.pdf&quot;&gt;paper (PDF)&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8473245297359478471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8473245297359478471'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/09/organic-pixels-from-butterflies.html' title='Organic Pixels from Butterflies'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-3429198549223624295</id><published>2006-09-04T17:56:00.000-04:00</published><updated>2006-09-04T18:04:54.270-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Google&#39;s Manual Image Recognition</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/google_labeler.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/200/google_labeler.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Google has recently added a collaborative &lt;a href=&quot;http://images.google.com/imagelabeler/&quot;&gt;Image &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Labeler&lt;/span&gt;&lt;/a&gt; application to their image search.&lt;br /&gt;&lt;br /&gt;From the site:&lt;br /&gt;&lt;span style=&quot;&quot;&gt;&lt;blockquote&gt;&quot;Google Image &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Labeler&lt;/span&gt; is a new feature of Google Image Search that allows you to label random images and help improve the quality of &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;Google&#39;s&lt;/span&gt; image search results.  Each user who wants to participate will be paired randomly with a partner who&#39;s currently online...  Over a 90-second period, both participants will be shown the same set of images and asked to label each image... based in part on technology licensed from and developed at Carnegie Mellon University.&quot;&lt;br /&gt;&lt;/blockquote&gt;&lt;p class=&quot;i&quot;&gt;&lt;span style=&quot;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;i&quot;&gt;&lt;span style=&quot;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;This is actually a fun little game to play.  However, it seems to be missing some depth.  The work this is based on, by &lt;span&gt;&lt;a href=&quot;http://www.cs.cmu.edu/%7Ebiglou/&quot;&gt;&lt;span class=&quot;normal&quot;&gt; Luis &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;von&lt;/span&gt; &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;Ahn&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; at &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;CMU&lt;/span&gt;, is a game first and an information extractor second.  He has written about this in &lt;a href=&quot;http://www.cs.cmu.edu/%7Ebiglou/ieee-gwap.pdf&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Computer&lt;/span&gt; (&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;PDF&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and has also &lt;a href=&quot;http://www.cs.cmu.edu/%7Ebiglou/ESP.pdf&quot;&gt;published (&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;PDF&lt;/span&gt;)&lt;/a&gt; the work.  While this certainly seems like a good use of abundant Web users, it is an interesting turn considering their recent acquisition of &lt;a href=&quot;http://www.nevenvision.com/&quot;&gt;&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;Neven&lt;/span&gt; Vision&lt;/a&gt; as discussed on &lt;a href=&quot;http://googleblog.blogspot.com/2006/08/better-way-to-organize-photos.html&quot;&gt;&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;Google&#39;s&lt;/span&gt; blog&lt;/a&gt;.  I wonder if at some point Google will implement user verification of automated metadata extraction or if these two paths will stay &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;separate&lt;/span&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3429198549223624295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3429198549223624295'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/09/googles-manual-image-recognition.html' title='Google&#39;s Manual Image Recognition'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-7807000942621871773</id><published>2006-09-01T22:54:00.000-04:00</published><updated>2006-08-31T19:54:50.354-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Books"/><title type='text'>Flatland: A Romance of Many Dimensions</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/Flatland_cover.2.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/200/Flatland_cover.1.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Google has started putting some really great books online.  They listed a few noteworthy titles in a recent blog post.&lt;br /&gt;&lt;br /&gt;From the &lt;a href=&quot;http://googleblog.blogspot.com/2006/08/download-classics.html&quot;&gt;Official Google Blog&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&quot;...you can go to &lt;a title=&quot;Google Book Search&quot; href=&quot;http://books.google.com/&quot;&gt;Google Book Search&lt;/a&gt; and download full copies of out-of-copyright books to read at your own pace. You&#39;re free to choose from a diverse collection of public domain titles -- from well-known classics to obscure gems.&quot;&lt;br /&gt;&lt;/blockquote&gt;One title, from the blog post, should really stick out to Computer Vision and Computer Graphics researchers; Edwin Abbott&#39;s &lt;a style=&quot;font-style: italic;&quot; title=&quot;Flatland&quot; href=&quot;http://books.google.com/books?vid=0PO8Zb8GuSvhGZx2&amp;id=u8HOxy7lQYUC&amp;amp;printsec=titlepage&quot;&gt;Flatland: A Romance of Many Dimensions&lt;/a&gt;.  While the mathematical concepts in the book are fairly elementary, it is a great change of pace from typical textbooks.  If you have or are planning on doing any work that involves &lt;span style=&quot;font-style: italic;&quot;&gt;projective geometry&lt;/span&gt; this is a must read.  Also, the social satire included by Abbott adds nice context to his work.&lt;br /&gt;&lt;br /&gt;As an aside, I recently found a new movie being produced as an educational unit for young math students.  A trailer of the aptly named &lt;a style=&quot;font-style: italic;&quot; href=&quot;http://www.flatlandthemovie.com/&quot;&gt;Flatland: The Movie&lt;/a&gt; is available on their website.&lt;a href=&quot;http://www.flatlandthemovie.com/&quot;&gt;&lt;br /&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/7807000942621871773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/7807000942621871773'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/flatland-romance-of-many-dimensions.html' title='Flatland: A Romance of Many Dimensions'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-3303375752814936929</id><published>2006-08-31T17:53:00.000-04:00</published><updated>2006-08-31T08:26:39.013-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Binary-coded Shutter for Deblurring Still Images</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/raskar_flutter.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/200/raskar_flutter.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Researchers at Mitsubishi Electric Research Laboratories (&lt;a href=&quot;http://www.merl.com/&quot;&gt;MERL&lt;/a&gt;) have developed a new filter system for digital cameras.  The &lt;a href=&quot;http://www.merl.com/people/raskar/deblur/&quot;&gt;Coded Exposure Photography: Motion Deblurring using Fluttered Shutter&lt;/a&gt; uses a shuttering technique that effectively applies a binary-encoded timing filter over a continuous sequence of images.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.merl.com/people/raskar/deblur/CodedExpousreLowres.pdf&quot;&gt;Full Paper (PDF)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Very nice results.  It will be nice to see this, or something similar, introduced in consumer camera.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3303375752814936929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3303375752814936929'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/binary-coded-shutter-for-deblurring.html' title='Binary-coded Shutter for Deblurring Still Images'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-3232131578224592056</id><published>2006-08-30T20:21:00.000-04:00</published><updated>2006-08-30T20:58:52.756-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Insect Techniques for High Dynamic Range Video</title><content type='html'>Researchers at Adelaide University, Australia are developing &lt;span style=&quot;font-style: italic;&quot;&gt;Image Processing &lt;/span&gt;techniques that replicate the vision system of flies.&lt;br /&gt;&lt;br /&gt;From the &lt;a href=&quot;http://www.newscientisttech.com/article.ns?id=dn9879&quot;&gt;article&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&quot;...conducting experiments that involved recording the activity of fly brain cells as they were shown different images. &#39;We were amazed at the extra detail they were able to extract from the dark parts of a scene.  This led us to test exactly how they were able to do this and to reproduce the processing in electrical circuits and computer simulations.&#39;  Unlike a camera, flies and other animals can tune their eyes to the light levels of different regions of an image independently. &#39;In nature, the individual cells of the eye adjust to a part of the image independently in order to capture the maximum amount of information about the scene...&quot;&lt;br /&gt;&lt;a href=&quot;http://media.newscientist.com/data/images/ns/av/dn9879V1.mp4&quot;&gt;Example Video (MP4)&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;While the results from the video look promising, I was unable to find any papers on this work, so I am a little hesitant to claim this work as novel.  It seems to fall easily under the umbrella of &lt;span style=&quot;font-style: italic;&quot;&gt;High Dynamic Range Imaging&lt;/span&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/High_dynamic_range_imaging&quot;&gt;HDRI&lt;/a&gt;).  &lt;a href=&quot;http://www.debevec.org/&quot;&gt;Paul Debevec&lt;/a&gt; has done a large amount of work in this area already.  If you are interested, He has posted a nice collection of papers and links &lt;a href=&quot;http://www.debevec.org/Research/HDR/&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3232131578224592056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3232131578224592056'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/insect-techniques-for-high-dynamic.html' title='Insect Techniques for High Dynamic Range Video'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-8208296061630628195</id><published>2006-08-29T14:13:00.000-04:00</published><updated>2006-08-29T14:30:45.098-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Mood Dependent Art</title><content type='html'>It is always nice to see novel combinations of research areas that produce innovative applications.  Recently, researchers from the Universities of Boston, USA and Bath, UK have developed such a system called &lt;a href=&quot;http://www.cs.bath.ac.uk/~vision/empaint/&quot;&gt;&quot;Empathic Painting: Interactive stylization using observed emotional state.&quot;&lt;/a&gt;  From a Computer Vision perspective, the work includes facial expression recognition.  Also, Image Processing and graphics are used to create a real-time painting filter.  While these areas are not ground-breaking by themselves, together they make a very unique and creative use of technology.&lt;br /&gt;&lt;br /&gt;Links from the site:&lt;br /&gt;&lt;a href=&quot;http://www.cs.bath.ac.uk/~jpc/pubs/empaint.pdf&quot;&gt;Full Paper (PDF)&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.cs.bath.ac.uk/~jpc/pubs/empaint_xvid.avi&quot;&gt;Example Video (AVI)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This work was published in &lt;a href=&quot;http://portal.acm.org/toc.cfm?id=1124728&amp;idx=SERIES963&amp;type=proceeding&amp;coll=portal&amp;dl=ACM&amp;part=series&amp;WantType=Proceedings&amp;title=NPAR&amp;CFID=1257076&amp;CFTOKEN=88095997&quot;&gt;Proceedings of the 4th international symposium on Non-photorealistic animation and rendering&lt;br /&gt;2006&lt;/a&gt;.  These proceedings include some other very interesting projects.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8208296061630628195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8208296061630628195'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/mood-dependent-art.html' title='Mood Dependent Art'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-1784946352198582939</id><published>2006-08-28T08:20:00.000-04:00</published><updated>2006-08-28T08:38:33.312-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Stereo Reconstruction for Improved Automotive Safety</title><content type='html'>In a recent &lt;a href=&quot;http://www.toyota.co.jp/en/news/06/0825.html&quot;&gt;news release&lt;/a&gt;, Toyota describes a new safety system that implements numerous computer vision technologies.&lt;br /&gt;&lt;br /&gt;These techniques include(from the article):&lt;br /&gt;&lt;blockquote&gt;&quot;...a newly developed stereo camera to detect pedestrians and support emergency collision evasion maneuvers by the driver.  ...three-dimensional object detection information from the stereo camera to detect not only vehicles and obstacles, but also pedestrians.  A near-infrared projector located in the headlights supports nighttime detection...  The system retracts the seatbelts and warns the driver when it determines a high possibility of a collision. If the driver does not brake, the Pre-crash Brakes are applied to reduce collision speed.&quot;&lt;/blockquote&gt;&lt;br /&gt;This leads to the question of how long until we have &lt;a href=&quot;http://en.wikipedia.org/wiki/Event_Data_Recorder&quot;&gt;black box recorders&lt;/a&gt; in every automobile.  Continuous data acquisition from this many sensors would certainly help with accident reconstruction.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/1784946352198582939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/1784946352198582939'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/stereo-reconstruction-for-improved.html' title='Stereo Reconstruction for Improved Automotive Safety'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-5727446042617110454</id><published>2006-08-25T08:02:00.000-04:00</published><updated>2006-08-25T08:19:51.889-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Capturing 3D Fluid Surfaces</title><content type='html'>Researchers at the &lt;a href=&quot;http://www.udel.edu/PR/UDaily/2007/aug/nsf082206.html&quot;&gt;University of Delaware&lt;/a&gt; are:&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;blockquote&gt;&quot;...proposing a novel approach for accurately reconstructing three-dimensional fluid surfaces through the design of an experimental system using a light field camera array that can simultaneously capture different views of a fluid surface.&lt;br /&gt;      &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp The light field camera array features a number of digital cameras, from 16 to 128, with specially modified flashes, lenses and apertures.  Instead of one flash, each camera is equipped with four.&lt;br /&gt;      &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp ...the system works by placing a known pattern beneath the surface, with each camera in the array observing a distinct time-varying distortion pattern.  A sampled fluid surface can then be measured by analyzing the distortions.  For surface reconstruction, the researchers plan to develop an algorithm to minimize the error relative to the sampled data.&quot;&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;This should be an interesting project to follow.  The previous work that I have seen with &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;multi&lt;/span&gt;-flash cameras captured static scenes, so I am curious how &lt;a href=&quot;http://www.cis.udel.edu/%7Eyu/research.html&quot;&gt;&lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Jingyi&lt;/span&gt; &lt;span onclick=&quot;BLOG_clickHandler(this)&quot; class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;Yu&lt;/span&gt;&lt;/a&gt; will modify the system to handle dynamic fluid.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/5727446042617110454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/5727446042617110454'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/capturing-3d-fluid-surfaces.html' title='Capturing 3D Fluid Surfaces'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-2093952197239265476</id><published>2006-08-23T22:16:00.000-04:00</published><updated>2006-08-23T22:16:49.421-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Computer Vision Helpers"/><title type='text'>Learning Epipolar Geometry</title><content type='html'>&lt;a href=&quot;http://www-sop.inria.fr/robotvis/personnel/sbougnou/&quot;&gt;Sylvain Bougnoux&lt;/a&gt; (looks like he&#39;s at &lt;a href=&quot;http://www.imra-europe.com/company/company_team.html&quot;&gt;IMRA-europe&lt;/a&gt; now) has written a nice page, featuring interactive Java applets, to assist in learning the &lt;a href=&quot;http://www-sop.inria.fr/robotvis/personnel/sbougnou/Meta3DViewer/EpipolarGeo.html&quot;&gt;basics of Epipolar Geometry&lt;/a&gt;.&lt;span style=&quot;font-family:Georgia,serif;&quot;&gt;  &lt;/span&gt;This should be helpful for students just starting out in computer vision.  Especially if you are a visual learner and enjoy gaining &lt;span style=&quot;font-style: italic;&quot;&gt;geometric intuition&lt;/span&gt;&lt;span&gt; on a subject&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;.&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/2093952197239265476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/2093952197239265476'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/learning-epipolar-geometry.html' title='Learning Epipolar Geometry'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-4403310905214001469</id><published>2006-08-22T13:01:00.000-04:00</published><updated>2006-08-21T13:04:05.842-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General Information"/><title type='text'>How to Write a Great Research Paper</title><content type='html'>Here are some nice thoughts on direction and steps for writing a good research paper.  In particular, certain traps that most researchers can fall into.  I know for me remembering to write a paper (at least a draft) right after I come up with an idea will give me much better direction when actually implementing/testing the idea.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://research.microsoft.com/Users/simonpj/papers/giving-a-talk/writing-a-paper-slides.pdf&quot;&gt;How to write a great research paper(PDF).&lt;/a&gt; (Simon Peyton Jones, Microsoft Research)&lt;br /&gt;&lt;br /&gt;Note: &lt;a href=&quot;http://www.cs.cmu.edu/afs/cs.cmu.edu/user/mleone/web/how-to.html&quot;&gt;Here&lt;/a&gt; is the listed reference.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4403310905214001469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4403310905214001469'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/how-to-write-great-research-paper.html' title='How to Write a Great Research Paper'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-5607718828584167553</id><published>2006-08-21T10:45:00.000-04:00</published><updated>2006-08-21T11:18:10.970-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General Information"/><title type='text'>Computer Vision Job Listings</title><content type='html'>Here are a few site that list Computer Vision related positions to be filled.  These are certainly not new, but are listed here for reference.   Feel free to add others in comments.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://homepages.inf.ed.ac.uk/rbf/CCVO/joblist.htm&quot;&gt;ECVision: Cognitive Computer Vision Jobs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.visionscience.com/vsJobs.html&quot;&gt;Vision Science Jobs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.vislist.com/&quot;&gt;The VISLIST&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://jobs.phds.org/&quot;&gt;phds.org&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/5607718828584167553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/5607718828584167553'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/computer-vision-job-listings.html' title='Computer Vision Job Listings'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-8959329972921949198</id><published>2006-08-18T10:45:00.000-04:00</published><updated>2006-08-22T09:33:07.407-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General Information"/><title type='text'>Keeping an Annotated Bibliography</title><content type='html'>&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;As a continuation of &lt;a href=&quot;http://georgelandon.blogspot.com/2006/08/i-found-some-useful-information-for-phd.html&quot;&gt;helpful things for researchers&lt;/a&gt;, here is another hint Dr. Marian Petre reminds us to keep in mind when researching/writing.&lt;br /&gt;&lt;br /&gt;One of the things that established researchers have is a working knowledge of the relevant literature. Most established researchers have a core repertoire of some 100-150 works on which they can draw readily. These are a useful selection from the hundreds or thousands of articles and books the researcher has digested over time.  The annotated bibliography is an effective mechanism for facilitating this acquisition and for keeping record of the majority of papers that fall outside the core.  &lt;h3&gt;What the annotated bibliography should include&lt;/h3&gt;  &lt;p&gt;It should include, as a minimum:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;the usual bibliographic information (i.e., everything you might need   to cite the work and find it again)   &lt;/li&gt;&lt;li&gt;the date when you read the work   &lt;/li&gt;&lt;li&gt;notes on what &lt;i&gt;you&lt;/i&gt; found interesting / seminal / infuriating   / etc. about it. (The notes should not just be a copy of the abstract;   they should reflect your own critical thinking about your reading. They   can be informal, ungrammatical, even inflammatory as long as they retain   meaning about your reading. If you read a paper more than once and get   different things from it, then add to the notes but do keep the original   notes, which can prove useful even if you&#39;ve changed perspective or opinion.) &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;It can include many other useful things, e.g.:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;where the physical copy of the work is (e.g., photocopied paper, book   borrowed from the library, book in one&#39;s own collection)   &lt;/li&gt;&lt;li&gt;keywords, possibly different categories of keyword   &lt;/li&gt;&lt;li&gt;further references to follow up   &lt;/li&gt;&lt;li&gt;how you found the work (e.g., who recommended it, who cited it)   &lt;/li&gt;&lt;li&gt;pointers to other work to which it relates   &lt;/li&gt;&lt;li&gt;the author&#39;s abstract &lt;/li&gt;&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8959329972921949198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/8959329972921949198'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/keeping-annotated-bibliography.html' title='Keeping an Annotated Bibliography'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-9109625293679049858</id><published>2006-08-18T10:40:00.000-04:00</published><updated>2006-08-18T10:46:01.763-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General Information"/><title type='text'>Generic Viva Questions</title><content type='html'>I found some useful information for PhD students and researchers in general from the &lt;a href=&quot;http://edu.technion.ac.il/Faculty/OritH/HomePage/DC2007/SIGCSE_Doctoral_Consortium.htm&quot;&gt;SIGCSE Doctoral Consortium&lt;/a&gt;.  These are excerpts from a compilation by Dr. Marian Petre, March 1999.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How did you come to research this topic in this manner?&lt;/li&gt;&lt;li&gt;    What are the main achievements of your research?&lt;/li&gt;&lt;li&gt;    What has your thesis has contributed to our knowledge in this field?&lt;/li&gt;&lt;li&gt;    What are the major theoretical strands in this area: what are the crucial ideas, and who are the main contributors?&lt;/li&gt;&lt;li&gt;    What are the main issues (matters of debate or dispute) in this area?&lt;/li&gt;&lt;li&gt;    Where is your thesis &#39;placed&#39; in terms of the existing theory and debate? How would the major researchers react to your ideas?&lt;/li&gt;&lt;li&gt;    Whom do you think will be most interested in this work?&lt;/li&gt;&lt;li&gt;    Why did you choose the particular research methodology that you used?&lt;/li&gt;&lt;li&gt;    What were the crucial research decisions that you made?&lt;/li&gt;&lt;li&gt;    If you were doing this research again, would you consider using any other research methodology?&lt;/li&gt;&lt;li&gt;    What do you see as the next steps in this research?&lt;/li&gt;&lt;li&gt;    What was the most interesting finding in your results?&lt;/li&gt;&lt;li&gt;    Isn&#39;t this all obvious?&lt;/li&gt;&lt;li&gt;    Were you surprised by any of your results (if so: why, and what was surprising)?&lt;/li&gt;&lt;li&gt;    What advice would you give a new student entering this area?&lt;/li&gt;&lt;li&gt;    What is your plan for publication?&lt;/li&gt;&lt;li&gt;    What haven&#39;t I asked you that I should have, and what would your answer have been&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/9109625293679049858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/9109625293679049858'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/i-found-some-useful-information-for-phd.html' title='Generic Viva Questions'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-4700804544334674011</id><published>2006-08-15T16:32:00.000-04:00</published><updated>2006-08-15T16:33:00.250-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Presentations"/><title type='text'>New Methods for Rock Art Recording and Virtual Analysis</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/1600/landon-saa.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/8148/353607477758922/200/landon-saa.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;George V. Landon and W. Brent Seales.  New Methods for Rock Art Recording and Virtual Analysis.  Michael A. Cinquino and Michele Hayward, organizers.  Symposium on Latin American Rock Art: Conservation and Research Status.  Proceedings of the 71st Annual Meeting of the Society for American Archaeology.  2006 April 26-30; San Juan, Puerto Rico, USA.&lt;/span&gt;&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;span class=&quot;q&quot;  style=&quot;font-family:trebuchet ms;&quot;&gt;Abstract:&lt;br /&gt;&lt;/span&gt;&lt;div style=&quot;direction: ltr;&quot;&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;We present a method for preserving &lt;/span&gt;&lt;span id=&quot;st&quot; name=&quot;st&quot; class=&quot;st&quot;  style=&quot;font-family:trebuchet ms;&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt; visualizing petroglyphic art.  The process creates accurate 3D textured models of carved surfaces, making the intricate geometry available for study with interactive computer tools.  Examples of useful &lt;/span&gt;&lt;span id=&quot;st&quot; name=&quot;st&quot; class=&quot;st&quot;  style=&quot;font-family:trebuchet ms;&quot;&gt;virtual&lt;/span&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt; &lt;/span&gt;&lt;span id=&quot;st&quot; name=&quot;st&quot; class=&quot;st&quot;  style=&quot;font-family:trebuchet ms;&quot;&gt;analysis&lt;/span&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt; include visualization with synthetic lighting, simulation to highlight the subtleties of the carvings, &lt;/span&gt;&lt;span id=&quot;st&quot; name=&quot;st&quot; class=&quot;st&quot;  style=&quot;font-family:trebuchet ms;&quot;&gt;and &lt;/span&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;texture-mapping with annotated content.  We demonstrate with results from Taino petroglyphs, which are located at the ceremonial center in Caquana, Puerto Rico.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4700804544334674011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/4700804544334674011'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/symposium-latin-american-rock-art.html' title='New Methods for Rock Art Recording and Virtual Analysis'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-3460623154778505319</id><published>2006-08-15T16:26:00.000-04:00</published><updated>2006-08-15T16:27:15.970-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Presentations"/><title type='text'>Building and Visualizing 3D Textured Models for Caribbean Petroglyphs</title><content type='html'>IACA 2005 - 21st Congress of The International Association of Caribbean Archaeology (Trinidad &amp;amp; Tobago)  Building and Visualizing 3D Textured Models for Caribbean Petroglyphs</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3460623154778505319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/3460623154778505319'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/building-and-visualizing-3d-textured_15.html' title='Building and Visualizing 3D Textured Models for Caribbean Petroglyphs'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2896752457801097172.post-7139125341088423367</id><published>2006-08-15T16:00:00.001-04:00</published><updated>2006-11-02T08:55:32.251-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Publications"/><title type='text'>Geometric and Photometric Restoration of Distorted Documents</title><content type='html'>Mingxuan Sun, Ruigang Yang, Yun Lin, George V. Landon, W. Brent Seales, Michael S. Brown,                             &quot;Geometric and Photometric Restoration of Distorted Documents,&quot; in &lt;i&gt;Proceedings of the 10th IEEE International Conference on Computer Vision&lt;/i&gt;, vol. 2, October 2005, pp. 1117– 1123.&lt;br /&gt;&lt;br /&gt;Abstract:&lt;br /&gt;We present a system to restore the 2D content printed on distorted documents. Our system works by acquiring a 3D scan of the document’s surface together with a high-resolution image. Using the 3D surface information and the 2D image, we can ameliorate unwanted surface distortion and effects from non-uniform illumination. Our system can process arbitrary geometric distortions, not requiring any pre-assumed parametric models for the document’s geometry. The illumination correction uses the 3D shape to distinguish content edges from illumination edges to recover the 2D content’s reflectance image while making no assumptions about light sources and their positions. Results are shown for real objects, demonstrating a complete framework capable of restoring geometric and photometric artifacts on distorted documents.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/7139125341088423367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2896752457801097172/posts/default/7139125341088423367'/><link rel='alternate' type='text/html' href='http://georgelandon.blogspot.com/2006/08/geometric-and-photometric-restoration.html' title='Geometric and Photometric Restoration of Distorted Documents'/><author><name>George V. Landon</name><uri>http://www.blogger.com/profile/15697050238227059956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>