{"id":4701,"date":"2013-07-12T09:00:30","date_gmt":"2013-07-12T13:00:30","guid":{"rendered":"https:\/\/blogs.mathworks.com\/pick\/?p=4701"},"modified":"2013-07-12T10:07:00","modified_gmt":"2013-07-12T14:07:00","slug":"interactively-measure-features-in-images","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/pick\/2013\/07\/12\/interactively-measure-features-in-images\/","title":{"rendered":"Interactively measure features in images"},"content":{"rendered":"<div class=\"content\"><!--introduction--><!--\/introduction--><p><a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/911\">Brett<\/a>'s Pick this week is <a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/25964-jann5s-measuretool\">\"Image Measurement Utility\"<\/a>, by <a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/77852\">Jan Neggers<\/a>.<\/p><p>Those of you who have followed my Picks over the years (or ever downloaded one of my own File Exchange submissions, or read my guest posts on <a href=\"https:\/\/blogs.mathworks.com\/steve\/\">Steve's image processing blog<\/a>) know that I am passionate about image processing using MATLAB. I often get to help customers automate the extraction of information from multiple images; when the images are amenable, MATLAB is an excellent platform for creating such automation routines.<\/p><p>Often, though, the features in an image series are difficult to detect automatically and reliably, and automating analyses is quite difficult. In such cases, we need to use manual tools to get the information we need. The <a href=\"https:\/\/www.mathworks.com\/products\/image\/\">Image Processing Toolbox<\/a> has resources (like <a href=\"https:\/\/www.mathworks.com\/help\/images\/ref\/imdistline.html\"><tt>imdistline<\/tt><\/a>) that facilitate some of those measurements, but it's generally left to the user to do things like scale the measurements, or calculate angles.<\/p><p>Enter \"Image Measurement Utility.\"<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/pick\/files\/ImMeasApp.png\" alt=\"\"> <\/p><p>Jan's tool allows you to drag to define a calibration line, which you can propagate through a series of images. Then, you can readily measure (in real units): distances between points, or between a point and a line; angles; circle radii; or distances along smoothed or piecewise-linear paths. (You can also measure the mean pixel intensity underneath a manually drawn path. This functionality was added by Jan at the request of a user.)<\/p><p>I really like the fact that Jan provided his measurement tool in \"standard form\" (that is, as a collection of MATLAB files callable from the MATLAB Command Line), and as an <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/creating_guis\/app-creation.html\">app<\/a> as well. His documentation is also quite good, and describes all the things you can do with the tool. And, I think it's great that Jan was responsive to the users of the tool, and amenable to improving it based upon the feedback he received.<\/p><p>Very handy untility, Jan! I'm sure I'll have lots of opportunities to use it.<\/p><p>As always, I welcome your <a href=\"https:\/\/blogs.mathworks.com\/pick\/?p=4701#respond\">thoughts and comments<\/a>. Or leave feedback for Jan <a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/25964-jann5s-measuretool#comments\">here<\/a>.<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_425277906511453f8d06dccade59b60d() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='425277906511453f8d06dccade59b60d ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 425277906511453f8d06dccade59b60d';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2013 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<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');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_425277906511453f8d06dccade59b60d()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2013a<br><\/p><p class=\"footer\"><br>\r\n      Published with MATLAB&reg; R2013a<br><\/p><\/div><!--\r\n425277906511453f8d06dccade59b60d ##### SOURCE BEGIN #####\r\n%% Interactively measure features in images\r\n%% \r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/911 Brett>'s Pick this week is\r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/25964-jann5s-measuretool \"Image Measurement Utility\">, by\r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/authors\/77852 Jan Neggers>.\r\n\r\n%%\r\n% Those of you who have followed my Picks over the years (or ever\r\n% downloaded one of my own File Exchange submissions, or read my guest\r\n% posts on <https:\/\/blogs.mathworks.com\/steve\/ Steve's image processing blog>) \r\n% know that I am passionate about\r\n% image processing using MATLAB. I often get to help customers automate the\r\n% extraction of information from multiple images; when the images are\r\n% amenable, MATLAB is an excellent platform for creating such automation\r\n% routines.\r\n\r\n%%\r\n% Often, though, the features in an image series are difficult to detect\r\n% automatically and reliably, and automating analyses is quite difficult. In such\r\n% cases, we need to use manual tools to get the information we need.\r\n% The <https:\/\/www.mathworks.com\/products\/image\/ Image Processing Toolbox>\r\n% has resources (like <https:\/\/www.mathworks.com\/help\/images\/ref\/imdistline.html |imdistline|>)\r\n% that\r\n% facilitate some of those measurements, but it's generally left to the\r\n% user to do things like scale the measurements, or calculate angles.\r\n\r\n%%\r\n% Enter \"Image Measurement Utility.\" \r\n\r\n%%\r\n% \r\n% <<https:\/\/blogs.mathworks.com\/pick\/files\/ImMeasApp.png>>\r\n% \r\n\r\n%%\r\n% Jan's tool allows you to drag to define a calibration line, which you can\r\n% propagate through a series of images. Then, you can readily measure (in\r\n% real units) distances between points, or between a point and a line;\r\n% angles; circle radii; or distances along smoothed or piecewise-linear\r\n% paths. (You can also measure the mean pixel intensity underneath a manually\r\n% drawn path. This functionality was added by Jan at the request of a user.)\r\n\r\n%%\r\n% I really like the fact that Jan provided his measurement tool in\r\n% \"standard form\" (that is, as a collection of MATLAB files callable from\r\n% the MATLAB Command Line), and as an <https:\/\/www.mathworks.com\/help\/matlab\/creating_guis\/app-creation.html app>\r\n% as well. His documentation is\r\n% also quite good, and describes all the things you can do with the tool.\r\n% And, I think it's great that Jan was responsive to the users of the tool,\r\n% and amenable to improving it based upon the feedback he received. \r\n\r\n%%\r\n% Very handy untility, Jan! I'm sure I'll have lots of opportunities to use\r\n% it.\r\n\r\n%%\r\n% As always, I welcome your\r\n% <https:\/\/blogs.mathworks.com\/pick\/?p=4701#respond thoughts and comments>.\r\n% Or leave feedback for Jan\r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/25964-jann5s-measuretool#comments\r\n% here>.\r\n##### SOURCE END ##### 425277906511453f8d06dccade59b60d\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"https:\/\/blogs.mathworks.com\/pick\/files\/ImMeasApp.png\" onError=\"this.style.display ='none';\" \/><\/div><p>Brett's Pick this week is \"Image Measurement Utility\", by Jan Neggers.Those of you who have followed my Picks over the years (or ever downloaded one of my own File Exchange submissions, or read my... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/pick\/2013\/07\/12\/interactively-measure-features-in-images\/\">read more >><\/a><\/p>","protected":false},"author":34,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts\/4701"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/comments?post=4701"}],"version-history":[{"count":6,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts\/4701\/revisions"}],"predecessor-version":[{"id":4707,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/posts\/4701\/revisions\/4707"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/media?parent=4701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/categories?post=4701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/pick\/wp-json\/wp\/v2\/tags?post=4701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}