<?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: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-3910908113763640669</id><updated>2012-02-16T22:31:28.587+01:00</updated><category term='3D Laser Scanner'/><title type='text'>iPost</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-1339628809485027013</id><published>2011-09-26T15:17:00.002+02:00</published><updated>2011-09-26T15:17:38.466+02:00</updated><title type='text'>Apple Media Event?</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XYhU73596kg/ToB7Yw0up-I/AAAAAAAAAE4/i55DaB8osuk/s1600/Apple-iPhone-5-Event.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-XYhU73596kg/ToB7Yw0up-I/AAAAAAAAAE4/i55DaB8osuk/s320/Apple-iPhone-5-Event.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 15px/normal Arial; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 15px/normal Arial; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;It seems that Apple’s iPhone media event is scheduled for 4th of October and will be held at company’s headquarters in Cupertino, California rather than Yerba Buena Center for the Arts in San Francisco.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-1339628809485027013?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/1339628809485027013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2011/09/apple-media-event.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/1339628809485027013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/1339628809485027013'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2011/09/apple-media-event.html' title='Apple Media Event?'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-XYhU73596kg/ToB7Yw0up-I/AAAAAAAAAE4/i55DaB8osuk/s72-c/Apple-iPhone-5-Event.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-3793530801450049512</id><published>2011-08-26T21:55:00.000+02:00</published><updated>2011-10-04T16:42:14.200+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D Laser Scanner'/><title type='text'>3D Object Point Detection - 3D Laser Scanner</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0BNdWII_N6M/Tlf5a7XHA5I/AAAAAAAAAEs/lUqZyRQNdbg/s1600/3Dobject-laserscanner.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-0BNdWII_N6M/Tlf5a7XHA5I/AAAAAAAAAEs/lUqZyRQNdbg/s320/3Dobject-laserscanner.png" width="292" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font: normal normal normal 15px/normal Helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;With use of laser line equations from previous step we can draw laser lines. Difference between the laser lines and images of only red laser pixels will give us the object points. Now we want to get the 3D point cloud. The Intrinsic and Extrinsic Parameters from first step is utilized here to find the 3D point cloud. First we have to find the laser plane by taking 3 non-collinear points from the laser lines, then the 3D coordinates will be the intersection of the laser plane and the object. Afterwards the color of the object points can be added to the point cloud from the reference image.&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 15px/normal Helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;I use the SLAM6D as a 3D Toolkit to show the point cloud which is an open source program and can be downloaded from &lt;a href="http://slam6d.sourceforge.net/"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 15px/normal Helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;SLAM6D is also capable of registering several point clouds with ICP algorithm in this case and put all of them in the same reference frame, however for this purpose we need to get a several scans of our object with small rotational angle, and after calculating the 3D point cloud of each scan the ICP algorithm will take care of the rest and register them together in order to create one rigid 3D object.&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 15px/normal Helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-height: 18px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 12.0px Helvetica; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-LmR_wAmZE7E/Tlf5iN-UkVI/AAAAAAAAAEw/MFAy6jS1iPo/s1600/3Dobject-ICP-laserscanner.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://3.bp.blogspot.com/-LmR_wAmZE7E/Tlf5iN-UkVI/AAAAAAAAAEw/MFAy6jS1iPo/s320/3Dobject-ICP-laserscanner.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-3793530801450049512?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/3793530801450049512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2011/08/3d-object-point-detection-3d-laser.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/3793530801450049512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/3793530801450049512'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2011/08/3d-object-point-detection-3d-laser.html' title='3D Object Point Detection - 3D Laser Scanner'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-0BNdWII_N6M/Tlf5a7XHA5I/AAAAAAAAAEs/lUqZyRQNdbg/s72-c/3Dobject-laserscanner.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-4628938059048112714</id><published>2011-07-08T21:42:00.002+02:00</published><updated>2011-07-08T21:44:58.612+02:00</updated><title type='text'>OS X Lion</title><content type='html'>&lt;div style="font: normal normal normal 15px/normal Helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;According to &lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;a href="http://www.macrumors.com/2011/07/07/apple-retail-stores-making-preparations-for-os-x-lion-launch-next-week/"&gt;macrumors&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; Apple may be preparing its retail stores for a launch of OS X Lion next week, with MacBook Air and other hardware updates likely to follow alongside or soon after the new operating system debuts.&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 15px/normal Helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;a href="http://9to5mac.com/2011/07/07/apple-store-overnight-planned-for-july-13th-new-macbook-airs-and-lion-signage-awaits/"&gt;9 to 5 mac reports&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;that Apple retail stores are planning ‘overnights’ on July 13th. Overnights are generally where Apple refreshes store displays and trains up management on new products.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-4628938059048112714?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/4628938059048112714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2011/07/os-x-lion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/4628938059048112714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/4628938059048112714'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2011/07/os-x-lion.html' title='OS X Lion'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-3836251652165806750</id><published>2011-04-15T13:39:00.000+02:00</published><updated>2011-10-04T16:42:14.203+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D Laser Scanner'/><title type='text'>Laser Line Detection - 3D Laser Scanner</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5KYo-QDnd40/TaguVjGY3tI/AAAAAAAAAC8/EardBr9mWhc/s1600/laser_line.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/-5KYo-QDnd40/TaguVjGY3tI/AAAAAAAAAC8/EardBr9mWhc/s320/laser_line.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0px; padding-top: 0pt; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0px; padding-top: 0pt; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0px; padding-top: 0pt; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;Laser line detection can be done in 3 steps. These steps are should be processed on each frame sequence of our video.&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0pt; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;1. Frame difference: Since the background is static in our video and the only thing that is changing is the laser line in each frame, So by finding the difference of two sequential frames we should be able to separate the laser line from the background. For this purpose we can utilize the cvSub function between an image with laser line on it and a reference image with out a laser line. We can use the cvSmooth before diff process to get the better segmentation of laser line.&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0pt; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AM6vj4vqsZw/Tagt5JmhykI/AAAAAAAAAC0/Kxkf87bpVzE/s1600/frame_diff.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://3.bp.blogspot.com/-AM6vj4vqsZw/Tagt5JmhykI/AAAAAAAAAC0/Kxkf87bpVzE/s320/frame_diff.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0pt; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0pt; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;2. Laser Color: As the above image shows the result image from difference process contain objects other than laser line so we need one more step of process to be able to segment the laser line from background. Since the laser line has red color we aim for finding only red color in our image. This can be achieved by going through all the pixels and check the color of them and if it has a color in specific range we consider it as laser point other than that we change the color of it to black. The result of this step is an image with only red pixels of laser lines.&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0pt; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cOwsFVahFXk/TaguDod0xBI/AAAAAAAAAC4/XWPt67X7yfo/s1600/laser_color.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/-cOwsFVahFXk/TaguDod0xBI/AAAAAAAAAC4/XWPt67X7yfo/s320/laser_color.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0pt; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="paragraph_style" style="-webkit-text-size-adjust: none; font-family: Georgia, serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0px; line-height: 23px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 1; padding-bottom: 0pt; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;"&gt;&lt;span class="Apple-style-span" style="line-height: 21px;"&gt;3. Laser Line: This step is the process of finding the laser line equations. We start it by creating smoothed image from the previous step. Proceed with Canny Edge Detection and by using the cvHoughLines2 function with CV_HOUGH_PROBABILISTIC option of OpenCV we are able to find the laser lines equations. The result of this step is an image with lines founded by cvHoughLines2 function and two line equations.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-3836251652165806750?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/3836251652165806750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2011/04/laser-line-detection-3d-laser-scanner.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/3836251652165806750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/3836251652165806750'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2011/04/laser-line-detection-3d-laser-scanner.html' title='Laser Line Detection - 3D Laser Scanner'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-5KYo-QDnd40/TaguVjGY3tI/AAAAAAAAAC8/EardBr9mWhc/s72-c/laser_line.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-8799916109481766751</id><published>2011-01-05T18:11:00.000+01:00</published><updated>2011-01-05T18:11:29.706+01:00</updated><title type='text'>Consumer Electronic Show - 2011</title><content type='html'>The International Consumer Electronic Show (CES) is a major technology-related trade show held each January in the Las Vegas Convention Center, Las Vegas, Nevada. The 2011 CES will start with in almost 14 hours from January 6 to 9.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-8799916109481766751?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/8799916109481766751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2011/01/consumer-electronic-show-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/8799916109481766751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/8799916109481766751'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2011/01/consumer-electronic-show-2011.html' title='Consumer Electronic Show - 2011'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-1529116573938316363</id><published>2011-01-05T17:46:00.000+01:00</published><updated>2011-10-04T16:42:14.193+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D Laser Scanner'/><title type='text'>Camera Calibration - 3D Laser Scanner</title><content type='html'>The first step is to find the camera Intrinsic and Extrinsic parameters. Intrinsic parameters are only depend on the camera and the Extrinsic parameters are the rotation and translation matrixes. For more details about the camera calibration parameters check the &lt;a href="http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html"&gt;OpenCV Reference&lt;/a&gt; page. For the rest of this post I assume you already have installed and know how to compile an OpenCV program. (if not check this &lt;a href="http://ipost.blogspot.com/2010/10/opencv-on-mac-os-x.html"&gt;post&lt;/a&gt;)&lt;br /&gt;So we need to find the Intrinsic matrix of camera, for this purpose I've used the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cvCalibrateCamera2 &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;function of OpenCV and then for Extrinsic matrix I've used the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cvFindExtrinsicCameraParams2&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;function.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;These are the standard functions of OpenCV for camera calibration. The&amp;nbsp;cvCalibrateCamera2 function returns the Intrinsic parameters as a &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;"3X3"&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; Matrix which we call it&amp;nbsp;Matrix:&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;"A". &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cvFindExtrinsicCameraParams2 &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;returns the Extrinsic Parameters as to Vectors which we call them &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;"Vr"&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; for rotation and &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;"Vt"&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; for translation. as you can see from the prevues post picture our scene has two checker board on the left side and right side of our corner, So we need to calculate &amp;nbsp;the Extrinsic parameters for both of them, one only with the left checker board and one only with right checker board.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;This give us the rotation and translation from camera to the left coordinate and right coordinate of our scene.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_6FBKn2KXcKU/TSSe_7uTkaI/AAAAAAAAAA8/sUgoVQCHHF8/s1600/iPost-cameracalibration.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://2.bp.blogspot.com/_6FBKn2KXcKU/TSSe_7uTkaI/AAAAAAAAAA8/sUgoVQCHHF8/s400/iPost-cameracalibration.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;And for Intrinsic parameter we can do it separately with one checker board. Since we need to calculate the 3D point cloud of our object we need these parameters to find the laser plane and intersect it with our object, and for finding the laser plane we need the equation of our laser line. Son in next post I am going to show you how to find the laser line equations from sequence of frames from a video.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-1529116573938316363?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/1529116573938316363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2011/01/camera-calibration-3d-laser-scanner.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/1529116573938316363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/1529116573938316363'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2011/01/camera-calibration-3d-laser-scanner.html' title='Camera Calibration - 3D Laser Scanner'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6FBKn2KXcKU/TSSe_7uTkaI/AAAAAAAAAA8/sUgoVQCHHF8/s72-c/iPost-cameracalibration.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-3283917111627484347</id><published>2010-12-05T01:35:00.000+01:00</published><updated>2011-10-04T16:42:14.197+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D Laser Scanner'/><title type='text'>3D Laser Scanner</title><content type='html'>This is a very cool thing that I made in my course Lab. You only need an Object for scan, a corner shape scene, a digital camera and a laser which produce a laser line.&lt;br /&gt;The whole process has 6 steps as follow:&lt;br /&gt;&lt;br /&gt;1. Camera Calibration&lt;br /&gt;2. Laser Line Detection&lt;br /&gt;3. Object Detection&lt;br /&gt;4. 3D Point Cloud&lt;br /&gt;5. Color Point Cloud&lt;br /&gt;6. Scan Registration with ICP&lt;br /&gt;&lt;br /&gt;after these 6 steps you end up with a 3D point cloud of your object. This is really cool because you can have your own 3D laser scanner at a very low price at home.&lt;br /&gt;&lt;br /&gt;In this picture you can see the corner scene our object and two checkerboards on both sides of the corner, those are needed for camera calibration, don't worry more will come about the camera calibration.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_6FBKn2KXcKU/TQP8ahMh71I/AAAAAAAAAA0/YQ4bnli5_34/s1600/iPost-3DLaser.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_6FBKn2KXcKU/TQP8ahMh71I/AAAAAAAAAA0/YQ4bnli5_34/s320/iPost-3DLaser.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So I am going you to help you guys step by step to build this thing. &amp;nbsp;There will be 6 posts on this topic one for each step and one at last to show some of my results. Just contact me if you have any questions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-3283917111627484347?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/3283917111627484347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/12/3d-laser-scanner.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/3283917111627484347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/3283917111627484347'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/12/3d-laser-scanner.html' title='3D Laser Scanner'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6FBKn2KXcKU/TQP8ahMh71I/AAAAAAAAAA0/YQ4bnli5_34/s72-c/iPost-3DLaser.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-2848152421303449159</id><published>2010-11-23T01:15:00.001+01:00</published><updated>2010-11-23T01:15:32.168+01:00</updated><title type='text'>Apple’s iOS</title><content type='html'>&amp;nbsp;Apple’s iOS 4.2 Available Today for iPad, iPhone, and iPod touch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-2848152421303449159?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/2848152421303449159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/11/apples-ios.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/2848152421303449159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/2848152421303449159'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/11/apples-ios.html' title='Apple’s iOS'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-7724747252570053871</id><published>2010-11-10T23:53:00.000+01:00</published><updated>2010-11-10T23:53:50.448+01:00</updated><title type='text'>Journey-Don't Stop Believin' (Arnel Pineda)</title><content type='html'>&lt;object style="background-image:url(http://i4.ytimg.com/vi/crXK49f9kQg/hqdefault.jpg)" width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/crXK49f9kQg?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/crXK49f9kQg?fs=1&amp;amp;hl=en_US" width="425" height="344" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-7724747252570053871?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/7724747252570053871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/11/journey-dont-stop-believin-arnel-pineda.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/7724747252570053871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/7724747252570053871'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/11/journey-dont-stop-believin-arnel-pineda.html' title='Journey-Don&apos;t Stop Believin&apos; (Arnel Pineda)'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-1539685229900647094</id><published>2010-11-10T23:46:00.000+01:00</published><updated>2010-11-10T23:46:32.833+01:00</updated><title type='text'>Dire Straits - Sultans of Swing | NOT LIVE !!! | CD version !!! | Origin...</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xo-J1wf2KHc?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/xo-J1wf2KHc?fs=1&amp;amp;hl=en_US" width="425" height="344" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-1539685229900647094?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/1539685229900647094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/11/dire-straits-sultans-of-swing-not-live.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/1539685229900647094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/1539685229900647094'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/11/dire-straits-sultans-of-swing-not-live.html' title='Dire Straits - Sultans of Swing | NOT LIVE !!! | CD version !!! | Origin...'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-549761520248125640</id><published>2010-10-27T21:51:00.000+02:00</published><updated>2010-10-27T21:53:49.031+02:00</updated><title type='text'>Easy way to parse the HTML in Ruby</title><content type='html'>There is an &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;RubyGem&lt;/span&gt; available for parsing the &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;HTML&lt;/span&gt; for ruby in a very fast manner that called &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Hpricot&lt;/span&gt;.&lt;br /&gt;If you wonder what &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Gem&lt;/span&gt; is don't worry it is just a way for &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Ruby&lt;/span&gt; to call it's Packaged application or library, and each one has&amp;nbsp;&lt;i&gt;name and &lt;/i&gt;a&lt;i&gt; version. &amp;nbsp;&lt;/i&gt;For more information you can check the &lt;a href="http://docs.rubygems.org/read/chapter/1#page22"&gt;link&lt;/a&gt;&amp;nbsp;or just google it.&lt;br /&gt;&lt;br /&gt;Now you know what gem is and how to use them it is very easy to install the &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Hpricot&lt;/span&gt; just open a terminal and type:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gem install hpricot&lt;/span&gt;&lt;/blockquote&gt;you need to be a root user to install and it does, however, require a compiler to install (as it is written in C), so&amp;nbsp;this&amp;nbsp;should be ok on &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Linux&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Mac OS X&lt;/span&gt; and afterward everything is ready to use.&lt;br /&gt;&lt;br /&gt;Here is some demo to how to use it:&lt;br /&gt;&lt;br /&gt;Lets have this &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;HTML&lt;/span&gt; as our example.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;div id="container"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;div id="navigation"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;ul&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href="/"&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href="/contact&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/ul&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div id="sub-content"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;p&amp;gt;This would be some sort of sidebar&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div id="content"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;This is paragraph 1&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;p&amp;gt;This is paragraph 2&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's assume the &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;HTML&lt;/span&gt; is already in variable &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;@html&lt;/span&gt; so we can easily pull out paragraphs by:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;require 'hpricot'&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;doc = Hpricot(@html)&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;pars = Array.new&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;doc.search("div[@id=content]/p").each do |p|&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;pars &amp;lt;&amp;lt; p.inner_html&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Yes thats all you have to do ;) now you have an array with two elements that are the same as two &lt;i&gt;&lt;b&gt;P&lt;/b&gt;&lt;/i&gt; tags in content &lt;b&gt;&lt;i&gt;div&lt;/i&gt;&lt;/b&gt;. Notice that the &lt;i&gt;&lt;b&gt;P&lt;/b&gt;&lt;/i&gt;&amp;nbsp;tag of sub-content isn't selected.&lt;br /&gt;This is just a tip on &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Hpricot&lt;/span&gt; and the library is more powerful than this. For more information about this you can check the &lt;a href="http://hpricot.com/"&gt;official page&lt;/a&gt; of &lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Hpricot&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-549761520248125640?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/549761520248125640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/10/easy-way-to-parse-html-in-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/549761520248125640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/549761520248125640'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/10/easy-way-to-parse-html-in-ruby.html' title='Easy way to parse the HTML in Ruby'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-14835695293909401</id><published>2010-10-21T22:29:00.000+02:00</published><updated>2010-10-21T22:31:29.967+02:00</updated><title type='text'>OpenCV on Mac OS X</title><content type='html'>The easy way is to use MacPorts.&lt;br /&gt;So I assume you have already installed MacPorts on your System.&lt;br /&gt;&lt;br /&gt;In Snow Leopard you can build OpenCV 2.1.0 and above by MacPorts.&lt;br /&gt;Step1: Update the MacPorts:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo port selfupdate&lt;/span&gt;&lt;/blockquote&gt;Step2: Build OpenCV:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo port install opencv&lt;/span&gt;&lt;/blockquote&gt;If you encounter problems just try installing dependencies &amp;nbsp;with &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;+universal&lt;/span&gt; whenever possible.&lt;br /&gt;&lt;br /&gt;Step3: Let your shell know about the libraries and pkgconfig. For bash just:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export LD_LIBRARY_PATH=/usr&lt;/span&gt;&lt;/blockquote&gt;Step4: Now you can compile OpenCV files with:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;g++ -bind_at_load `pkg-config --cflags opencv` OpenCV-Sample.c -o OpenCV-Sample ` pkg-config --libs opencv`&lt;/span&gt;&lt;/blockquote&gt;Additional Step: If you don't like to type all of the above line every time you can make an alias and add it to you &lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;.&lt;b&gt;profile&lt;/b&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;file in your home directory if there is no &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;b&gt;.profile&lt;/b&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;file in your home directory just create one. For that Just:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; cd "to your home directory"&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; nano .profile&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif; white-space: pre;"&gt;add the following line in the file and save it:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"&gt; a&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;lias gcv="g++ -bind_at_load `pkg-config --cflags opencv` `pkg-co nfig --libs opencv`"&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Now just restart your Terminal and from now on you can compile the OpenCV files with the "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gcv" &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;command.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-14835695293909401?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/14835695293909401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/10/opencv-on-mac-os-x.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/14835695293909401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/14835695293909401'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/10/opencv-on-mac-os-x.html' title='OpenCV on Mac OS X'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-4229657135000212174</id><published>2010-10-21T20:56:00.000+02:00</published><updated>2010-10-21T22:42:13.618+02:00</updated><title type='text'>Back to The Mac</title><content type='html'>The last event of Apple was on yesterday on Oct 20-2010. They basically introduce the new Mac OS X Lion, the new iLife 11 and the new Macbook Air which seems pretty cool.&lt;br /&gt;It will be available in 11- and 13-inchmodels with 1.4- and 1.86-GHz Core 2 Duo processor. All the models have the Apple Flash storage which make the system much faster. A High Resolution Display with even thinner built in camera thats is great for making FaceTime calls. The new Display has even more pixel than todays Macbook Pro. The battery life gets up to 5 hour in 11-inch and 7 hour in 13-inch and up to incredible 30 days of standby time and all of these are just available from only 999$ from yesterday.&lt;br /&gt;They are also a lots of new cool stuffs added to iPhoto 11 such as new templates for Slideshow and a gorgeous full screen mode that is great. They also make sending email much easer in iPhoto. You can just select the images you want and send them from iPhoto from your contact list automatically iPhoto does the attachment itself and also possible to use some templates for sending images.&lt;br /&gt;Happy news for musicians they add really cool stuffs to GarageBand. They make sound mixing much easer and lots of other stuff.&lt;br /&gt;OK, It is time for the new Mac OS X. In the Lion the OS X come together with iPad. The AppStore is going to be for Mac OS X too. The Mac App Store, one click downloads with automatic installation and automatic updates. It is the same as before and the developers gets 70% of the revenues. They add the autosave of iOs to OS X Lion. They added new multi-tuch gestures. They add the Lunch Pad which is the same thing as Home Screen in iPad it gives you a space for all of your applications.&lt;br /&gt;They also add a Mission Control a new way for moving between your open applications and open documents it is a combination of expose and spaces and Dashboard and Full Screen apps. That you can switch between them by a gesture on your Touchpad and it looks really beautiful.&lt;br /&gt;The Lion will be lunched this summer and the Mac AppStore will be available in 90 days.&lt;br /&gt;Very excited about the new Stuffs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Apple Special Event&lt;br /&gt;October 20, 2010&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-4229657135000212174?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/4229657135000212174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/10/back-to-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/4229657135000212174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/4229657135000212174'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/10/back-to-mac.html' title='Back to The Mac'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3910908113763640669.post-6867585133944357480</id><published>2010-10-21T17:23:00.000+02:00</published><updated>2010-10-21T17:23:30.076+02:00</updated><title type='text'>The first post of iPost</title><content type='html'>Hi everybody,&lt;br /&gt;&lt;br /&gt;This is y first post here and I am going to post as many as I can to keep this Blog updated.&lt;br /&gt;Here I am going to post about everything from Music, Movies and Video Games to Computer Science stuff and new Technologies.&lt;br /&gt;&lt;br /&gt;So staid tune for every thing new I will find.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3910908113763640669-6867585133944357480?l=ipost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipost.blogspot.com/feeds/6867585133944357480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ipost.blogspot.com/2010/10/first-post-of-ipost.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/6867585133944357480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3910908113763640669/posts/default/6867585133944357480'/><link rel='alternate' type='text/html' href='http://ipost.blogspot.com/2010/10/first-post-of-ipost.html' title='The first post of iPost'/><author><name>HamidReza Houshiar</name><uri>http://www.blogger.com/profile/16486308141520604986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_6FBKn2KXcKU/TMBW_sHRQjI/AAAAAAAAAAQ/U82PEuQPTrc/S220/Myself.jpg'/></author><thr:total>0</thr:total></entry></feed>
