{"id":874,"date":"2011-01-01T11:03:05","date_gmt":"2011-01-01T18:03:05","guid":{"rendered":"http:\/\/mcclanahoochie.com\/blog\/?post_type=portfolio&#038;p=874"},"modified":"2023-06-10T10:32:26","modified_gmt":"2023-06-10T17:32:26","slug":"laser-projection-vision-system","status":"publish","type":"post","link":"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/laser-projection-vision-system\/","title":{"rendered":"Laser Projection Vision System"},"content":{"rendered":"<h3>September 2008<\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/laser_contours.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"1220\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/laser-projection-vision-system\/laser_contours2\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/laser_contours2.png?fit=200%2C124&amp;ssl=1\" data-orig-size=\"200,124\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"laser_contours2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/laser_contours2.png?fit=200%2C124&amp;ssl=1\" class=\"alignnone size-full wp-image-1220\" title=\"laser_contours2\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/laser_contours2.png?resize=200%2C124\" alt=\"\" width=\"200\" height=\"124\" \/><\/a><\/p>\n<p>A project at GTRI\u00a0<a href=\"http:\/\/www.fptd.gatech.edu\/\">FPTD <\/a>I worked on\u00a0involving combining a color vision system with a 2D laser projector.<\/p>\n<p>Case Study about the project here: \u00a0<strong><a href=\"http:\/\/www.gtri.gatech.edu\/casestudy\/relaying-information-food-processing-technicians\" target=\"_blank\" rel=\"noopener\">Using Lasers to Identify Substandard Food<\/a>.<\/strong><\/p>\n<p>With\u00a0<a href=\"http:\/\/pypi.python.org\/pypi\/CVtypes\/0.1\">Python and OpenCV<\/a>,\u00a0I got the system to find contours with the camera, and tell the laser to draw\u00a0them in real-time. The goal was to use this laser system as a module to another system that detected under-cooked sausage patties. The two systems combined detected, analyzed, tracked, and identified (with the laser) food on a conveyor belt that wasn&#8217;t cooked properly. The laser overlaid different patterns on the food product to indicate the quality of cooking.<\/p>\n<p>&nbsp;<\/p>\n<p>See it in action!<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/hGOo5kP_sEo\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>September 2008 A project at GTRI\u00a0FPTD I worked on\u00a0involving combining a color vision system with a 2D laser projector. Case Study about the project here: \u00a0Using Lasers to Identify Substandard Food. With\u00a0Python and OpenCV,\u00a0I got the system to find contours with the camera, and tell the laser to draw\u00a0them in real-time. The goal was to &#8230; <a title=\"Laser Projection Vision System\" class=\"read-more\" href=\"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/laser-projection-vision-system\/\" aria-label=\"Read more about Laser Projection Vision System\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[113,141,54,140,92,101,29],"class_list":["post-874","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-computer-vision","tag-fptd","tag-image-processing","tag-laser","tag-opencv","tag-programming","tag-projects"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pZdXI-e6","jetpack-related-posts":[{"id":1153,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/04\/computer-vision-on-android-opencv\/","url_meta":{"origin":874,"position":0},"title":"Computer Vision on Android with OpenCV","author":"mcclanahoochie","date":"April 8, 2011","format":false,"excerpt":"March 2011 With the help of Motodev Studio for Android, I've\u00a0extracted\u00a0the\u00a0android-opencv JNI\u00a0camera example and spawned a fork of my original computer vision app,\u00a0Viewer, to an OpenCV version: ViewerCV. Both are\u00a0available on Git Hub\u00a0as open source software example of doing Computer Vision on Android with OpenCV. Viewer Features: *FAST Features (default\u2026","rel":"","context":"In \"android\"","block_context":{"text":"android","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/android\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/04\/viewercv1.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1810,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/09\/opencv-vs-libjacket-gpu-sobel-filtering\/","url_meta":{"origin":874,"position":1},"title":"OpenCV vs. LibJacket: GPU Sobel Filtering","author":"mcclanahoochie","date":"September 24, 2011","format":false,"excerpt":"Update: LibJacket has been renamed to\u00a0\u00a0ArrayFire. In response to a comment on a previous post about integrating LibJacket into an OpenCV project, below is just a simple FYI performance comparison of OpenCV's GPU Sobel filter versus LibJacket's conv2\u00a0convolution\u00a0filter (with a sobel kernel)... This is an evolutionary post, so be sure\u2026","rel":"","context":"In \"arrayfire\"","block_context":{"text":"arrayfire","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/arrayfire\/"},"img":{"alt_text":"Sobel filter: OpenCV GPU vs. LibJacket","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/09\/cv-versus-jkt.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1731,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/08\/image-processing-with-libjacket-opencv\/","url_meta":{"origin":874,"position":2},"title":"Image processing with LibJacket + OpenCV","author":"mcclanahoochie","date":"August 24, 2011","format":false,"excerpt":"Update: one year later:\u00a0ArrayFire+OpenCV The OpenCV library is the de-facto standard for doing computer vision and image processing research projects. OpenCV includes several hundreds of computer vision algorithms, aimed for use in real-time vision applications. LibJacket is a matrix library built on CUDA. LibJacket offers hundreds of general matrix and\u2026","rel":"","context":"In \"arrayfire\"","block_context":{"text":"arrayfire","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/arrayfire\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-24-at-2.42.52-PM-1024x640.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-24-at-2.42.52-PM-1024x640.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/08\/Screen-shot-2011-08-24-at-2.42.52-PM-1024x640.png?resize=525%2C300 1.5x"},"classes":[]},{"id":950,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/computer-vision-on-android\/","url_meta":{"origin":874,"position":3},"title":"Computer Vision on Android in Java","author":"mcclanahoochie","date":"January 4, 2011","format":false,"excerpt":"January 2010 \u00a0 Over the holiday break, I finally created an Android\u00a0app that allows image processing on the camera's raw data, and displays it back on the screen. It only uses\u00a0Java on the CPU for now, but in my free time I'll be porting the code to OpenGL ES to\u2026","rel":"","context":"In \"android\"","block_context":{"text":"android","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/android\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/device-sobel-2-small.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1876,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/10\/gpu-convolution-opencv-gpu-and-libjacket-part-2\/","url_meta":{"origin":874,"position":4},"title":"GPU Convolutions: OpenCV GPU and LibJacket &#8211; Part 2","author":"mcclanahoochie","date":"October 24, 2011","format":false,"excerpt":"This is a response to my earlier post comparing OpenCV's gpu::convolve() and LibJacket's jkt::conv2() convolution functions, at various image and kernel sizes. That post generated a lot of traffic, most notably from the OpenCV developer community. Taking note of this, it seems that the folks at Willow Garage have re-vamped\u2026","rel":"","context":"In \"arrayfire\"","block_context":{"text":"arrayfire","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/arrayfire\/"},"img":{"alt_text":".","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/10\/Screenshot-f2-2075.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/10\/Screenshot-f2-2075.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/10\/Screenshot-f2-2075.png?resize=525%2C300 1.5x"},"classes":[]},{"id":883,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/droid-mods\/","url_meta":{"origin":874,"position":5},"title":"Droid Mods","author":"mcclanahoochie","date":"January 1, 2011","format":false,"excerpt":"April 2010 \u00a0 I got a chance to use a 3D Printer and a Laser Etcher in one of my undergraduate CS\u00a0classes.\u00a0I took the opportunity to make some Motorola Droid mods. I got to laser etch a\u00a0sun onto the\u00a0back of my Droid's battery cover. I also 3D printed\u00a0a car\u00a0mount for\u2026","rel":"","context":"In \"projects\"","block_context":{"text":"projects","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/projects\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/sun.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts\/874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/comments?post=874"}],"version-history":[{"count":0,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts\/874\/revisions"}],"wp:attachment":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/media?parent=874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/categories?post=874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/tags?post=874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}