<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Functional design clunkers</title>
	<atom:link href="http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/</link>
	<description>Steve Eddins manages the Image &#38; Geospatial development team at The MathWorks and coauthored Digital Image Processing Using MATLAB. He writes here about image processing concepts, algorithm implementations, and MATLAB.</description>
	<lastBuildDate>Sat, 11 Feb 2012 18:27:50 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Steve</title>
		<link>http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22914</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Thu, 25 Mar 2010 18:48:24 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22914</guid>
		<description>Dave&#8212;What is the maximum pixel value?

&lt;pre class=&quot;code&quot;&gt;
max(I(:))
&lt;/pre&gt;

I&#039;m guessing that the maximum value is very small, relative to the dynamic range of uint16 values.  graythresh uses a 256-bin histogram in its calculation, so maybe your image values are all so small that they get counted in the lowest bin. I suggest rescaling your data before calling graythresh.</description>
		<content:encoded><![CDATA[<p>Dave&mdash;What is the maximum pixel value?</p>
<pre class="code">
max(I(:))
</pre>
<p>I&#8217;m guessing that the maximum value is very small, relative to the dynamic range of uint16 values.  graythresh uses a 256-bin histogram in its calculation, so maybe your image values are all so small that they get counted in the lowest bin. I suggest rescaling your data before calling graythresh.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22873</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Thu, 18 Mar 2010 16:14:17 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22873</guid>
		<description>Hi, 
I am having difficulty using graythresh() with a tiff file (which I have written to disk using imwrite(...,&#039;TIFF&#039;). The tiff file elements are &#039;uint16&#039;. graythresh() always returns a level of 0.0 so the result of &lt;pre&gt;
I = imread(&#039;mytiff.tiff&#039;);
level = graythresh(I);
BW = im2bw(I,level);
imview(BW)
&lt;/pre&gt; 
is always an image of 1s. I can manually insert a &quot;level&quot; (say 0.0035) into the im2bw(I,level) to give a meaningful result from im2bw but I want to remove the manual threshholding step (obviously). 

thank you 
-Dave</description>
		<content:encoded><![CDATA[<p>Hi,<br />
I am having difficulty using graythresh() with a tiff file (which I have written to disk using imwrite(&#8230;,&#8217;TIFF&#8217;). The tiff file elements are &#8216;uint16&#8242;. graythresh() always returns a level of 0.0 so the result of
<pre>
I = imread('mytiff.tiff');
level = graythresh(I);
BW = im2bw(I,level);
imview(BW)
</pre>
</p><p>is always an image of 1s. I can manually insert a &#8220;level&#8221; (say 0.0035) into the im2bw(I,level) to give a meaningful result from im2bw but I want to remove the manual threshholding step (obviously). </p>
<p>thank you<br />
-Dave</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frida</title>
		<link>http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22684</link>
		<dc:creator>Frida</dc:creator>
		<pubDate>Tue, 09 Feb 2010 08:54:51 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22684</guid>
		<description>I totally agree. I want to find a global average threshold from a large number of images so my initial approach was to sum all their histograms and find graythresh on that. This turned out to be impossible due to the above described problem.You could possible convert this combined histogram to some array where all individual values are represented and try on that but the large number of images =&gt; memory overflow.</description>
		<content:encoded><![CDATA[<p>I totally agree. I want to find a global average threshold from a large number of images so my initial approach was to sum all their histograms and find graythresh on that. This turned out to be impossible due to the above described problem.You could possible convert this combined histogram to some array where all individual values are represented and try on that but the large number of images =&gt; memory overflow.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22104</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Wed, 09 Sep 2009 17:49:52 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22104</guid>
		<description>Roy&#8212;The simple answer is that Otsu&#039;s method appeared to us to be sufficient for a variety of use cases, and so we moved on to something else.  There are dozens of techniques that have been published and we can&#039;t evaluate them all. However, we are always interested to hear when someone has practical experience with multiple algorithms.  Can you give an example where minimum error thresholding performs better for your purposes?  Maybe we and our users can benefit from what you have learned.</description>
		<content:encoded><![CDATA[<p>Roy&mdash;The simple answer is that Otsu&#8217;s method appeared to us to be sufficient for a variety of use cases, and so we moved on to something else.  There are dozens of techniques that have been published and we can&#8217;t evaluate them all. However, we are always interested to hear when someone has practical experience with multiple algorithms.  Can you give an example where minimum error thresholding performs better for your purposes?  Maybe we and our users can benefit from what you have learned.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roy</title>
		<link>http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22098</link>
		<dc:creator>Roy</dc:creator>
		<pubDate>Wed, 09 Sep 2009 01:54:30 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.mathworks.com/steve/2009/08/31/functional-design-clunkers/#comment-22098</guid>
		<description>If you already mention both graythresh and edge in one post I&#039;ll use this opportunity to ponder about them: Why is it tied only to Otsu&#039;s method? Otsu&#039;s is one of many algorithm to determine the &quot;best&quot; value for thresholding. I found for my work that minimum error thresolding (Kittler 86) works better. Similar to edge, graythresh could implement several algorithms and get as input argument which one to use. 

Just a thought... 

Best, 
Roy</description>
		<content:encoded><![CDATA[<p>If you already mention both graythresh and edge in one post I&#8217;ll use this opportunity to ponder about them: Why is it tied only to Otsu&#8217;s method? Otsu&#8217;s is one of many algorithm to determine the &#8220;best&#8221; value for thresholding. I found for my work that minimum error thresolding (Kittler 86) works better. Similar to edge, graythresh could implement several algorithms and get as input argument which one to use. </p>
<p>Just a thought&#8230; </p>
<p>Best,<br />
Roy</p>
]]></content:encoded>
	</item>
</channel>
</rss>

