{"id":698,"date":"2012-11-05T15:12:52","date_gmt":"2012-11-05T20:12:52","guid":{"rendered":"https:\/\/blogs.mathworks.com\/steve\/?p=698"},"modified":"2019-10-31T15:01:36","modified_gmt":"2019-10-31T19:01:36","slug":"computer-vision-and-image-processing-in-r2012b","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/steve\/2012\/11\/05\/computer-vision-and-image-processing-in-r2012b\/","title":{"rendered":"Computer vision and image processing in R2012b"},"content":{"rendered":"<div class=\"content\"><!--introduction-->A lot happened in the R2012b for products related to image processing:<\/p>\n<p><!--\/introduction--><\/p>\n<h3>Contents<\/h3>\n<div>\n<ul>\n<li><a href=\"#dbdb5eeb-582f-4e2b-9fb3-645b0bbc4730\">Computer Vision System Toolbox<\/a><\/li>\n<li><a href=\"#4d7707e5-ac3d-4c7b-8455-75456ed37b81\">Image Processing Toolbox<\/a><\/li>\n<li><a href=\"#66af4ee0-b988-458f-b2bd-da9457adf970\">Image Acquisition Toolbox<\/a><\/li>\n<\/ul>\n<\/div>\n<h4>Computer Vision System Toolbox<a name=\"dbdb5eeb-582f-4e2b-9fb3-645b0bbc4730\"><\/a><\/h4>\n<p>The Computer Vision System Toolbox added a <a href=\"https:\/\/www.mathworks.com\/help\/vision\/ref\/vision.kalmanfilterclass.html\">Kalman filter system object<\/a> and a <a href=\"https:\/\/www.mathworks.com\/help\/vision\/ref\/assigndetectionstotracks.html\">Hungarian assignment algorithm function<\/a>, both for object tracking. The <a href=\"https:\/\/www.mathworks.com\/help\/vision\/ref\/insertobjectannotation.html\"><tt>insertObjectAnnotation<\/tt><\/a> function is also useful for object tracking. The <tt>vision.PointTracker<\/tt> system object tracks points using the KLT feature tracker algorithm.<\/p>\n<p>The <a title=\"https:\/\/www.mathworks.com\/help\/vision\/ref\/vision.peopledetectorclass.html (link no longer works)\"><tt>vision.PeopleDetector<\/tt><\/a> system object uses HOG features and a trained SVM classifier to find unoccluded people in upright positions.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/steve\/2012\/detected-people.jpg\" alt=\"\" hspace=\"5\" vspace=\"5\" \/><\/p>\n<p><a href=\"https:\/\/www.mathworks.com\/help\/vision\/ref\/showmatchedfeatures.html\"><tt>showMatchedFeatures<\/tt><\/a> is a nice visualization function to examine corresponding feature matches between a pair of images.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/steve\/2012\/matched-features.jpg\" alt=\"\" hspace=\"5\" vspace=\"5\" \/><\/p>\n<p>Several new examples and tutorials have been added to the doc, such as <a href=\"https:\/\/www.mathworks.com\/help\/vision\/examples\/motion-based-multiple-object-tracking.html\">Motion-Based Multiple Object Tracking<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p><i>Side note: the office building atrium shown in the picture above is being torn up as I write this. I can't wait to see what the new design looks like.<\/i><\/p>\n<p>For more information, see the R2012b Computer Vision System Toolbox <a href=\"https:\/\/www.mathworks.com\/help\/vision\/release-notes.html\">Release Notes<\/a>.<\/p>\n<h4>Image Processing Toolbox<a name=\"4d7707e5-ac3d-4c7b-8455-75456ed37b81\"><\/a><\/h4>\n<p>The Image Processing Toolbox added several new functions in the R2012b release, including:<\/p>\n<div>\n<ul>\n<li><tt>imgradient<\/tt> and <tt>imgradientxy<\/tt><\/li>\n<li><tt>imhistmatch<\/tt> for histogram matching<\/li>\n<li><tt>multithresh<\/tt> and <tt>imquantize<\/tt> for multilevel thresholding<\/li>\n<li><tt>bwlookup<\/tt>, a replacement for <tt>applylut<\/tt> that offers MATLAB Coder support.<\/li>\n<\/ul>\n<\/div>\n<p>Several functions run faster now, including:<\/p>\n<div>\n<ul>\n<li><tt>adapthisteq<\/tt><\/li>\n<li><tt>histeq<\/tt><\/li>\n<li><tt>imrotate<\/tt><\/li>\n<li><tt>intlut<\/tt><\/li>\n<\/ul>\n<\/div>\n<p>Image gradient computations were available in the toolbox before, but it was kind of hidden (as optional output arguments from the <tt>edge<\/tt> function). We hope it will be much more discoverable now. We thought most people computing the image gradient are more interested in the gradient magnitude, so that's what <tt>imgradient<\/tt> computes. To get the horizontal and vertical gradient components, call <tt>imgradientxy<\/tt> instead.<\/p>\n<p>&nbsp;<\/p>\n<p>Histogram matching is a useful way to view a series of images so that they are all adjusted to have roughly the same contrast and brightness.<\/p>\n<p>If you have a MATLAB Coder license, you'll find that you can now generate C code for calls to <tt>bwmorph<\/tt> and the new <tt>bwlookup<\/tt>.<\/p>\n<p>For more information, see the Image Processing Toolbox <a href=\"https:\/\/www.mathworks.com\/help\/images\/release-notes.html\">Release Notes<\/a>.<\/p>\n<h4>Image Acquisition Toolbox<a name=\"66af4ee0-b988-458f-b2bd-da9457adf970\"><\/a><\/h4>\n<p>The Image Acquisition Toolbox added a new adaptor for Point Grey cameras, including FireWire, GigE Vision, USB 2, and Bumblebee 2.<\/p>\n<p>It has also added support for Matrox Orion HD hardware.<\/p>\n<p>GigE Vision devices are now easier to install and configure.<\/p>\n<p>For more information, see the Image Acquisition Toolbox <a href=\"https:\/\/www.mathworks.com\/help\/imaq\/release-notes.html\">Release Notes<\/a>.<\/p>\n<p><script>\/\/ <![CDATA[\nfunction grabCode_026e065bbf8f45e9945e55404c50bfdc() {\n        \/\/ Remember the title so we can use it in the new page\n        title = document.title;\n\n        \/\/ Break up these strings so that their presence\n        \/\/ in the Javascript doesn't mess up the search for\n        \/\/ the MATLAB code.\n        t1='026e065bbf8f45e9945e55404c50bfdc ' + '##### ' + 'SOURCE BEGIN' + ' #####';\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 026e065bbf8f45e9945e55404c50bfdc';\n    \n        b=document.getElementsByTagName('body')[0];\n        i1=b.innerHTML.indexOf(t1)+t1.length;\n        i2=b.innerHTML.indexOf(t2);\n \n        code_string = b.innerHTML.substring(i1, i2);\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\n\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \n        \/\/ in the XML parser.\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\n        \/\/ doesn't go ahead and substitute the less-than character. \n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\n\n        copyright = 'Copyright 2012 The MathWorks, Inc.';\n\n        w = window.open();\n        d = w.document;\n        d.write('\n\n\n\n<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\n\n\n\n\n\\n');\n\n        d.title = title + ' (MATLAB code)';\n        d.close();\n    }\n\/\/ ]]><\/script><\/p>\n<p style=\"text-align: right; font-size: xx-small; font-weight: lighter; font-style: italic; color: gray;\">\n<a><span style=\"font-size: x-small; font-style: italic;\">Get<br \/>\nthe MATLAB code<noscript>(requires JavaScript)<\/noscript><\/span><\/a><\/p>\n<p>Published with MATLAB\u00ae R2012b<\/p>\n<p class=\"footer\">\nPublished with MATLAB\u00ae R2012b<\/p>\n<\/div>\n<p><!--\n026e065bbf8f45e9945e55404c50bfdc ##### SOURCE BEGIN #####\n%% Computer vision and image processing in R2012b\n% A lot happened in the R2012b for products related to image processing:\n%\n%% Computer Vision System Toolbox\n% The Computer Vision System Toolbox added a\n% <https:\/\/www.mathworks.com\/help\/vision\/ref\/vision.kalmanfilterclass.html % Kalman filter system object> and a\n% <https:\/\/www.mathworks.com\/help\/vision\/ref\/assigndetectionstotracks.html % Hungarian assignment algorithm function>, both for object tracking. The\n% <https:\/\/www.mathworks.com\/help\/vision\/ref\/insertobjectannotation.html % |insertObjectAnnotation|> function is also useful for object tracking. The\n% <https:\/\/www.mathworks.com\/help\/vision\/ref\/vision.pointtrackerclass.html % |vision.PointTracker|> system object tracks points using the KLT feature\n% tracker algorithm.\n%\n% The\n% <https:\/\/www.mathworks.com\/help\/vision\/ref\/vision.peopledetectorclass.html % |vision.PeopleDetector|> system object uses HOG features and a trained SVM\n% classifier to find unoccluded people in upright positions.\n%\n% <<https:\/\/blogs.mathworks.com\/images\/steve\/2012\/detected-people.jpg>>\n%\n% <https:\/\/www.mathworks.com\/help\/vision\/ref\/showmatchedfeatures.html % |showMatchedFeatures|> is a nice visualization function to examine\n% corresponding feature matches between a pair of images.\n%\n% <<https:\/\/blogs.mathworks.com\/images\/steve\/2012\/matched-features.jpg>>\n%\n% Several new examples and tutorials have been added to the doc, such as\n% <https:\/\/www.mathworks.com\/help\/vision\/examples\/motion-based-multiple-object-tracking.html % Motion-Based Multiple Object Tracking>.\n%\n% <<https:\/\/www.mathworks.com\/help\/vision\/examples\/multiobjecttracking_02.png>>\n%\n% _Side note: the office building atrium shown in the picture above is\n% being torn up as I write this. I can't wait to see what the new design\n% looks like._\n%\n% For more information, see the R2012b Computer Vision System Toolbox\n% <https:\/\/www.mathworks.com\/help\/vision\/release-notes.html Release Notes>.\n%\n%% Image Processing Toolbox\n% The Image Processing Toolbox added several new functions in the R2012b\n% release, including:\n%\n% * |imgradient| and |imgradientxy|\n% * |imhistmatch| for histogram matching\n% * |multithresh| and |imquantize| for multilevel thresholding\n% * |bwlookup|, a replacement for |applylut| that offers MATLAB Coder\n% support.\n%\n% Several functions run faster now, including:\n%\n% * |adapthisteq|\n% * |histeq|\n% * |imrotate|\n% * |intlut|\n%\n% Image gradient computations were available in the toolbox before, but it\n% was kind of hidden (as optional output arguments from the |edge|\n% function). We hope it will be much more discoverable now. We thought most\n% people computing the image gradient are more interested in the gradient\n% magnitude, so that's what |imgradient| computes. To get the horizontal\n% and vertical gradient components, call |imgradientxy| instead.\n%\n% <<https:\/\/www.mathworks.com\/help\/images\/ref\/gmaggdirprewitt.png>>\n%\n% Histogram matching is a useful way to view a series of images so that\n% they are all adjusted to have roughly the same contrast and brightness.\n%\n% <<https:\/\/www.mathworks.com\/help\/images\/ref\/imhistmatchkneerefa.png>>\n%\n% <<https:\/\/www.mathworks.com\/help\/images\/ref\/imhistmatchkneeb64bu.png>>\n%\n% If you have a MATLAB Coder license, you'll find that you can now generate\n% C code for calls to |bwmorph| and the new |bwlookup|.\n%\n% For more information, see the Image Processing Toolbox\n% <https:\/\/www.mathworks.com\/help\/images\/release-notes.html Release Notes>.\n%\n%% Image Acquisition Toolbox\n% The Image Acquisition Toolbox added a new adaptor for Point Grey cameras,\n% including FireWire, GigE Vision, USB 2, and Bumblebee 2.\n%\n% It has also added support for Matrox Orion HD hardware.\n%\n% GigE Vision devices are now easier to install and configure.\n%\n% For more information, see the Image Acquisition Toolbox\n% <https:\/\/www.mathworks.com\/help\/imaq\/release-notes.html Release Notes>.\n##### SOURCE END ##### 026e065bbf8f45e9945e55404c50bfdc\n--><\/p>\n","protected":false},"excerpt":{"rendered":"<p><!--introduction-->A lot happened in the R2012b for products related to image processing:<\/p>\n<p><!--\/introduction-->... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/steve\/2012\/11\/05\/computer-vision-and-image-processing-in-r2012b\/\">read more >><\/a><\/p>\n","protected":false},"author":42,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[134,941,943,931,933,935,939,945,923,639,937,927,925,929],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts\/698"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/comments?post=698"}],"version-history":[{"count":8,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts\/698\/revisions"}],"predecessor-version":[{"id":2678,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts\/698\/revisions\/2678"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/media?parent=698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/categories?post=698"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/tags?post=698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}