<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndrewBangham</id>
	<title>BanghamLab - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndrewBangham"/>
	<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php/Special:Contributions/AndrewBangham"/>
	<updated>2026-04-06T21:32:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6923</id>
		<title>MSER&#039;s and Connected sets</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6923"/>
		<updated>2014-08-12T18:54:52Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves Return to connected-sets]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[[Mean and median filters bad|&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Mean and median filters &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]]==&lt;br /&gt;
=====Then after a couple of twists=====&lt;br /&gt;
==[[Gaussian and sieve filters|&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Gaussian and sieve filters &#039;&#039;&#039;&#039;&#039;good&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]]==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&lt;br /&gt;
[[Details_on_hydrophobicity_plots | The first published application of the data-sieve as reviewed by Fasman, click here ...&amp;lt;/span&amp;gt;]]&lt;br /&gt;
|[[Image:hydrophobicity_plots_Fasman.jpg|right|300px]]&lt;br /&gt;
|From Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&lt;br /&gt;
Left: Running mean (c.f Gaussian): &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;no good&amp;lt;/span&amp;gt;, Right: Median based Data-sieve: &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;much better&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Extrema&#039;&#039;&#039;&#039;&#039; to trees&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;=&lt;br /&gt;
====One dimensional A====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve introduction|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;What are MSER&#039;s in one dimension?&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====One dimensional B====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve applied to images|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;One dimensional extrema in images&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6922</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6922"/>
		<updated>2014-08-12T18:17:42Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Two twists in the algorithm make it practical */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;800&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
The output depends on the computation kernel the recursive median is one. Others include connected set openings (&#039;o&#039;), closings (&#039;c&#039;) and composites of these &#039;M&#039; (&#039;o&#039; followed by &#039;c&#039; at each stage) or &#039;N&#039; (&#039;c&#039; followed by &#039;o&#039;). These last two yield outputs that are almost indistinguishable from the recursive median. (I have just realised how confusing it is referring to the recursive mean as an &#039;m&#039; sieve, I shall start using the abbreviation &#039;v&#039; as much as possible instead.) This is dull stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 	&lt;br /&gt;
This is dull stuff &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt; compared to something that has been thought about much less, let alone exploited&amp;lt;/span&amp;gt;- &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt;could build entirely new filtering schema exploiting the idempotency property&amp;lt;/span&amp;gt;, here are some [[new filtering schema| ideas.]] They begin to look a little biological.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Two twists in the algorithm make it practical&amp;lt;/span&amp;gt;====&lt;br /&gt;
The implementation is very literal and slow. Each stage is run and re-run to idempotency. I called the filter a data-sieve. The &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;twists in this story &amp;lt;/span&amp;gt;is firstly to switch to &#039;&#039;&#039;&#039;&#039;multiple pass median filters&#039;&#039;&#039;&#039;&#039;(Bangham, 1993)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Properties of a Series of Nested Median Filters, Namely the Data Sieve,&amp;quot; IEEE Trans Sig. Process. Vol. 41. NO. I. Jan 1993&amp;lt;/ref&amp;gt;,  then being excited enough to look for something faster/better: &#039;&#039;&#039;&#039;&#039;&#039;recursive median filters&#039;&#039;&#039;&#039;&#039;&#039;&#039;(Bangham, Chardaire et. al. 1996)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Multiscale nonlinear decomposition: the sieve decomposition theorem&amp;quot; IEEE Trans Pat. Anal. Mach. Intelligence. Vol. 18. NO. 5. Jan 1996&amp;lt;/ref&amp;gt; and &#039;&#039;&#039;&#039;&#039;sieves&#039;&#039;&#039;&#039;&#039;. Each twist was patented. The first was (I think) in 1988. Patents are difficult to produce, and enforce. I was supported in this by Cambridge Consultants Limited (CCL) who had taken over the company. Fantastic engineers but we and the vision community had not (or we had not noticed) at that time appreciated the coming possibilities of SIFT. Scale-invariant feature transform (or SIFT) is an algorithm in computer vision to detect and describe local features in images. The algorithm [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform] was published by David Lowe in 1999.[1]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6921</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6921"/>
		<updated>2014-08-12T15:25:22Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;800&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
The output depends on the computation kernel the recursive median is one. Others include connected set openings (&#039;o&#039;), closings (&#039;c&#039;) and composites of these &#039;M&#039; (&#039;o&#039; followed by &#039;c&#039; at each stage) or &#039;N&#039; (&#039;c&#039; followed by &#039;o&#039;). These last two yield outputs that are almost indistinguishable from the recursive median. (I have just realised how confusing it is referring to the recursive mean as an &#039;m&#039; sieve, I shall start using the abbreviation &#039;v&#039; as much as possible instead.) This is dull stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 	&lt;br /&gt;
This is dull stuff &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt; compared to something that has been thought about much less, let alone exploited&amp;lt;/span&amp;gt;- &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt;could build entirely new filtering schema exploiting the idempotency property&amp;lt;/span&amp;gt;, here are some [[new filtering schema| ideas.]] They begin to look a little biological.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Two twists in the algorithm make it practical&amp;lt;/span&amp;gt;====&lt;br /&gt;
The implementation is very literal and slow. Each stage is run and re-run to idempotency. I called the filter a data-sieve. The &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;twists in this story &amp;lt;/span&amp;gt;is firstly to switch to &#039;&#039;&#039;&#039;&#039;multiple pass median filters&#039;&#039;&#039;&#039;&#039;(Bangham, 1993)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Properties of a Series of Nested Median Filters, Namely the Data Sieve,&amp;quot; IEEE Trans Sig. Process. Vol. 41. NO. I. Jan 1993&amp;lt;/ref&amp;gt;,  then being excited enough to look for something faster/better: &#039;&#039;&#039;&#039;&#039;&#039;recursive median filters&#039;&#039;&#039;&#039;&#039;&#039;&#039;(Bangham, Chardaire et. al. 1996)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Multiscale nonlinear decomposition: the sieve decomposition theorem&amp;quot; IEEE Trans Pat. Anal. Mach. Intelligence. Vol. 18. NO. 5. Jan 1996&amp;lt;/ref&amp;gt; and &#039;&#039;&#039;&#039;&#039;sieves&#039;&#039;&#039;&#039;&#039;. Each twist was patented. The first was (I think) in 1988. Patents are difficult to produce, and enforce. I was supported in this by Cambridge Consultants Limited (CCL) who had taken over the company. Fantastic engineers but the vision community had not (or we had not noticed) at that time appreciated the coming possibilities of SIFT. Scale-invariant feature transform (or SIFT) is an algorithm in computer vision to detect and describe local features in images. The algorithm [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform] was published by David Lowe in 1999.[1]&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6920</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6920"/>
		<updated>2014-08-12T15:21:14Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
The output depends on the computation kernel the recursive median is one. Others include connected set openings (&#039;o&#039;), closings (&#039;c&#039;) and composites of these &#039;M&#039; (&#039;o&#039; followed by &#039;c&#039; at each stage) or &#039;N&#039; (&#039;c&#039; followed by &#039;o&#039;). These last two yield outputs that are almost indistinguishable from the recursive median. (I have just realised how confusing it is referring to the recursive mean as an &#039;m&#039; sieve, I shall start using the abbreviation &#039;v&#039; as much as possible instead.) This is dull stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 	&lt;br /&gt;
This is dull stuff &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt; compared to something that has been thought about much less, let alone exploited&amp;lt;/span&amp;gt;- &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt;could build entirely new filtering schema&amp;lt;/span&amp;gt;, here are some [[new filtering schema| ideas.]] They begin to look a little biological.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Two twists in the algorithm make it practical&amp;lt;/span&amp;gt;====&lt;br /&gt;
The implementation is very literal and slow. Each stage is run and re-run to idempotency. I called the filter a data-sieve. The &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;twists in this story &amp;lt;/span&amp;gt;is firstly to switch to &#039;&#039;&#039;&#039;&#039;multiple pass median filters&#039;&#039;&#039;&#039;&#039;(Bangham, 1993)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Properties of a Series of Nested Median Filters, Namely the Data Sieve,&amp;quot; IEEE Trans Sig. Process. Vol. 41. NO. I. Jan 1993&amp;lt;/ref&amp;gt;,  then being excited enough to look for something faster/better: &#039;&#039;&#039;&#039;&#039;&#039;recursive median filters&#039;&#039;&#039;&#039;&#039;&#039;&#039;(Bangham, Chardaire et. al. 1996)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Multiscale nonlinear decomposition: the sieve decomposition theorem&amp;quot; IEEE Trans Pat. Anal. Mach. Intelligence. Vol. 18. NO. 5. Jan 1996&amp;lt;/ref&amp;gt; and &#039;&#039;&#039;&#039;&#039;sieves&#039;&#039;&#039;&#039;&#039;. Each twist was patented. The first was (I think) in 1988. Patents are difficult to produce, and enforce. I was supported in this by Cambridge Consultants Limited (CCL) who had taken over the company. Fantastic engineers but the vision community had not (or we had not noticed) at that time appreciated the coming possibilities of SIFT. Scale-invariant feature transform (or SIFT) is an algorithm in computer vision to detect and describe local features in images. The algorithm [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform] was published by David Lowe in 1999.[1]&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6919</id>
		<title>Mean and median filters bad</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6919"/>
		<updated>2014-08-12T15:11:50Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: running mean. Stage (scale) 1 window of 3. Stage 2 window of 5 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;BUT it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: running median. Median filters had many followers. It was thought that they preserved the edges in a meaningful way. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 window of 5 on the previous stage and this filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It is tempting to imagine that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;BUT&#039;&#039;&#039;&#039;&#039; no, it all falls apart at larger scales it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
So here is a gripe. When I first sent a paper on all to a reputable journal I wrote just that (&#039;... falls apart ...&#039;) and the paper was all about how to fix it - sieves. The reviewer rejected the paper because &#039;everyone knows that median filters aren&#039;t useful so how could a stack of them be any better&#039;. Well - that&#039;s exactly what the paper was about. Oh well, get over it. Write it more clearly, etc. etc. So here is the paper. The implementation is very literal and slow. Each stage is run and re-run to idempotency. I called the filter a data-sieve. The &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;twists in this story &amp;lt;/span&amp;gt;is firstly to switch to &#039;&#039;&#039;&#039;&#039;multiple pass median filters&#039;&#039;&#039;&#039;&#039;(Bangham, 1993)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Properties of a Series of Nested Median Filters, Namely the Data Sieve,&amp;quot; IEEE Trans Sig. Process. Vol. 41. NO. I. Jan 1993&amp;lt;/ref&amp;gt;,  then being excited enough to look for something faster/better: &#039;&#039;&#039;&#039;&#039;&#039;recursive median filters&#039;&#039;&#039;&#039;&#039;&#039;&#039;(Bangham, Chardaire et. al. 1996)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Multiscale nonlinear decomposition: the sieve decomposition theorem&amp;quot; IEEE Trans Pat. Anal. Mach. Intelligence. Vol. 18. NO. 5. Jan 1996&amp;lt;/ref&amp;gt; and &#039;&#039;&#039;&#039;&#039;sieves&#039;&#039;&#039;&#039;&#039;. Each twist was patented. The first was (I think) in 1988. Patents are difficult to produce, and enforce. I was supported in this by Cambridge Consultants Limited (CCL) who had taken over the company. Fantastic engineers but the vision community had not (or we had not noticed) at that time appreciated the coming possibilities of SIFT. Scale-invariant feature transform (or SIFT) is an algorithm in computer vision to detect and describe local features in images. The algorithm [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform] was published by David Lowe in 1999.[1]&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6918</id>
		<title>Mean and median filters bad</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6918"/>
		<updated>2014-08-07T19:33:16Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: running mean. Stage (scale) 1 window of 3. Stage 2 window of 5 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;BUT it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: running median. Median filters had many followers. It was thought that they preserved the edges in a meaningful way. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 window of 5 on the previous stage and this filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It is tempting to imagine that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;BUT&#039;&#039;&#039;&#039;&#039; no, it all falls apart at larger scales it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
So here is a gripe. When I first sent a paper on all to a reputable journal I wrote just that (&#039;... falls apart ...&#039;) and the paper was all about how to fix it - sieves. The reviewer rejected the paper because &#039;everyone knows that median filters aren&#039;t useful so how could a stack of them be any better&#039;. Well - that&#039;s exactly what the paper was about. Oh well, get over it. Write it more clearly, etc. etc. So here is the paper. The implementation is very literal and slow. Each stage is run and re-run to idempotency. I called the filter a data-sieve. The &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;twists in this story &amp;lt;/span&amp;gt;is firstly to switch to &#039;&#039;&#039;&#039;&#039;multiple pass median filters&#039;&#039;&#039;&#039;&#039;(Bangham, 1993)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Properties of a Series of Nested Median Filters, Namely the Data Sieve,&amp;quot; IEEE Trans Sig. Process. Vol. 41. NO. I. Jan 1993&amp;lt;/ref&amp;gt;,  then being excited enough to look for something faster/better: &#039;&#039;&#039;&#039;&#039;&#039;recursive median filters&#039;&#039;&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;&#039;sieves&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6917</id>
		<title>Mean and median filters bad</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6917"/>
		<updated>2014-08-07T19:30:34Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: running mean. Stage (scale) 1 window of 3. Stage 2 window of 5 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;BUT it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: running median. Median filters had many followers. It was thought that they preserved the edges in a meaningful way. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 window of 5 on the previous stage and this filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It is tempting to imagine that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;BUT&#039;&#039;&#039;&#039;&#039; no, it all falls apart at larger scales it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
So here is a gripe. When I first sent a paper on all to a reputable journal I wrote just that (&#039;... falls apart ...&#039;) and the paper was all about how to fix it - sieves. The reviewer rejected the paper because &#039;everyone knows that median filters aren&#039;t useful so how could a stack of them be any better&#039;. Well - that&#039;s exactly what the paper was about. Oh well, get over it. Write it more clearly, etc. etc. So here is the paper. The implementation is very literal and slow. Each stage is run and re-run to idempotency. I called the filter a data-sieve. The &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;twists in this story &amp;lt;/span&amp;gt;is firstly to switch to &#039;&#039;&#039;&#039;&#039;multiple pass median filters&#039;&#039;&#039;&#039;&#039;(Bangham, 1993)&amp;lt;ref&amp;gt;Bangham, J. Andrew, &amp;quot;Properties of a Series of Nested Median Filters, Namely the Data Sieve,&amp;quot; IEEE Trans Sig. Process. Vol. 41. NO. I. Jan 1993&amp;lt;/ref&amp;gt;,  then being excited enough to look for something faster/better: &#039;&#039;&#039;&#039;&#039;&#039;recursive median filters&#039;&#039;&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;&#039;sieves&#039;&#039;&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6916</id>
		<title>MSER and Sieve Details</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6916"/>
		<updated>2014-08-07T17:21:57Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Could non-linear filter banks (sieves) have evolved in biological systems? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Software]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;What is the connection between MSER&#039;s and sieves&#039;?&amp;lt;/span&amp;gt;==&lt;br /&gt;
The papers by George Matas((Matas, et. al. 2002&amp;lt;ref&amp;gt;Matas, J., M. Urban, O. Chum and T. Pajdla (2002). &#039;&#039;Robust Wide baseline Stereo from Maximally Stable Extremal Regions.&#039;&#039;  BMVC, Cardiff&amp;lt;/ref&amp;gt;))((Matas et al., 2004)&amp;lt;ref&amp;gt;Matas, Jiri, et al. &#039;&#039;Robust wide-baseline stereo from maximally stable extremal regions&#039;&#039;. Image and vision computing 22.10 (2004): 761-767.&amp;lt;/ref&amp;gt;))&lt;br /&gt;
(Mishkin et al., 2013)&amp;lt;ref&amp;gt;Dmytro Mishkin, Michal Perdoch,Jiri Matas (2013) &#039;&#039;Two-view Matching with View Synthesis Revisited&#039;&#039; arXiv preprint arXiv:1306.3855 &amp;lt;/ref&amp;gt;  put together an effective way of finding distinguished regions (DR’s)  namely maximally stable extremal regions (&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;MSER’s&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;) with a powerful way of &#039;&#039;describing&#039;&#039; the regions at multiple scales and &#039;&#039;robustly matching&#039;&#039; such measurements with others in a second image. Since then many authors have confirmed the algorithms as a powerful tool for finding objects in images (review Mikolajczyk et al 2006: &amp;lt;ref&amp;gt;Krystian Mikolajczyk, Tinne Tuytelaars, Cordelia Schmid, Andrew Zisserman, Jiri Matas, Frederik Schaffalitzky, Timor Kadir, L Van Gool, (2006) &#039;&#039;A Comparison of Affine Region Detectors.&#039;&#039;International Journal of Computer Vision. DOI: 10.1007/s11263-005-3848-x&amp;lt;/ref&amp;gt;, Kimmel 2011 &amp;lt;ref&amp;gt;Kimmel, R., Zhang, C., Bronstein, A.M., Bronstein, M. (2011) &#039;&#039;Are MSER features really interesting?&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence 33:2316–2320&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--(This is a &#039;&#039;blast from the past&#039;&#039;. I failed to popularise it at the time, however, &#039;&#039;&#039;MSER&#039;s are now attracting lots of attention&#039;&#039;&#039; so I&#039;m now contributing my bit a little late in the day.) &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--[[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Andrews_Organ_Recital Why the hurry?]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
The algorithm &#039;&#039;&#039;underlying&#039;&#039;&#039; that for finding Maximally stable extremal regions (MSER&#039;s) &#039;&#039;&#039;is an &#039;o&#039; sieve&#039;&#039;&#039;. Such algorithms relate closely to mathematical morphology (dilations-erosion (Jackway et al 1996&amp;lt;ref&amp;gt;P. T. Jackway and M. Deriche. &#039;&#039;Scale-space properties of multiscale morphological dilation-erosion.&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence&lt;br /&gt;
, 18(1):38–51&amp;lt;/ref&amp;gt;) openings, closings and in particular watersheds (Vincent et al 1991 &amp;lt;ref&amp;gt;Vincent, Luc, and Pierre Soille. &amp;quot;Watersheds in digital spaces: an efficient algorithm based on immersion simulations.&amp;quot; IEEE transactions on pattern analysis and machine intelligence 13.6 (1991): 583-598.&amp;lt;/ref&amp;gt;) and reconstruction filters (Salembier, P. et. al. 1995&amp;lt;ref&amp;gt;Salembier P, Serra J (1995). &#039;&#039;Flat zones filtering, connected operators, and filters by reconstruction.&#039;&#039; IEEE Trans Image Process 4:1153&amp;lt;/ref&amp;gt;). In mathematical morphology the &#039;filtering&#039; element of the MSER algorithm might be called a &#039;connected-set opening&#039; (&#039;o&#039; sieve) . It is one of a family of closely related algorithms which for which I coined the term &#039;&#039;&#039;sieves&#039;&#039;&#039;. Why? &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Why call the family of feature finding algorithms &#039;&#039;sieves&#039;&#039; and not &#039;&#039;filters&#039;&#039;?&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
I thought it may be helpful to distinguish between &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;two very different signal simplifying algorithms&#039;&#039;&#039;&amp;lt;/span&amp;gt; both of which preserve scale-space: &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;linear &#039;filters&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;non-linear &#039;sieves&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;. In a linear-filter-bank such as a bank of Gaussian filters the input signal is separated, prism like, into frequency related scale bands (large and small blobs). Like all linear filters they spread outliers such as impulses and sharp edges over many scales. Sieves do not - hence the distinction. Now Gaussian filters have a very attractive property, that it turns out, is shared with sieves ...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filters preserve scale space&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
In the 1980&#039;s-1990&#039;s there were many publications on the properties of Gaussian (diffusion) filters. Key is that they &#039;&#039;preserve&#039;&#039; [http://en.wikipedia.org/wiki/Scale_space scale-space] (Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel ...&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt; To understand what is meant: imagine a photo projected onto a wall using a data projector. Leave it on for an hour. Then turn of the projector. Regions that were illuminated (white) will be warmer than those that were black. Now turn the projector off and turn on an infrared image viewer. Once again the image will be visible (warm and cold regions showing up). However, as we wait heat will diffuse from the warm to cooler regions - the image will become blurred. Heat will never flow to form new extrema. If the thermal conductivity of the surface is uniform and isotropic then there is one simple filter that will produce the same result. A Gaussian blur filter.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we have three panels illustrating one dimensional signals represented in scale space. I have used &#039;heat maps&#039; to represent the signal intensity at each scale.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=====Both Gaussian filters and Sieves preserve scale-space=====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;    3D extrema thumb.gif&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;20%&amp;quot;| &amp;lt;!-- [[Image:IllustrateSIV_1_01_thumb.gif|140px|IllustrateSIV 1 01 thumb]]--&amp;gt;&lt;br /&gt;
|&#039;&#039;&#039;Consider a signal&#039;&#039;&#039;, &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 X=getData(&#039;PULSES3WIDE&#039;)&lt;br /&gt;
 &amp;gt;blue  X=0 5 5 0 0 1 1 4 3 3 2 2 1 2 2 2 1 0 0 0 1 1 0 3 2 0 0 0 6 0 0&lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| The data has minima and maxima of different scales (lengths).  &lt;br /&gt;
|[[Image:IllustrateSIV_1_02.png|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;60%&amp;quot;| [[Image:Siv4 test 5.png|400px|&#039;m&#039; non-linear filter (sieve) compared to Gaussian filter]]&lt;br /&gt;
|[[Image:UpsideDownWitkin.jpg|300px|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Left Panel.&#039;&#039;&#039; Here, a &#039;&#039;&#039;A low-pass&#039;&#039;&#039; siv4.m gradually removes extrema (from the signal shown above) as scale increases from scale 1 to scale 64. The resulting traces are shown as a &#039;heat map&#039; where the signal goes from left to right, bright colours like red are large amplitude, small scale extrema. At each increasing scale (down the map) extrema have been removed. The &#039;m&#039;-sieve preserves scale-space so no new extrema (light regions) are formed as we move to increasing scales. Moreover, the features do not wander about in scale-space. We could say that in one dimension we measure pulse length using a sieve just as we might use a ruler or measuring tape in the physical world. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
([[siv4_test.m code|siv4_test code]] the code generates several Figures - the one above is Fig. 5.)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Superficially it is clear that, by &#039;knocking off&#039; outliers at increasingly large scales, sieves cannot introduce new extrema but to clarify the issue we&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt; formally proved that they do not introduce new extrema, i.e. preserve &#039;&#039;&#039;&#039;&#039;scale-space&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt; (Bangham et al 1996&amp;lt;ref&amp;gt;Bangham, JA, Harvey, RW, Ling, PD and Aldridge, RV (1996) &#039;&#039;Morphological scale-space preserving transforms in many dimensions.&#039;&#039; The Journal of Electronic Imaging (JEI), 5 (3). pp. 283-299.&amp;lt;/ref&amp;gt;Bangham et al 1996b&amp;lt;ref&amp;gt;Bangham, JA, Chardaire, P, Pye, CJ and Ling, PD (1996) &#039;&#039;Multiscale nonlinear decomposition: The sieve decomposition theorem.&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, 18 (5). pp. 529-539. ISSN 0162-8828&amp;lt;/ref&amp;gt;, c.f. the properties of multiscale dilation and erosion, Jackway et al 1996&amp;lt;ref&amp;gt;Jackway, P.T. and Deriche, M. (1996) &#039;&#039;Scale-space properties of the multiscale morphological dilation-erosion&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.18, no.1, pp.38,51&amp;lt;/ref&amp;gt;). Preserving scale-space is one of the &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;important reasons why MSER&#039;s&amp;lt;/span&amp;gt;&#039;&#039;&#039; are so useful for finding interest points worthy of further characterisation as feature points.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Middle Panel&#039;&#039;&#039;. A &#039;&#039;Gaussian&#039;&#039; filter bank also preserves scale-space as shown by Witkin 1986. No new features (local extrema) are formed. However, the features wander about in scale-space.&amp;lt;br&amp;gt;&lt;br /&gt;
(Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel  for Scale-Space Filtering&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Right Panel,&#039;&#039;&#039; Babaud&#039;s original Figure showing heat-map &#039;isotherms&#039;. (Actually, to be consistent with the other Panels I have flipped the image vertically.) The features wander about in scale-space and sharp edged features do not sharply disappear - they are smudged over scale-space.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Small, hot areas (outliers) are smoothed out as are sharp edges.&lt;br /&gt;
*Sieves are the opposite, impulses and regions with sharp edges do not spread over many scales (c.f. mechanical sieves in which particles (granules) either go through holes or they do not [http://en.wikipedia.org/wiki/Mesh_%28scale%29 Particle filters and sieves].)  They do however, spread smooth waveforms over many scales.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
One could consider &amp;lt;span style=&amp;quot;color:navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filter banks and filter banks based on sieves as complementary to each other&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Implementation&#039;&#039;&#039;====&lt;br /&gt;
One dimensional sieves are easily implemented by run-length coding the signal, each extremum has a list of just two neighbours. Indeed, in collaboration with [http://www.cambridgeconsultants.com/ CCL] we implemented the algorithm on a PC board to characterise the output, in real time, from line-scan cameras (often used industrially when, in the early 1990&#039;s, 2D digital camera&#039;s were not easily available). Implementations for images in higher dimensions are similar but keeping track of lists of neighbours is a little more complex, but see Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt; for a cool implementation of the MSER algorithm.&lt;br /&gt;
[[Image:Scan 10.jpeg|350px|right|first hardware implementation of sieve]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Dug up from the past.&#039;&#039;&#039; First hardware implementation of a sieve. Just a few stages.  Later implementations used an application-specific integrated circuit (ASIC). We wanted a full decomposition at speed for the line-scan cameras.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Applications&#039;&#039;&#039; ====&lt;br /&gt;
In addition to their role finding in objects in 2D images we have used sieves to analyse 1, 2 and 3D signals. We started in 1D (digital images were not available at the time). For example analysing protein hydrophobicity plots(Bangham, 1988&amp;lt;ref&amp;gt;Bangham, J.A. (1988) &#039;&#039;Data-sieving hydrophobicity plots. Anal. Biochem&#039;&#039;. 174, 142–145&amp;lt;/ref&amp;gt;) for which it was found by Fasman (1990) &amp;lt;ref&amp;gt;Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&amp;lt;/ref&amp;gt; to &amp;quot;correctly predict the hydrophobic transmembrane regions ...&amp;quot; [[Details on hydrophobicity plots | (see more details)]]. , de-noising single channel current data (Bangham et al, 1984&amp;lt;ref&amp;gt;Bangham, J.A., and T.J.C. Jacob (1984). &#039;&#039;Channel Recognition Using an Online Hardware Filter&#039;&#039; in The Journal of Physiology, (London: Physiological Society), pp. 3–5&amp;lt;/ref&amp;gt;). Much later we used them for texture analysis (Southam et al, 2009&amp;lt;ref&amp;gt;Southam, P., and Harvey, R. (2009). &#039;&#039;Texture classification via morphological scale-space: Tex-Mex features&#039;&#039;. J. Electron. Imaging 18, 043007–043007&amp;lt;/ref&amp;gt;) and lipreading (Matthews et al., 2002&amp;lt;ref&amp;gt;Matthews, I., Cootes, T.F., Bangham, J.A., Cox, S., and Harvey, R. (2002). &#039;&#039;Extraction of visual features for lipreading&#039;&#039;. Pattern Anal. Mach. Intell. Ieee Trans. 24, 198–213&amp;lt;/ref&amp;gt;). In 2D for segmenting images through extremal trees  (c.f. MSER&#039;s) (Bangham et al., 1998&amp;lt;ref&amp;gt;Bangham, J.A., Hidalgo, J.R., Harvey, R., and Cawley, G. (1998). &#039;&#039;The segmentation of images via scale-space trees&#039;&#039;. In Proceedings of British Machine Vision Conference, pp. 33–43&amp;lt;/ref&amp;gt;), maximally stable contours(Lan et al., 2010&amp;lt;ref&amp;gt; Lan, Y., Harvey, R., and Perez Torres, J.R. (2010). &#039;&#039;Finding stable salient contours.&#039;&#039; Image Vis. Comput. 28, 1244–1254&amp;lt;/ref&amp;gt;),  creating painterly pictures from photos (Bangham et al., 2003&amp;lt;ref&amp;gt;Bangham, J.A., Gibson, S.E., and Harvey, R. (2003). &#039;&#039;The art of scale-space&#039;&#039;. In Proc. British Machine Vision Conference, pp. 569–578&amp;lt;/ref&amp;gt;)(Fo2Pix sold about 65,000 licences for our software package: ArtMaster); and in 3D for segmenting volumes in CAT scans.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Could non-linear filter banks (sieves) have evolved in biological systems?&amp;lt;/span&amp;gt;====&lt;br /&gt;
Biological systems are too complex too huge to comprehend without some initial insights. In vision the particular theoretical &#039;torches&#039; that light the experimental findings are the Fourier transform, Gaussian or Gabor filter banks. Is it possible that &amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;we look where those lights are shining and what we find seems to fit that intuition&#039;&#039; &amp;lt;/span&amp;gt;e.g. [http://en.wikipedia.org/wiki/Scale_space#Why_a_Gaussian_filter.3F Gaussian]/[http://en.wikipedia.org/wiki/Gabor_filter Gabor]. &amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;Or perhaps has to fit for want of other &#039;&#039;torches&#039;&#039;&#039;&#039;.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So care is needed. Science should be creative,  we should create a number of torches pointing in different directions (based on different theoretical frameworks where possible) then use experimental evidence to reject those that do not fit. That will leaving us with the best hypothesis - theoretical framework, until it too is rejected. This is just science rhetoric of course. &lt;br /&gt;
&lt;br /&gt;
We now know that sieves (MSER&#039;s) not only exist but offer significant practical advantages over other methods in computer vision. They are an alternative &#039;torch&#039; that might need rejecting. Perhaps we should re-evaluate the biological evidence. Could the brain be understood in terms of sieves? Were this to be the case then it could change what we look for in brain structures. Hardware implementations of sieves are all about connectivity and relative thresholds as are brains, so perhaps it is possible.&lt;br /&gt;
*our hardware implementation of the 1D filter bank was very different to a linear filter bank.&lt;br /&gt;
*Likewise the linear time implementation of the 2D MSER algorithm (Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt;) in which dynamic connectivity is everything.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Exploring this problem would be &#039;&#039;&#039;just the &#039;wild&#039; opportunity that I have enjoyed exploring in my research life&#039;&#039;&#039;. It would be a wild ride whatever the outcome - unfortunately cancer now (June 2014) leaves me out of the game.&amp;lt;span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Summary of basic properties of sieves, linear and non-linear filters?&amp;lt;/span&amp;gt;====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 80%; height: 60px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!  &lt;br /&gt;
! Sieve 1D&lt;br /&gt;
! Sieve 2D&lt;br /&gt;
! Sieve 3D&lt;br /&gt;
! Gaussian 1D&lt;br /&gt;
! Gaussian 2D&lt;br /&gt;
! Median 1D&lt;br /&gt;
! Median 2D&lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Preserve Scale space &lt;br /&gt;
! Yes || Yes || Yes &lt;br /&gt;
|| Yes || Yes || No || No &lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Separate signals by &lt;br /&gt;
! Length|| Area || Volume&lt;br /&gt;
||Pulse Frequency|| Blob Frequency 2D || Roughly Pulse length || Roughly Blob Area &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Limitations?&amp;lt;/span&amp;gt;==&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6915</id>
		<title>MSER and Sieve Details</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6915"/>
		<updated>2014-08-07T17:00:09Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Both Gaussian filters and Sieves preserve scale-space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Software]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;What is the connection between MSER&#039;s and sieves&#039;?&amp;lt;/span&amp;gt;==&lt;br /&gt;
The papers by George Matas((Matas, et. al. 2002&amp;lt;ref&amp;gt;Matas, J., M. Urban, O. Chum and T. Pajdla (2002). &#039;&#039;Robust Wide baseline Stereo from Maximally Stable Extremal Regions.&#039;&#039;  BMVC, Cardiff&amp;lt;/ref&amp;gt;))((Matas et al., 2004)&amp;lt;ref&amp;gt;Matas, Jiri, et al. &#039;&#039;Robust wide-baseline stereo from maximally stable extremal regions&#039;&#039;. Image and vision computing 22.10 (2004): 761-767.&amp;lt;/ref&amp;gt;))&lt;br /&gt;
(Mishkin et al., 2013)&amp;lt;ref&amp;gt;Dmytro Mishkin, Michal Perdoch,Jiri Matas (2013) &#039;&#039;Two-view Matching with View Synthesis Revisited&#039;&#039; arXiv preprint arXiv:1306.3855 &amp;lt;/ref&amp;gt;  put together an effective way of finding distinguished regions (DR’s)  namely maximally stable extremal regions (&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;MSER’s&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;) with a powerful way of &#039;&#039;describing&#039;&#039; the regions at multiple scales and &#039;&#039;robustly matching&#039;&#039; such measurements with others in a second image. Since then many authors have confirmed the algorithms as a powerful tool for finding objects in images (review Mikolajczyk et al 2006: &amp;lt;ref&amp;gt;Krystian Mikolajczyk, Tinne Tuytelaars, Cordelia Schmid, Andrew Zisserman, Jiri Matas, Frederik Schaffalitzky, Timor Kadir, L Van Gool, (2006) &#039;&#039;A Comparison of Affine Region Detectors.&#039;&#039;International Journal of Computer Vision. DOI: 10.1007/s11263-005-3848-x&amp;lt;/ref&amp;gt;, Kimmel 2011 &amp;lt;ref&amp;gt;Kimmel, R., Zhang, C., Bronstein, A.M., Bronstein, M. (2011) &#039;&#039;Are MSER features really interesting?&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence 33:2316–2320&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--(This is a &#039;&#039;blast from the past&#039;&#039;. I failed to popularise it at the time, however, &#039;&#039;&#039;MSER&#039;s are now attracting lots of attention&#039;&#039;&#039; so I&#039;m now contributing my bit a little late in the day.) &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--[[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Andrews_Organ_Recital Why the hurry?]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
The algorithm &#039;&#039;&#039;underlying&#039;&#039;&#039; that for finding Maximally stable extremal regions (MSER&#039;s) &#039;&#039;&#039;is an &#039;o&#039; sieve&#039;&#039;&#039;. Such algorithms relate closely to mathematical morphology (dilations-erosion (Jackway et al 1996&amp;lt;ref&amp;gt;P. T. Jackway and M. Deriche. &#039;&#039;Scale-space properties of multiscale morphological dilation-erosion.&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence&lt;br /&gt;
, 18(1):38–51&amp;lt;/ref&amp;gt;) openings, closings and in particular watersheds (Vincent et al 1991 &amp;lt;ref&amp;gt;Vincent, Luc, and Pierre Soille. &amp;quot;Watersheds in digital spaces: an efficient algorithm based on immersion simulations.&amp;quot; IEEE transactions on pattern analysis and machine intelligence 13.6 (1991): 583-598.&amp;lt;/ref&amp;gt;) and reconstruction filters (Salembier, P. et. al. 1995&amp;lt;ref&amp;gt;Salembier P, Serra J (1995). &#039;&#039;Flat zones filtering, connected operators, and filters by reconstruction.&#039;&#039; IEEE Trans Image Process 4:1153&amp;lt;/ref&amp;gt;). In mathematical morphology the &#039;filtering&#039; element of the MSER algorithm might be called a &#039;connected-set opening&#039; (&#039;o&#039; sieve) . It is one of a family of closely related algorithms which for which I coined the term &#039;&#039;&#039;sieves&#039;&#039;&#039;. Why? &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Why call the family of feature finding algorithms &#039;&#039;sieves&#039;&#039; and not &#039;&#039;filters&#039;&#039;?&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
I thought it may be helpful to distinguish between &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;two very different signal simplifying algorithms&#039;&#039;&#039;&amp;lt;/span&amp;gt; both of which preserve scale-space: &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;linear &#039;filters&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;non-linear &#039;sieves&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;. In a linear-filter-bank such as a bank of Gaussian filters the input signal is separated, prism like, into frequency related scale bands (large and small blobs). Like all linear filters they spread outliers such as impulses and sharp edges over many scales. Sieves do not - hence the distinction. Now Gaussian filters have a very attractive property, that it turns out, is shared with sieves ...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filters preserve scale space&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
In the 1980&#039;s-1990&#039;s there were many publications on the properties of Gaussian (diffusion) filters. Key is that they &#039;&#039;preserve&#039;&#039; [http://en.wikipedia.org/wiki/Scale_space scale-space] (Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel ...&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt; To understand what is meant: imagine a photo projected onto a wall using a data projector. Leave it on for an hour. Then turn of the projector. Regions that were illuminated (white) will be warmer than those that were black. Now turn the projector off and turn on an infrared image viewer. Once again the image will be visible (warm and cold regions showing up). However, as we wait heat will diffuse from the warm to cooler regions - the image will become blurred. Heat will never flow to form new extrema. If the thermal conductivity of the surface is uniform and isotropic then there is one simple filter that will produce the same result. A Gaussian blur filter.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we have three panels illustrating one dimensional signals represented in scale space. I have used &#039;heat maps&#039; to represent the signal intensity at each scale.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=====Both Gaussian filters and Sieves preserve scale-space=====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;    3D extrema thumb.gif&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;20%&amp;quot;| &amp;lt;!-- [[Image:IllustrateSIV_1_01_thumb.gif|140px|IllustrateSIV 1 01 thumb]]--&amp;gt;&lt;br /&gt;
|&#039;&#039;&#039;Consider a signal&#039;&#039;&#039;, &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 X=getData(&#039;PULSES3WIDE&#039;)&lt;br /&gt;
 &amp;gt;blue  X=0 5 5 0 0 1 1 4 3 3 2 2 1 2 2 2 1 0 0 0 1 1 0 3 2 0 0 0 6 0 0&lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| The data has minima and maxima of different scales (lengths).  &lt;br /&gt;
|[[Image:IllustrateSIV_1_02.png|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;60%&amp;quot;| [[Image:Siv4 test 5.png|400px|&#039;m&#039; non-linear filter (sieve) compared to Gaussian filter]]&lt;br /&gt;
|[[Image:UpsideDownWitkin.jpg|300px|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Left Panel.&#039;&#039;&#039; Here, a &#039;&#039;&#039;A low-pass&#039;&#039;&#039; siv4.m gradually removes extrema (from the signal shown above) as scale increases from scale 1 to scale 64. The resulting traces are shown as a &#039;heat map&#039; where the signal goes from left to right, bright colours like red are large amplitude, small scale extrema. At each increasing scale (down the map) extrema have been removed. The &#039;m&#039;-sieve preserves scale-space so no new extrema (light regions) are formed as we move to increasing scales. Moreover, the features do not wander about in scale-space. We could say that in one dimension we measure pulse length using a sieve just as we might use a ruler or measuring tape in the physical world. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
([[siv4_test.m code|siv4_test code]] the code generates several Figures - the one above is Fig. 5.)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Superficially it is clear that, by &#039;knocking off&#039; outliers at increasingly large scales, sieves cannot introduce new extrema but to clarify the issue we&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt; formally proved that they do not introduce new extrema, i.e. preserve &#039;&#039;&#039;&#039;&#039;scale-space&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt; (Bangham et al 1996&amp;lt;ref&amp;gt;Bangham, JA, Harvey, RW, Ling, PD and Aldridge, RV (1996) &#039;&#039;Morphological scale-space preserving transforms in many dimensions.&#039;&#039; The Journal of Electronic Imaging (JEI), 5 (3). pp. 283-299.&amp;lt;/ref&amp;gt;Bangham et al 1996b&amp;lt;ref&amp;gt;Bangham, JA, Chardaire, P, Pye, CJ and Ling, PD (1996) &#039;&#039;Multiscale nonlinear decomposition: The sieve decomposition theorem.&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, 18 (5). pp. 529-539. ISSN 0162-8828&amp;lt;/ref&amp;gt;, c.f. the properties of multiscale dilation and erosion, Jackway et al 1996&amp;lt;ref&amp;gt;Jackway, P.T. and Deriche, M. (1996) &#039;&#039;Scale-space properties of the multiscale morphological dilation-erosion&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.18, no.1, pp.38,51&amp;lt;/ref&amp;gt;). Preserving scale-space is one of the &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;important reasons why MSER&#039;s&amp;lt;/span&amp;gt;&#039;&#039;&#039; are so useful for finding interest points worthy of further characterisation as feature points.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Middle Panel&#039;&#039;&#039;. A &#039;&#039;Gaussian&#039;&#039; filter bank also preserves scale-space as shown by Witkin 1986. No new features (local extrema) are formed. However, the features wander about in scale-space.&amp;lt;br&amp;gt;&lt;br /&gt;
(Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel  for Scale-Space Filtering&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Right Panel,&#039;&#039;&#039; Babaud&#039;s original Figure showing heat-map &#039;isotherms&#039;. (Actually, to be consistent with the other Panels I have flipped the image vertically.) The features wander about in scale-space and sharp edged features do not sharply disappear - they are smudged over scale-space.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Small, hot areas (outliers) are smoothed out as are sharp edges.&lt;br /&gt;
*Sieves are the opposite, impulses and regions with sharp edges do not spread over many scales (c.f. mechanical sieves in which particles (granules) either go through holes or they do not [http://en.wikipedia.org/wiki/Mesh_%28scale%29 Particle filters and sieves].)  They do however, spread smooth waveforms over many scales.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
One could consider &amp;lt;span style=&amp;quot;color:navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filter banks and filter banks based on sieves as complementary to each other&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Implementation&#039;&#039;&#039;====&lt;br /&gt;
One dimensional sieves are easily implemented by run-length coding the signal, each extremum has a list of just two neighbours. Indeed, in collaboration with [http://www.cambridgeconsultants.com/ CCL] we implemented the algorithm on a PC board to characterise the output, in real time, from line-scan cameras (often used industrially when, in the early 1990&#039;s, 2D digital camera&#039;s were not easily available). Implementations for images in higher dimensions are similar but keeping track of lists of neighbours is a little more complex, but see Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt; for a cool implementation of the MSER algorithm.&lt;br /&gt;
[[Image:Scan 10.jpeg|350px|right|first hardware implementation of sieve]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Dug up from the past.&#039;&#039;&#039; First hardware implementation of a sieve. Just a few stages.  Later implementations used an application-specific integrated circuit (ASIC). We wanted a full decomposition at speed for the line-scan cameras.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Applications&#039;&#039;&#039; ====&lt;br /&gt;
In addition to their role finding in objects in 2D images we have used sieves to analyse 1, 2 and 3D signals. We started in 1D (digital images were not available at the time). For example analysing protein hydrophobicity plots(Bangham, 1988&amp;lt;ref&amp;gt;Bangham, J.A. (1988) &#039;&#039;Data-sieving hydrophobicity plots. Anal. Biochem&#039;&#039;. 174, 142–145&amp;lt;/ref&amp;gt;) for which it was found by Fasman (1990) &amp;lt;ref&amp;gt;Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&amp;lt;/ref&amp;gt; to &amp;quot;correctly predict the hydrophobic transmembrane regions ...&amp;quot; [[Details on hydrophobicity plots | (see more details)]]. , de-noising single channel current data (Bangham et al, 1984&amp;lt;ref&amp;gt;Bangham, J.A., and T.J.C. Jacob (1984). &#039;&#039;Channel Recognition Using an Online Hardware Filter&#039;&#039; in The Journal of Physiology, (London: Physiological Society), pp. 3–5&amp;lt;/ref&amp;gt;). Much later we used them for texture analysis (Southam et al, 2009&amp;lt;ref&amp;gt;Southam, P., and Harvey, R. (2009). &#039;&#039;Texture classification via morphological scale-space: Tex-Mex features&#039;&#039;. J. Electron. Imaging 18, 043007–043007&amp;lt;/ref&amp;gt;) and lipreading (Matthews et al., 2002&amp;lt;ref&amp;gt;Matthews, I., Cootes, T.F., Bangham, J.A., Cox, S., and Harvey, R. (2002). &#039;&#039;Extraction of visual features for lipreading&#039;&#039;. Pattern Anal. Mach. Intell. Ieee Trans. 24, 198–213&amp;lt;/ref&amp;gt;). In 2D for segmenting images through extremal trees  (c.f. MSER&#039;s) (Bangham et al., 1998&amp;lt;ref&amp;gt;Bangham, J.A., Hidalgo, J.R., Harvey, R., and Cawley, G. (1998). &#039;&#039;The segmentation of images via scale-space trees&#039;&#039;. In Proceedings of British Machine Vision Conference, pp. 33–43&amp;lt;/ref&amp;gt;), maximally stable contours(Lan et al., 2010&amp;lt;ref&amp;gt; Lan, Y., Harvey, R., and Perez Torres, J.R. (2010). &#039;&#039;Finding stable salient contours.&#039;&#039; Image Vis. Comput. 28, 1244–1254&amp;lt;/ref&amp;gt;),  creating painterly pictures from photos (Bangham et al., 2003&amp;lt;ref&amp;gt;Bangham, J.A., Gibson, S.E., and Harvey, R. (2003). &#039;&#039;The art of scale-space&#039;&#039;. In Proc. British Machine Vision Conference, pp. 569–578&amp;lt;/ref&amp;gt;)(Fo2Pix sold about 65,000 licences for our software package: ArtMaster); and in 3D for segmenting volumes in CAT scans.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Could non-linear filter banks (sieves) have evolved in biological systems?&amp;lt;/span&amp;gt;====&lt;br /&gt;
Biological systems are too complex too huge to comprehend without some initial insights. In vision the particular theoretical &#039;torches&#039; that light the experimental findings are the Fourier transform, Gaussian or Gabor filter banks. &#039;&#039;We look where those lights are shining and what we find seems to fit that intuition&#039;&#039; e.g. [http://en.wikipedia.org/wiki/Scale_space#Why_a_Gaussian_filter.3F Gaussian]/[http://en.wikipedia.org/wiki/Gabor_filter Gabor]. &#039;&#039;Or perhaps has to fit for want of other &#039;&#039;torches&#039;&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So care is needed. Science should be creative,  we should create a number of torches pointing in different directions (based on different theoretical frameworks where possible) then use experimental evidence to reject those that do not fit leaving us with the best hypothesis, theoretical framework, so far. &lt;br /&gt;
&lt;br /&gt;
We now know that sieves (MSER&#039;s) not only exist but offer significant practical advantages over other methods in computer vision. They are an alternative &#039;torch&#039; that might need rejecting. Perhaps we should re-evaluate the biological evidence. Could the brain be understood in terms of sieves? Were this to be the case then it could change what we look for in brain structures. Hardware implementations of sieves are all about connectivity and relative thresholds as are brains, so perhaps it is possible.&lt;br /&gt;
*our hardware implementation of the 1D filter bank was very different to a linear filter bank.&lt;br /&gt;
*Likewise the linear time implementation of the 2D MSER algorithm (Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt;) in which dynamic connectivity is everything.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Exploring this problem would be &#039;&#039;&#039;just the &#039;wild&#039; opportunity that I have enjoyed exploring in my research life&#039;&#039;&#039;. It would be a wild ride whatever the outcome - unfortunately cancer now (June 2014) leaves me out of the game.&amp;lt;span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Summary of basic properties of sieves, linear and non-linear filters?&amp;lt;/span&amp;gt;====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 80%; height: 60px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!  &lt;br /&gt;
! Sieve 1D&lt;br /&gt;
! Sieve 2D&lt;br /&gt;
! Sieve 3D&lt;br /&gt;
! Gaussian 1D&lt;br /&gt;
! Gaussian 2D&lt;br /&gt;
! Median 1D&lt;br /&gt;
! Median 2D&lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Preserve Scale space &lt;br /&gt;
! Yes || Yes || Yes &lt;br /&gt;
|| Yes || Yes || No || No &lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Separate signals by &lt;br /&gt;
! Length|| Area || Volume&lt;br /&gt;
||Pulse Frequency|| Blob Frequency 2D || Roughly Pulse length || Roughly Blob Area &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Limitations?&amp;lt;/span&amp;gt;==&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6914</id>
		<title>Siv4 test.m code</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6914"/>
		<updated>2014-08-07T16:58:17Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MSER_and_Sieve_Details|Return]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code illustrates lots of things to do with 1D sieving of 2D images column by column where the image is rotated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 function siv4_test&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%function siv4_test demonstrate siv4 functionality&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%close all&amp;lt;/span&amp;gt;&lt;br /&gt;
     figNo=0;&lt;br /&gt;
     subplotrows=[];&lt;br /&gt;
     if true&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Simple starting signal and a simplified signal&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Simple starting signal and a simplified signal&#039;);&lt;br /&gt;
         data{1}=siv4_alt(&#039;PULSES3WIDE&#039;);&lt;br /&gt;
         showResult(subplotrows,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(1)),data{1}.y{1} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             );&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Showing increasing simplification by removing small scale pulses&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Showing increasing simplification by removing small scale pulses&#039;);&lt;br /&gt;
         data{1}=siv4_alt(&#039;PULSES3WIDE&#039;,[2;5;10])&lt;br /&gt;
         showResult(4,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(1,1)),data{1}.y{1}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(2,1)),data{1}.y{2}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(3,1)),data{1}.y{3} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             );&lt;br /&gt;
         data{1}&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         figNo=newFig(figNo,&#039;Showing increasing simplification by removing small scale pulses&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         showResult(4,...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             data{1}.name,data{1}.X,...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             sprintf(&#039;1D sieve columnwise scale %d&#039;,data{1}.options(1,1)),data{1}.X-data{1}.y{1}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             sprintf(&#039;1D sieve columnwise scale %d&#039;,data{1}.options(2,1)),data{1}.X-data{1}.y{2}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             sprintf(&#039;1D sieve columnwise scale %d&#039;,data{1}.options(3,1)),data{1}.X-data{1}.y{3} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Dynamic figure showing gradual simplification of signal by removing small scale details&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Dynamic figure showing gradual simplification of signal by removing small scale details&#039;);&lt;br /&gt;
         im=getData(&#039;PULSES3WIDE&#039;);&lt;br /&gt;
         X(:,1)=double(im(:));&lt;br /&gt;
         maxmesh=size(X,1);&lt;br /&gt;
         data{1}=siv4_alt(X(:),maxmesh,&#039;g&#039;);&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     data{1}=siv4_alt(&#039;PULSES3WIDE&#039;,maxmesh,&#039;g&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
         cla&lt;br /&gt;
         shg&lt;br /&gt;
         plot(data{1}.X(:),&#039;o-b&#039;);&lt;br /&gt;
         hold on&lt;br /&gt;
         g=data{1}.g{1};&lt;br /&gt;
         h=[];&lt;br /&gt;
         xlabel(&#039;position&#039;)&lt;br /&gt;
         ylabel(&#039;granule sample value&#039;)&lt;br /&gt;
         title(&#039;Granule values superimposed on data{1}&#039;);&lt;br /&gt;
         for i=2:length(g)&lt;br /&gt;
             if ~isempty(h) &amp;amp;&amp;amp; ishandle(h)&lt;br /&gt;
                 delete(h);&lt;br /&gt;
             end&lt;br /&gt;
             h=plot([g(1,i),g(1,i),g(1,i)+g(2,i),g(1,i)+g(2,i)],[0,g(3,i),g(3,i),0],&#039;-r&#039;);&lt;br /&gt;
             pause(0.1)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Heatmap showing granules in scale-space&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Heatmap showing granules in scale-space&#039;);&lt;br /&gt;
         cla&lt;br /&gt;
         maxHeat=max(g(4,2:end));&lt;br /&gt;
         minHeat=min(g(4,2:end));&lt;br /&gt;
         scales=unique(g(2,2:end));&lt;br /&gt;
         heatmap=zeros([length(X),max(scales)+2]);&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             scale=scales(i);&lt;br /&gt;
             inds=find(g(2,:)==scale);&lt;br /&gt;
             for j=1:length(inds)&lt;br /&gt;
                 start=g(1,inds(j));&lt;br /&gt;
                 finish=start+g(2,inds(j))-1;&lt;br /&gt;
                 heatmap(start:finish,scale)=heatmap(start:finish,scale)+g(4,inds(j))+3;&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         heatmapR=(heatmap&#039;);&lt;br /&gt;
         imagesc(max(heatmapR(:))-heatmapR); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% white background is nice&amp;lt;/span&amp;gt;&lt;br /&gt;
         xlabel(&#039;X&#039;)&lt;br /&gt;
         ylabel(&#039;Scale&#039;);&lt;br /&gt;
         colormap jet&lt;br /&gt;
         title(&#039;Heatmap, colormap jet&#039;)&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Aside: compare sieve filter bank (m-sieve) with Gaussian filter bank&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Aside compare sieve filter bank (m-sieve) with Gaussian filter bank&#039;);&lt;br /&gt;
         clf&lt;br /&gt;
         scales=[0 1 2 4 8 16 32 64];&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             scale=scales(i);&lt;br /&gt;
             if false &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%scale==0&amp;lt;/span&amp;gt;&lt;br /&gt;
                 ys{i}=X;&lt;br /&gt;
                 yg{i}=X;&lt;br /&gt;
             else&lt;br /&gt;
                 ys{i}=siv4_alt(X,scale);&lt;br /&gt;
                 h=fspecial(&#039;Gaussian&#039;,5*(scale+1),scale+0.1);&lt;br /&gt;
                 midInd=round(5*(scale+1)/2);&lt;br /&gt;
                 hh=h(midInd,:);&lt;br /&gt;
                 hh=hh/sum(hh(:));&lt;br /&gt;
                 yg{i}=conv(X&#039;,hh,&#039;same&#039;);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         heatmapS=zeros([length(X),length(scales)]);&lt;br /&gt;
         heatmapG=zeros([length(X),length(scales)]);&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             heatmapS(:,i)=cell2mat(ys{i}.y);&lt;br /&gt;
             heatmapG(:,i)=yg{i}&#039;;&lt;br /&gt;
         end&lt;br /&gt;
         subplot(1,2,1)&lt;br /&gt;
         imagesc(heatmapS&#039;)&lt;br /&gt;
         title(&#039;Sieve decomposition&#039;)&lt;br /&gt;
         str=&#039;&#039;;&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             scale=scales(i);&lt;br /&gt;
             str=[str,num2str(scale),&#039;|&#039;];&lt;br /&gt;
         end&lt;br /&gt;
         set(gca,&#039;Yticklabel&#039;,str)&lt;br /&gt;
         ylabel(&#039;Scale - note logarithmic&#039;);&lt;br /&gt;
         subplot(1,2,2)&lt;br /&gt;
         imagesc(heatmapG&#039;)&lt;br /&gt;
         title(&#039;Gaussian decomposition&#039;)&lt;br /&gt;
         colormap jet&lt;br /&gt;
         set(gca,&#039;Yticklabel&#039;,str)&lt;br /&gt;
         ylabel(&#039;Scale - note logarithmic&#039;);&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Histogram showing number of granules at each position (of various scales)&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Histogram showing number of granules at each position (of various scales)&#039;);&lt;br /&gt;
         clf&lt;br /&gt;
         log_maxmesh=log(maxmesh); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% want ten scale bins&amp;lt;/span&amp;gt;&lt;br /&gt;
         k=10/log_maxmesh;&lt;br /&gt;
         granularities=zeros(size(X,1),ceil(log_maxmesh*k));&lt;br /&gt;
         for i=2:length(g)&lt;br /&gt;
             for j=1:g(2,i)&lt;br /&gt;
                 granularities(g(1,i)+j-1,1+ceil(log(g(2,i))*k))=granularities(g(1,i)+j-1,1+ceil(log(g(2,i))*k))+1;&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         number_granules_at_each_position=sum(granularities,2);&lt;br /&gt;
         [maxnumber,i]=max(number_granules_at_each_position);&lt;br /&gt;
         bar(number_granules_at_each_position);&lt;br /&gt;
         title(sprintf(&#039;A &#039;&#039;stable&#039;&#039; extremum is at position &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d with %d nested granules\n&#039;,i,maxnumber));&amp;lt;/span&amp;gt;&lt;br /&gt;
         xlabel(&#039;position (x)&#039;);&lt;br /&gt;
         ylabel(&#039;number of granules at each position&#039;);&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Two dimensional signal with each column simplified to scale 10&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Two dimensional signal with each column simplified to scale 10&#039;);&lt;br /&gt;
         data{1}=siv4_alt; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% by default this reads in &#039;TestCard5.png&#039; and sets all parameters&amp;lt;/span&amp;gt;&lt;br /&gt;
         showResult(subplotrows,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(1)),data{1}.y{1} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             );&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Image simplified to scale 10 where columns are selected at angles&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Image simplified to scale 10 column by column where the column is rotated&#039;);&lt;br /&gt;
         rotDegrees=[0 27 34 45]; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% degrees from the vertical&amp;lt;/span&amp;gt;&lt;br /&gt;
         for i=1:length(rotDegrees)&lt;br /&gt;
             data{i}=data{1};&lt;br /&gt;
             if i==1&lt;br /&gt;
                 [m,n]=size(data{1}.X);&lt;br /&gt;
                 data{i}.scan=[m,m];&lt;br /&gt;
             else&lt;br /&gt;
                 data{i}.scan=[5-i,1];&lt;br /&gt;
             end&lt;br /&gt;
             data{i}=siv4_alt(data{i}.X,data{i}.options,data{i}.outputs,data{i}.scan);&lt;br /&gt;
             subplot(2,2,i);&lt;br /&gt;
             imshow(uint8(data{i}.y{1}))&lt;br /&gt;
             title(sprintf(&#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d deg. scale %d, scan [%d %d]&#039;,rotDegrees(i),data{i}.options(1),data{i}.scan))&amp;lt;/span&amp;gt;&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Rotate: 1D sieve to scale 10 column by column: rotated back&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Rotate: 1D sieve to scale 10 column by column: rotated back&#039;);&lt;br /&gt;
         rotDegrees=round(linspace(0,180,9)); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% degrees from the vertical&amp;lt;/span&amp;gt;&lt;br /&gt;
         subplot(3,3,1);&lt;br /&gt;
         [~,requiredPlotParams]=EmbedAndImshow(data{1}.X,rotDegrees);&lt;br /&gt;
         subplot(3,3,1);&lt;br /&gt;
         data{9}.y{3}=EmbedAndImshow(uint8(data{1}.X),rotDegrees,requiredPlotParams,true);&lt;br /&gt;
         scaleToShow=data{1}.options(1);&lt;br /&gt;
         for i=1:length(rotDegrees)-1&lt;br /&gt;
             data{i}=data{1};&lt;br /&gt;
             rotDegree=rotDegrees(i);&lt;br /&gt;
             data{i}.X=imrotate(data{1}.X,rotDegree); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% replace with rotated data&amp;lt;/span&amp;gt;&lt;br /&gt;
             data{i}=siv4_alt(data{i}.X,data{i}.options,data{i}.outputs,data{i}.scan);&lt;br /&gt;
             data{i}.y{2}=imrotate(data{i}.y{1},360-rotDegree,&#039;crop&#039;);&lt;br /&gt;
             subplot(3,3,i+1);&lt;br /&gt;
             data{i}.y{3}=EmbedAndImshow(uint8(data{i}.y{2}),rotDegrees,requiredPlotParams,true);&lt;br /&gt;
             title(sprintf(&#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d deg. scale %d, scan [%d %d]&#039;,rotDegrees(i),data{i}.options(1),data{i}.scan))&amp;lt;/span&amp;gt;&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         %%  Image granules from columns&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         figNo=newFig(figNo,&#039;Image granules from columns&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         data{1}=siv4_alt; % by default this reads in &#039;TestCard5.png&#039; and sets all parameters&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         X=data{1}.X;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         imSieved=siv4_alt(X,maxmesh,&#039;g&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         gtemp=cell2mat(imSieved.g);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         g=gtemp(:,2:end); % omitting details on number of granules etc.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         scales=1:8;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         subplot(3,3,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         imagesc(X)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         title(&#039;Test image&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         GRANULESasLINES=true;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         for i=1:length(scales)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             scale=scales(i);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             ind=find(g(2,:)==scale);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             granulesAtScale=g(:,ind);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             subplot(3,3,i+1);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             plotGranulesOnImage(X,granulesAtScale,scale,GRANULESasLINES);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         end&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     else&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Rotated image granules from columns rotated back&amp;lt;/span&amp;gt;&lt;br /&gt;
         verbose=true;&lt;br /&gt;
         viewRotated=true;&lt;br /&gt;
         &lt;br /&gt;
         figNo=newFig(figNo,&#039;Rotated image granules from columns rotated back&#039;);&lt;br /&gt;
         data{1}=siv4_alt; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% by default this reads in &#039;TestCard5.png&#039; and sets all parameters&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%clf&amp;lt;/span&amp;gt;&lt;br /&gt;
         im=uint8(data{1}.X);&lt;br /&gt;
         rotDegrees=round(linspace(0,180,9)); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% degrees from the vertical&amp;lt;/span&amp;gt;&lt;br /&gt;
         scalesToShow=[1,2,4,8,16,32,64];&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%scalesToShow=2;&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%GranFeaturesPerPixel=struct(&amp;lt;/span&amp;gt;&lt;br /&gt;
         for i=1:length(rotDegrees)-1&lt;br /&gt;
             data{i}=data{1};&lt;br /&gt;
             rotDegree=rotDegrees(i);&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Rotate the image&amp;lt;/span&amp;gt;&lt;br /&gt;
             Rotim=imrotate(im,rotDegree,&#039;loose&#039;); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% replace with rotated data&amp;lt;/span&amp;gt;&lt;br /&gt;
             [sievedRotim,gransRotim]=sieveRotated(Rotim,scalesToShow(end));&lt;br /&gt;
             for scale_i=2:length(scalesToShow)&lt;br /&gt;
                 ind=find([gransRotim(2,1:end)]&amp;gt;=scalesToShow(scale_i-1) &amp;amp; ...&lt;br /&gt;
                     [gransRotim(2,1:end)]&amp;lt;scalesToShow(scale_i));&lt;br /&gt;
                 if ~isempty(ind)&lt;br /&gt;
                     temp_gransRotim=[gransRotim(:,1), gransRotim(:,ind)];&lt;br /&gt;
                     scaleToShow=scalesToShow(scale_i);&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                     figure(1); colormap gray&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                     cla; hold off&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                     imagesc(double(Rotim)); hold on;&amp;lt;/span&amp;gt;&lt;br /&gt;
                     title(sprintf(&#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,rotDegree));&amp;lt;/span&amp;gt;&lt;br /&gt;
                     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Rotate the sieved image back&amp;lt;/span&amp;gt;&lt;br /&gt;
                     figure(figNo); colormap gray&lt;br /&gt;
                     cla; hold off&lt;br /&gt;
                     [GransRotBack]=rotate_sieved_image_back(...&lt;br /&gt;
                         im,size(Rotim),rotDegree,temp_gransRotim,...&lt;br /&gt;
                         scaleToShow,verbose,viewRotated,Rotim);&lt;br /&gt;
                     disp(&#039;press a key&#039;)&lt;br /&gt;
                     pause(0.2)&lt;br /&gt;
                 end&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function [sievedRotim,gransRotim]=sieveRotated(Rotim,scaleToShow)&lt;br /&gt;
     filename=sprintf(&#039;sievedData-&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%s.mat&#039;,num2str(scaleToShow));&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     if exist(filename)==2&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         load(filename)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     else&amp;lt;/span&amp;gt;&lt;br /&gt;
         data=siv4_alt(double(Rotim),scaleToShow,&#039;l&#039;); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% rotated and lowpass sieved&amp;lt;/span&amp;gt;&lt;br /&gt;
         sievedRotim=data.y{1};&lt;br /&gt;
         SIVedGData=siv4_alt(double(Rotim),scaleToShow,&#039;g&#039;); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% rotated and sieved to granules&amp;lt;/span&amp;gt;&lt;br /&gt;
         gransRotim=cell2mat(SIVedGData.g);&lt;br /&gt;
         save(filename, &#039;sievedRotim&#039;,&#039;gransRotim&#039;)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     end&amp;lt;/span&amp;gt;&lt;br /&gt;
 end&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 function [GransRotBack]=rotate_sieved_image_back(...&lt;br /&gt;
         im,sizRotim,rotDegree,gransRotim,gran_scale,verbose,viewRotated,Rotim)&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% [RotImBack,GransRotBack]=rotate_sieved_image_back(im,imIn,sizRotim,rotDegree,gransRotim,gran_scale,padding,verbose)&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% RotImBack,  Rotated imIn (back) by 360-rotDegrees&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% GransRotBack, granules computed from the rotated image &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          (gransRotim) are also rotated back (i.e. the first row - &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%           ignoring the first column which means something different)&amp;lt;/span&amp;gt;&lt;br /&gt;
     if nargin&amp;lt;8&lt;br /&gt;
         verbose=true;&lt;br /&gt;
     end&lt;br /&gt;
     if nargin&amp;lt;9&lt;br /&gt;
         viewRotated=true;&lt;br /&gt;
     end&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%RotImBack=imrotate(imIn,360-rotDegree,padding);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     Yin=sizRotim(1);&lt;br /&gt;
     Xin=sizRotim(2);&lt;br /&gt;
     [Yout,Xout]=size(im); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% rotated size&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%[Yout,Xout]=size(RotImBack); % rotated size&amp;lt;/span&amp;gt;&lt;br /&gt;
     if verbose&lt;br /&gt;
         if viewRotated&lt;br /&gt;
             imagesc(double(Rotim)); hold on;&lt;br /&gt;
         else&lt;br /&gt;
             imagesc(double(im)); hold on;&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     GransRotBack.gransRotim=gransRotim;&lt;br /&gt;
     GransRotBack.gransRotim(1,2:end)=0; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% clear the indices - not all will be filled.&amp;lt;/span&amp;gt;&lt;br /&gt;
     gran_scale=min(gran_scale,max(gransRotim(2,2:end)));&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Rotate the granules back&amp;lt;/span&amp;gt;&lt;br /&gt;
     for j=2:size(gransRotim,2)&lt;br /&gt;
         granRotim=gransRotim(:,j);&lt;br /&gt;
         [yyr,xxr]=ind2sub([Yin,Xin],granRotim(1));&lt;br /&gt;
         yyr_start=yyr+0.5*gran_scale;&lt;br /&gt;
         yyr_end=yyr-0.5*gran_scale;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% now rotate these back, start point&amp;lt;/span&amp;gt;&lt;br /&gt;
         backRotDegree=360-rotDegree;&lt;br /&gt;
         xyr=ceil([cosd(backRotDegree),sind(backRotDegree);-sind(backRotDegree),...&lt;br /&gt;
             cosd(backRotDegree)]*[xxr-Xin/2;yyr-Yin/2]+[Xout/2;Yout/2]);&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%xx=min(max(xyr(1),1),Xin);&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%yy=max(min(xyr(2),Yin),1);&amp;lt;/span&amp;gt;&lt;br /&gt;
         xx=min(max(xyr(1),1),Xout);&lt;br /&gt;
         yy=max(min(xyr(2),Yout),1);&lt;br /&gt;
         GransRotBack.gransRotim(1,j)=sub2ind([Yout,Xout],yy,xx);&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% and the end point&amp;lt;/span&amp;gt;&lt;br /&gt;
         yy_start=yy+0.5*gran_scale;&lt;br /&gt;
         yy_start=max(min(yy_start,Yout),1);&lt;br /&gt;
         yy_end=yy-0.5*gran_scale;&lt;br /&gt;
         yy_end=max(min(yy_end,Yout),1);&lt;br /&gt;
         yy_range=ceil(yy_end:yy_start);&lt;br /&gt;
         GransRotBack.indexList{j}=sub2ind([Yout,Xout],yy_range,xx*ones(size(yy_range)));&lt;br /&gt;
         if verbose&lt;br /&gt;
             if viewRotated&lt;br /&gt;
                 title(sprintf(&#039;scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,gran_scale))&amp;lt;/span&amp;gt;&lt;br /&gt;
                 xyer=[xyr(1);xyr(2)-1];&lt;br /&gt;
                 plot([xxr xxr],[yyr_start yyr_end],&#039;-r&#039;);&lt;br /&gt;
                 plot(xxr,yyr,&#039;*r&#039;);&lt;br /&gt;
             else&lt;br /&gt;
                 xyer=[xyr(1);xyr(2)-1];&lt;br /&gt;
                 plot([xx xx],[yy_start yy_end],&#039;-r&#039;);&lt;br /&gt;
                 plot(xx,yy,&#039;*r&#039;);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function [X,Y]=EmbedAndPlot(xy,im,rotDegrees,requiredPlotParams,verbose)&lt;br /&gt;
     if nargin&amp;lt;5&lt;br /&gt;
         verbose=true;&lt;br /&gt;
     end&lt;br /&gt;
     X=xy(1);Y=xy(2);&lt;br /&gt;
     [rows,cols]=size(im);&lt;br /&gt;
     offsetI=floor((requiredPlotParams.rowsMax-rows)/2);&lt;br /&gt;
     offsetJ=floor((requiredPlotParams.colsMax-cols)/2);&lt;br /&gt;
     if size(xy,2)&amp;gt;1&lt;br /&gt;
         X=xy(1,:)+offsetJ+1;&lt;br /&gt;
         Y=xy(2,:)+offsetI-1;&lt;br /&gt;
         if verbose&lt;br /&gt;
             hold on&lt;br /&gt;
             y=repmat(requiredPlotParams.rowsMax,1,size(Y,2))-Y;&lt;br /&gt;
             plot(X,y,&#039;-b&#039;);&lt;br /&gt;
         end&lt;br /&gt;
     else&lt;br /&gt;
         X=xy(1)+offsetJ+1;&lt;br /&gt;
         Y=xy(2)+offsetI-1;&lt;br /&gt;
         if verbose&lt;br /&gt;
             hold on&lt;br /&gt;
             plot(X,requiredPlotParams.rowsMax-Y,&#039;.b&#039;);&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function plotGranulesOnImage(X,granulesAtScale,scale,GRANULESasLINES)&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%subplot(1,2,2)&amp;lt;/span&amp;gt;&lt;br /&gt;
     imagesc(X)&lt;br /&gt;
     title(sprintf(&#039;Scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d column granules&#039;,scale));&amp;lt;/span&amp;gt;&lt;br /&gt;
     hold on&lt;br /&gt;
     colormap gray&lt;br /&gt;
     im=zeros(size(X));&lt;br /&gt;
     for i2=1:length(granulesAtScale)&lt;br /&gt;
         G=granulesAtScale(:,i2);&lt;br /&gt;
         [ii,jj]=ind2sub(size(X),G(1));&lt;br /&gt;
         if GRANULESasLINES&lt;br /&gt;
             if G(4)&amp;gt;0&lt;br /&gt;
                 if scale==1&lt;br /&gt;
                     plot(jj,ii,&#039;*r&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot([jj, jj],[ii ii+scale],&#039;-r&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 end&lt;br /&gt;
             else&lt;br /&gt;
                 if scale==1&lt;br /&gt;
                     plot(jj,ii,&#039;*b&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot([jj, jj],[ii ii+scale],&#039;-b&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 end&lt;br /&gt;
             end&lt;br /&gt;
         else&lt;br /&gt;
             for k=1:scale&lt;br /&gt;
                 if G(4)&amp;gt;0&lt;br /&gt;
                     plot(jj,ii+k-1,&#039;.r&#039;);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot(jj,ii+k-1,&#039;.b&#039;);&lt;br /&gt;
                 end&lt;br /&gt;
                 im(ii:ii+k,jj)=G(4);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     pause(1)&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 function figNo=newFig(figNo,titleString)&lt;br /&gt;
     screensize=get(0,&#039;screensize&#039;);&lt;br /&gt;
     figNo=figNo+1;&lt;br /&gt;
     figure(figNo);&lt;br /&gt;
     pos=get(figNo,&#039;Position&#039;);&lt;br /&gt;
     pos(1)=10+figNo*15;&lt;br /&gt;
     if figNo==1&lt;br /&gt;
         pos(2)=screensize(4)-pos(4)-90*figNo;&lt;br /&gt;
     else&lt;br /&gt;
         pos(2)=screensize(4)-pos(4)-60*figNo;&lt;br /&gt;
     end&lt;br /&gt;
     set(figNo,&#039;position&#039;,pos,&#039;name&#039;,titleString);&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function [tempX,requiredPlotParams]=EmbedAndImshow(X,rotDegrees,requiredPlotParams,verbose)&lt;br /&gt;
     if nargin&amp;lt;4&lt;br /&gt;
         verbose=true;&lt;br /&gt;
     end&lt;br /&gt;
     tempX=X;&lt;br /&gt;
     if nargin&amp;lt;3 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% we are creating params from X&amp;lt;/span&amp;gt;&lt;br /&gt;
         maxEdgeLength=max(size(X));&lt;br /&gt;
         for i=1:length(rotDegrees)-1&lt;br /&gt;
             rotDegree=rotDegrees(i);&lt;br /&gt;
             XR=imrotate(X,rotDegree); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% imshow will then be consistent with padding&amp;lt;/span&amp;gt;&lt;br /&gt;
             sXR=size(XR);&lt;br /&gt;
             if max(sXR(:))&amp;gt;maxEdgeLength&lt;br /&gt;
                 maxEdgeLength=max(sXR);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         requiredPlotParams.ax=[0,maxEdgeLength,0,maxEdgeLength];&lt;br /&gt;
         [requiredPlotParams.rowsX,requiredPlotParams.colsX]=size(X);&lt;br /&gt;
         requiredPlotParams.rowsMax=maxEdgeLength;&lt;br /&gt;
         requiredPlotParams.colsMax=maxEdgeLength;&lt;br /&gt;
     else&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% we are using requiredPlotParams to imshow the image X&amp;lt;/span&amp;gt;&lt;br /&gt;
         tempX=zeros([requiredPlotParams.rowsMax,requiredPlotParams.colsMax]);&lt;br /&gt;
         [rows,cols]=size(X);&lt;br /&gt;
         offsetI=floor((requiredPlotParams.rowsMax-rows)/2);&lt;br /&gt;
         offsetJ=floor((requiredPlotParams.colsMax-cols)/2);&lt;br /&gt;
         tempX(1+offsetI:offsetI+rows,1+offsetJ:offsetJ+cols)=X;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         tempX=zeros([requiredPlotParams.rowsMax,requiredPlotParams.colsMax]);&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         for j=1:cols %requiredPlotParams.cols45-offsetJ-1&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             tempX((offsetI+1:requiredPlotParams.rowsMax-offsetI)&#039;,j+offsetJ)=X(:,j);&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         end&amp;lt;/span&amp;gt;&lt;br /&gt;
         if verbose&lt;br /&gt;
             title(sprintf(&#039;rotated by &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d degrees&#039;,rotDegrees));&amp;lt;/span&amp;gt;&lt;br /&gt;
             imshow(uint8(tempX));&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function showResult(vcols,varargin)&lt;br /&gt;
     if ~isempty(vcols)&lt;br /&gt;
         vrows=1;&lt;br /&gt;
         k=1;&lt;br /&gt;
         for j=1:vcols&lt;br /&gt;
             subplot(vrows,vcols,k)&lt;br /&gt;
             result=varargin{k*2};&lt;br /&gt;
             if k==1&lt;br /&gt;
                 signal=result;&lt;br /&gt;
             end&lt;br /&gt;
             if any(size(result)==1) &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% then it is 1D&amp;lt;/span&amp;gt;&lt;br /&gt;
                 plot(result,&#039;o-b&#039;);&lt;br /&gt;
                 hold on&lt;br /&gt;
                 plot(signal,&#039;:b&#039;);&lt;br /&gt;
                 hold off&lt;br /&gt;
             else&lt;br /&gt;
                 imshow(uint8(result))&lt;br /&gt;
             end&lt;br /&gt;
             title(varargin{k*2-1});&lt;br /&gt;
             k=k+1;&lt;br /&gt;
         end&lt;br /&gt;
     else&lt;br /&gt;
         v_elements=numel(varargin)/2;&lt;br /&gt;
         vrows=floor(sqrt(v_elements));&lt;br /&gt;
         vcols=ceil(v_elements/vrows);&lt;br /&gt;
         k=1;&lt;br /&gt;
         for i=1:vrows&lt;br /&gt;
             for j=1:vcols&lt;br /&gt;
                 subplot(vrows,vcols,k)&lt;br /&gt;
                 result=varargin{k*2};&lt;br /&gt;
                 if k==1&lt;br /&gt;
                     signal=result;&lt;br /&gt;
                 end&lt;br /&gt;
                 if any(size(result)==1) &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% then it is 1D&amp;lt;/span&amp;gt;&lt;br /&gt;
                     plot(result,&#039;o-b&#039;);&lt;br /&gt;
                     hold on&lt;br /&gt;
                     plot(signal,&#039;:b&#039;);&lt;br /&gt;
                     hold off&lt;br /&gt;
                 else&lt;br /&gt;
                     imshow(uint8(result))&lt;br /&gt;
                 end&lt;br /&gt;
                 title(varargin{k*2-1});&lt;br /&gt;
                 k=k+1;&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6913</id>
		<title>Siv4 test.m code</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6913"/>
		<updated>2014-08-07T16:55:59Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: Created page with &amp;quot;Return&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;   function siv4_test      &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%function siv4_test demonstrate siv4 functionality&amp;lt;/span&amp;gt;      &amp;lt;span style=&amp;quot;colo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MSER_and_Sieve_Details|Return]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 function siv4_test&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%function siv4_test demonstrate siv4 functionality&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%close all&amp;lt;/span&amp;gt;&lt;br /&gt;
     figNo=0;&lt;br /&gt;
     subplotrows=[];&lt;br /&gt;
     if true&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Simple starting signal and a simplified signal&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Simple starting signal and a simplified signal&#039;);&lt;br /&gt;
         data{1}=siv4_alt(&#039;PULSES3WIDE&#039;);&lt;br /&gt;
         showResult(subplotrows,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(1)),data{1}.y{1} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             );&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Showing increasing simplification by removing small scale pulses&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Showing increasing simplification by removing small scale pulses&#039;);&lt;br /&gt;
         data{1}=siv4_alt(&#039;PULSES3WIDE&#039;,[2;5;10])&lt;br /&gt;
         showResult(4,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(1,1)),data{1}.y{1}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(2,1)),data{1}.y{2}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(3,1)),data{1}.y{3} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             );&lt;br /&gt;
         data{1}&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         figNo=newFig(figNo,&#039;Showing increasing simplification by removing small scale pulses&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         showResult(4,...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             data{1}.name,data{1}.X,...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             sprintf(&#039;1D sieve columnwise scale %d&#039;,data{1}.options(1,1)),data{1}.X-data{1}.y{1}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             sprintf(&#039;1D sieve columnwise scale %d&#039;,data{1}.options(2,1)),data{1}.X-data{1}.y{2}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             sprintf(&#039;1D sieve columnwise scale %d&#039;,data{1}.options(3,1)),data{1}.X-data{1}.y{3} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Dynamic figure showing gradual simplification of signal by removing small scale details&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Dynamic figure showing gradual simplification of signal by removing small scale details&#039;);&lt;br /&gt;
         im=getData(&#039;PULSES3WIDE&#039;);&lt;br /&gt;
         X(:,1)=double(im(:));&lt;br /&gt;
         maxmesh=size(X,1);&lt;br /&gt;
         data{1}=siv4_alt(X(:),maxmesh,&#039;g&#039;);&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     data{1}=siv4_alt(&#039;PULSES3WIDE&#039;,maxmesh,&#039;g&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
         cla&lt;br /&gt;
         shg&lt;br /&gt;
         plot(data{1}.X(:),&#039;o-b&#039;);&lt;br /&gt;
         hold on&lt;br /&gt;
         g=data{1}.g{1};&lt;br /&gt;
         h=[];&lt;br /&gt;
         xlabel(&#039;position&#039;)&lt;br /&gt;
         ylabel(&#039;granule sample value&#039;)&lt;br /&gt;
         title(&#039;Granule values superimposed on data{1}&#039;);&lt;br /&gt;
         for i=2:length(g)&lt;br /&gt;
             if ~isempty(h) &amp;amp;&amp;amp; ishandle(h)&lt;br /&gt;
                 delete(h);&lt;br /&gt;
             end&lt;br /&gt;
             h=plot([g(1,i),g(1,i),g(1,i)+g(2,i),g(1,i)+g(2,i)],[0,g(3,i),g(3,i),0],&#039;-r&#039;);&lt;br /&gt;
             pause(0.1)&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Heatmap showing granules in scale-space&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Heatmap showing granules in scale-space&#039;);&lt;br /&gt;
         cla&lt;br /&gt;
         maxHeat=max(g(4,2:end));&lt;br /&gt;
         minHeat=min(g(4,2:end));&lt;br /&gt;
         scales=unique(g(2,2:end));&lt;br /&gt;
         heatmap=zeros([length(X),max(scales)+2]);&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             scale=scales(i);&lt;br /&gt;
             inds=find(g(2,:)==scale);&lt;br /&gt;
             for j=1:length(inds)&lt;br /&gt;
                 start=g(1,inds(j));&lt;br /&gt;
                 finish=start+g(2,inds(j))-1;&lt;br /&gt;
                 heatmap(start:finish,scale)=heatmap(start:finish,scale)+g(4,inds(j))+3;&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         heatmapR=(heatmap&#039;);&lt;br /&gt;
         imagesc(max(heatmapR(:))-heatmapR); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% white background is nice&amp;lt;/span&amp;gt;&lt;br /&gt;
         xlabel(&#039;X&#039;)&lt;br /&gt;
         ylabel(&#039;Scale&#039;);&lt;br /&gt;
         colormap jet&lt;br /&gt;
         title(&#039;Heatmap, colormap jet&#039;)&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%% Aside: compare sieve filter bank (m-sieve) with Gaussian filter bank&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Aside compare sieve filter bank (m-sieve) with Gaussian filter bank&#039;);&lt;br /&gt;
         clf&lt;br /&gt;
         scales=[0 1 2 4 8 16 32 64];&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             scale=scales(i);&lt;br /&gt;
             if false &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%scale==0&amp;lt;/span&amp;gt;&lt;br /&gt;
                 ys{i}=X;&lt;br /&gt;
                 yg{i}=X;&lt;br /&gt;
             else&lt;br /&gt;
                 ys{i}=siv4_alt(X,scale);&lt;br /&gt;
                 h=fspecial(&#039;Gaussian&#039;,5*(scale+1),scale+0.1);&lt;br /&gt;
                 midInd=round(5*(scale+1)/2);&lt;br /&gt;
                 hh=h(midInd,:);&lt;br /&gt;
                 hh=hh/sum(hh(:));&lt;br /&gt;
                 yg{i}=conv(X&#039;,hh,&#039;same&#039;);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         heatmapS=zeros([length(X),length(scales)]);&lt;br /&gt;
         heatmapG=zeros([length(X),length(scales)]);&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             heatmapS(:,i)=cell2mat(ys{i}.y);&lt;br /&gt;
             heatmapG(:,i)=yg{i}&#039;;&lt;br /&gt;
         end&lt;br /&gt;
         subplot(1,2,1)&lt;br /&gt;
         imagesc(heatmapS&#039;)&lt;br /&gt;
         title(&#039;Sieve decomposition&#039;)&lt;br /&gt;
         str=&#039;&#039;;&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             scale=scales(i);&lt;br /&gt;
             str=[str,num2str(scale),&#039;|&#039;];&lt;br /&gt;
         end&lt;br /&gt;
         set(gca,&#039;Yticklabel&#039;,str)&lt;br /&gt;
         ylabel(&#039;Scale - note logarithmic&#039;);&lt;br /&gt;
         subplot(1,2,2)&lt;br /&gt;
         imagesc(heatmapG&#039;)&lt;br /&gt;
         title(&#039;Gaussian decomposition&#039;)&lt;br /&gt;
         colormap jet&lt;br /&gt;
         set(gca,&#039;Yticklabel&#039;,str)&lt;br /&gt;
         ylabel(&#039;Scale - note logarithmic&#039;);&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Histogram showing number of granules at each position (of various scales)&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Histogram showing number of granules at each position (of various scales)&#039;);&lt;br /&gt;
         clf&lt;br /&gt;
         log_maxmesh=log(maxmesh); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% want ten scale bins&amp;lt;/span&amp;gt;&lt;br /&gt;
         k=10/log_maxmesh;&lt;br /&gt;
         granularities=zeros(size(X,1),ceil(log_maxmesh*k));&lt;br /&gt;
         for i=2:length(g)&lt;br /&gt;
             for j=1:g(2,i)&lt;br /&gt;
                 granularities(g(1,i)+j-1,1+ceil(log(g(2,i))*k))=granularities(g(1,i)+j-1,1+ceil(log(g(2,i))*k))+1;&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         number_granules_at_each_position=sum(granularities,2);&lt;br /&gt;
         [maxnumber,i]=max(number_granules_at_each_position);&lt;br /&gt;
         bar(number_granules_at_each_position);&lt;br /&gt;
         title(sprintf(&#039;A &#039;&#039;stable&#039;&#039; extremum is at position &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d with %d nested granules\n&#039;,i,maxnumber));&amp;lt;/span&amp;gt;&lt;br /&gt;
         xlabel(&#039;position (x)&#039;);&lt;br /&gt;
         ylabel(&#039;number of granules at each position&#039;);&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Two dimensional signal with each column simplified to scale 10&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Two dimensional signal with each column simplified to scale 10&#039;);&lt;br /&gt;
         data{1}=siv4_alt; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% by default this reads in &#039;TestCard5.png&#039; and sets all parameters&amp;lt;/span&amp;gt;&lt;br /&gt;
         showResult(subplotrows,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,data{1}.options(1)),data{1}.y{1} ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             );&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Image simplified to scale 10 where columns are selected at angles&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Image simplified to scale 10 column by column where the column is rotated&#039;);&lt;br /&gt;
         rotDegrees=[0 27 34 45]; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% degrees from the vertical&amp;lt;/span&amp;gt;&lt;br /&gt;
         for i=1:length(rotDegrees)&lt;br /&gt;
             data{i}=data{1};&lt;br /&gt;
             if i==1&lt;br /&gt;
                 [m,n]=size(data{1}.X);&lt;br /&gt;
                 data{i}.scan=[m,m];&lt;br /&gt;
             else&lt;br /&gt;
                 data{i}.scan=[5-i,1];&lt;br /&gt;
             end&lt;br /&gt;
             data{i}=siv4_alt(data{i}.X,data{i}.options,data{i}.outputs,data{i}.scan);&lt;br /&gt;
             subplot(2,2,i);&lt;br /&gt;
             imshow(uint8(data{i}.y{1}))&lt;br /&gt;
             title(sprintf(&#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d deg. scale %d, scan [%d %d]&#039;,rotDegrees(i),data{i}.options(1),data{i}.scan))&amp;lt;/span&amp;gt;&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Rotate: 1D sieve to scale 10 column by column: rotated back&amp;lt;/span&amp;gt;&lt;br /&gt;
         figNo=newFig(figNo,&#039;Rotate: 1D sieve to scale 10 column by column: rotated back&#039;);&lt;br /&gt;
         rotDegrees=round(linspace(0,180,9)); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% degrees from the vertical&amp;lt;/span&amp;gt;&lt;br /&gt;
         subplot(3,3,1);&lt;br /&gt;
         [~,requiredPlotParams]=EmbedAndImshow(data{1}.X,rotDegrees);&lt;br /&gt;
         subplot(3,3,1);&lt;br /&gt;
         data{9}.y{3}=EmbedAndImshow(uint8(data{1}.X),rotDegrees,requiredPlotParams,true);&lt;br /&gt;
         scaleToShow=data{1}.options(1);&lt;br /&gt;
         for i=1:length(rotDegrees)-1&lt;br /&gt;
             data{i}=data{1};&lt;br /&gt;
             rotDegree=rotDegrees(i);&lt;br /&gt;
             data{i}.X=imrotate(data{1}.X,rotDegree); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% replace with rotated data&amp;lt;/span&amp;gt;&lt;br /&gt;
             data{i}=siv4_alt(data{i}.X,data{i}.options,data{i}.outputs,data{i}.scan);&lt;br /&gt;
             data{i}.y{2}=imrotate(data{i}.y{1},360-rotDegree,&#039;crop&#039;);&lt;br /&gt;
             subplot(3,3,i+1);&lt;br /&gt;
             data{i}.y{3}=EmbedAndImshow(uint8(data{i}.y{2}),rotDegrees,requiredPlotParams,true);&lt;br /&gt;
             title(sprintf(&#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d deg. scale %d, scan [%d %d]&#039;,rotDegrees(i),data{i}.options(1),data{i}.scan))&amp;lt;/span&amp;gt;&lt;br /&gt;
         end&lt;br /&gt;
         &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         %%  Image granules from columns&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         figNo=newFig(figNo,&#039;Image granules from columns&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         data{1}=siv4_alt; % by default this reads in &#039;TestCard5.png&#039; and sets all parameters&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         X=data{1}.X;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         imSieved=siv4_alt(X,maxmesh,&#039;g&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         gtemp=cell2mat(imSieved.g);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         g=gtemp(:,2:end); % omitting details on number of granules etc.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         scales=1:8;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         subplot(3,3,1)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         imagesc(X)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         title(&#039;Test image&#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         GRANULESasLINES=true;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         for i=1:length(scales)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             scale=scales(i);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             ind=find(g(2,:)==scale);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             granulesAtScale=g(:,ind);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             subplot(3,3,i+1);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             plotGranulesOnImage(X,granulesAtScale,scale,GRANULESasLINES);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         end&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     else&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%  Rotated image granules from columns rotated back&amp;lt;/span&amp;gt;&lt;br /&gt;
         verbose=true;&lt;br /&gt;
         viewRotated=true;&lt;br /&gt;
         &lt;br /&gt;
         figNo=newFig(figNo,&#039;Rotated image granules from columns rotated back&#039;);&lt;br /&gt;
         data{1}=siv4_alt; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% by default this reads in &#039;TestCard5.png&#039; and sets all parameters&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%clf&amp;lt;/span&amp;gt;&lt;br /&gt;
         im=uint8(data{1}.X);&lt;br /&gt;
         rotDegrees=round(linspace(0,180,9)); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% degrees from the vertical&amp;lt;/span&amp;gt;&lt;br /&gt;
         scalesToShow=[1,2,4,8,16,32,64];&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%scalesToShow=2;&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%GranFeaturesPerPixel=struct(&amp;lt;/span&amp;gt;&lt;br /&gt;
         for i=1:length(rotDegrees)-1&lt;br /&gt;
             data{i}=data{1};&lt;br /&gt;
             rotDegree=rotDegrees(i);&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Rotate the image&amp;lt;/span&amp;gt;&lt;br /&gt;
             Rotim=imrotate(im,rotDegree,&#039;loose&#039;); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% replace with rotated data&amp;lt;/span&amp;gt;&lt;br /&gt;
             [sievedRotim,gransRotim]=sieveRotated(Rotim,scalesToShow(end));&lt;br /&gt;
             for scale_i=2:length(scalesToShow)&lt;br /&gt;
                 ind=find([gransRotim(2,1:end)]&amp;gt;=scalesToShow(scale_i-1) &amp;amp; ...&lt;br /&gt;
                     [gransRotim(2,1:end)]&amp;lt;scalesToShow(scale_i));&lt;br /&gt;
                 if ~isempty(ind)&lt;br /&gt;
                     temp_gransRotim=[gransRotim(:,1), gransRotim(:,ind)];&lt;br /&gt;
                     scaleToShow=scalesToShow(scale_i);&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                     figure(1); colormap gray&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                     cla; hold off&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                     imagesc(double(Rotim)); hold on;&amp;lt;/span&amp;gt;&lt;br /&gt;
                     title(sprintf(&#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,rotDegree));&amp;lt;/span&amp;gt;&lt;br /&gt;
                     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Rotate the sieved image back&amp;lt;/span&amp;gt;&lt;br /&gt;
                     figure(figNo); colormap gray&lt;br /&gt;
                     cla; hold off&lt;br /&gt;
                     [GransRotBack]=rotate_sieved_image_back(...&lt;br /&gt;
                         im,size(Rotim),rotDegree,temp_gransRotim,...&lt;br /&gt;
                         scaleToShow,verbose,viewRotated,Rotim);&lt;br /&gt;
                     disp(&#039;press a key&#039;)&lt;br /&gt;
                     pause(0.2)&lt;br /&gt;
                 end&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function [sievedRotim,gransRotim]=sieveRotated(Rotim,scaleToShow)&lt;br /&gt;
     filename=sprintf(&#039;sievedData-&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%s.mat&#039;,num2str(scaleToShow));&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     if exist(filename)==2&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         load(filename)&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     else&amp;lt;/span&amp;gt;&lt;br /&gt;
         data=siv4_alt(double(Rotim),scaleToShow,&#039;l&#039;); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% rotated and lowpass sieved&amp;lt;/span&amp;gt;&lt;br /&gt;
         sievedRotim=data.y{1};&lt;br /&gt;
         SIVedGData=siv4_alt(double(Rotim),scaleToShow,&#039;g&#039;); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% rotated and sieved to granules&amp;lt;/span&amp;gt;&lt;br /&gt;
         gransRotim=cell2mat(SIVedGData.g);&lt;br /&gt;
         save(filename, &#039;sievedRotim&#039;,&#039;gransRotim&#039;)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     end&amp;lt;/span&amp;gt;&lt;br /&gt;
 end&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 function [GransRotBack]=rotate_sieved_image_back(...&lt;br /&gt;
         im,sizRotim,rotDegree,gransRotim,gran_scale,verbose,viewRotated,Rotim)&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% [RotImBack,GransRotBack]=rotate_sieved_image_back(im,imIn,sizRotim,rotDegree,gransRotim,gran_scale,padding,verbose)&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% RotImBack,  Rotated imIn (back) by 360-rotDegrees&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% GransRotBack, granules computed from the rotated image &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          (gransRotim) are also rotated back (i.e. the first row - &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%           ignoring the first column which means something different)&amp;lt;/span&amp;gt;&lt;br /&gt;
     if nargin&amp;lt;8&lt;br /&gt;
         verbose=true;&lt;br /&gt;
     end&lt;br /&gt;
     if nargin&amp;lt;9&lt;br /&gt;
         viewRotated=true;&lt;br /&gt;
     end&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%RotImBack=imrotate(imIn,360-rotDegree,padding);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     Yin=sizRotim(1);&lt;br /&gt;
     Xin=sizRotim(2);&lt;br /&gt;
     [Yout,Xout]=size(im); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% rotated size&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%[Yout,Xout]=size(RotImBack); % rotated size&amp;lt;/span&amp;gt;&lt;br /&gt;
     if verbose&lt;br /&gt;
         if viewRotated&lt;br /&gt;
             imagesc(double(Rotim)); hold on;&lt;br /&gt;
         else&lt;br /&gt;
             imagesc(double(im)); hold on;&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     GransRotBack.gransRotim=gransRotim;&lt;br /&gt;
     GransRotBack.gransRotim(1,2:end)=0; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% clear the indices - not all will be filled.&amp;lt;/span&amp;gt;&lt;br /&gt;
     gran_scale=min(gran_scale,max(gransRotim(2,2:end)));&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Rotate the granules back&amp;lt;/span&amp;gt;&lt;br /&gt;
     for j=2:size(gransRotim,2)&lt;br /&gt;
         granRotim=gransRotim(:,j);&lt;br /&gt;
         [yyr,xxr]=ind2sub([Yin,Xin],granRotim(1));&lt;br /&gt;
         yyr_start=yyr+0.5*gran_scale;&lt;br /&gt;
         yyr_end=yyr-0.5*gran_scale;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% now rotate these back, start point&amp;lt;/span&amp;gt;&lt;br /&gt;
         backRotDegree=360-rotDegree;&lt;br /&gt;
         xyr=ceil([cosd(backRotDegree),sind(backRotDegree);-sind(backRotDegree),...&lt;br /&gt;
             cosd(backRotDegree)]*[xxr-Xin/2;yyr-Yin/2]+[Xout/2;Yout/2]);&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%xx=min(max(xyr(1),1),Xin);&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%yy=max(min(xyr(2),Yin),1);&amp;lt;/span&amp;gt;&lt;br /&gt;
         xx=min(max(xyr(1),1),Xout);&lt;br /&gt;
         yy=max(min(xyr(2),Yout),1);&lt;br /&gt;
         GransRotBack.gransRotim(1,j)=sub2ind([Yout,Xout],yy,xx);&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% and the end point&amp;lt;/span&amp;gt;&lt;br /&gt;
         yy_start=yy+0.5*gran_scale;&lt;br /&gt;
         yy_start=max(min(yy_start,Yout),1);&lt;br /&gt;
         yy_end=yy-0.5*gran_scale;&lt;br /&gt;
         yy_end=max(min(yy_end,Yout),1);&lt;br /&gt;
         yy_range=ceil(yy_end:yy_start);&lt;br /&gt;
         GransRotBack.indexList{j}=sub2ind([Yout,Xout],yy_range,xx*ones(size(yy_range)));&lt;br /&gt;
         if verbose&lt;br /&gt;
             if viewRotated&lt;br /&gt;
                 title(sprintf(&#039;scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&#039;,gran_scale))&amp;lt;/span&amp;gt;&lt;br /&gt;
                 xyer=[xyr(1);xyr(2)-1];&lt;br /&gt;
                 plot([xxr xxr],[yyr_start yyr_end],&#039;-r&#039;);&lt;br /&gt;
                 plot(xxr,yyr,&#039;*r&#039;);&lt;br /&gt;
             else&lt;br /&gt;
                 xyer=[xyr(1);xyr(2)-1];&lt;br /&gt;
                 plot([xx xx],[yy_start yy_end],&#039;-r&#039;);&lt;br /&gt;
                 plot(xx,yy,&#039;*r&#039;);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function [X,Y]=EmbedAndPlot(xy,im,rotDegrees,requiredPlotParams,verbose)&lt;br /&gt;
     if nargin&amp;lt;5&lt;br /&gt;
         verbose=true;&lt;br /&gt;
     end&lt;br /&gt;
     X=xy(1);Y=xy(2);&lt;br /&gt;
     [rows,cols]=size(im);&lt;br /&gt;
     offsetI=floor((requiredPlotParams.rowsMax-rows)/2);&lt;br /&gt;
     offsetJ=floor((requiredPlotParams.colsMax-cols)/2);&lt;br /&gt;
     if size(xy,2)&amp;gt;1&lt;br /&gt;
         X=xy(1,:)+offsetJ+1;&lt;br /&gt;
         Y=xy(2,:)+offsetI-1;&lt;br /&gt;
         if verbose&lt;br /&gt;
             hold on&lt;br /&gt;
             y=repmat(requiredPlotParams.rowsMax,1,size(Y,2))-Y;&lt;br /&gt;
             plot(X,y,&#039;-b&#039;);&lt;br /&gt;
         end&lt;br /&gt;
     else&lt;br /&gt;
         X=xy(1)+offsetJ+1;&lt;br /&gt;
         Y=xy(2)+offsetI-1;&lt;br /&gt;
         if verbose&lt;br /&gt;
             hold on&lt;br /&gt;
             plot(X,requiredPlotParams.rowsMax-Y,&#039;.b&#039;);&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function plotGranulesOnImage(X,granulesAtScale,scale,GRANULESasLINES)&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%subplot(1,2,2)&amp;lt;/span&amp;gt;&lt;br /&gt;
     imagesc(X)&lt;br /&gt;
     title(sprintf(&#039;Scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d column granules&#039;,scale));&amp;lt;/span&amp;gt;&lt;br /&gt;
     hold on&lt;br /&gt;
     colormap gray&lt;br /&gt;
     im=zeros(size(X));&lt;br /&gt;
     for i2=1:length(granulesAtScale)&lt;br /&gt;
         G=granulesAtScale(:,i2);&lt;br /&gt;
         [ii,jj]=ind2sub(size(X),G(1));&lt;br /&gt;
         if GRANULESasLINES&lt;br /&gt;
             if G(4)&amp;gt;0&lt;br /&gt;
                 if scale==1&lt;br /&gt;
                     plot(jj,ii,&#039;*r&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot([jj, jj],[ii ii+scale],&#039;-r&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 end&lt;br /&gt;
             else&lt;br /&gt;
                 if scale==1&lt;br /&gt;
                     plot(jj,ii,&#039;*b&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot([jj, jj],[ii ii+scale],&#039;-b&#039;,&#039;linewidth&#039;,2);&lt;br /&gt;
                 end&lt;br /&gt;
             end&lt;br /&gt;
         else&lt;br /&gt;
             for k=1:scale&lt;br /&gt;
                 if G(4)&amp;gt;0&lt;br /&gt;
                     plot(jj,ii+k-1,&#039;.r&#039;);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot(jj,ii+k-1,&#039;.b&#039;);&lt;br /&gt;
                 end&lt;br /&gt;
                 im(ii:ii+k,jj)=G(4);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     pause(1)&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 function figNo=newFig(figNo,titleString)&lt;br /&gt;
     screensize=get(0,&#039;screensize&#039;);&lt;br /&gt;
     figNo=figNo+1;&lt;br /&gt;
     figure(figNo);&lt;br /&gt;
     pos=get(figNo,&#039;Position&#039;);&lt;br /&gt;
     pos(1)=10+figNo*15;&lt;br /&gt;
     if figNo==1&lt;br /&gt;
         pos(2)=screensize(4)-pos(4)-90*figNo;&lt;br /&gt;
     else&lt;br /&gt;
         pos(2)=screensize(4)-pos(4)-60*figNo;&lt;br /&gt;
     end&lt;br /&gt;
     set(figNo,&#039;position&#039;,pos,&#039;name&#039;,titleString);&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function [tempX,requiredPlotParams]=EmbedAndImshow(X,rotDegrees,requiredPlotParams,verbose)&lt;br /&gt;
     if nargin&amp;lt;4&lt;br /&gt;
         verbose=true;&lt;br /&gt;
     end&lt;br /&gt;
     tempX=X;&lt;br /&gt;
     if nargin&amp;lt;3 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% we are creating params from X&amp;lt;/span&amp;gt;&lt;br /&gt;
         maxEdgeLength=max(size(X));&lt;br /&gt;
         for i=1:length(rotDegrees)-1&lt;br /&gt;
             rotDegree=rotDegrees(i);&lt;br /&gt;
             XR=imrotate(X,rotDegree); &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% imshow will then be consistent with padding&amp;lt;/span&amp;gt;&lt;br /&gt;
             sXR=size(XR);&lt;br /&gt;
             if max(sXR(:))&amp;gt;maxEdgeLength&lt;br /&gt;
                 maxEdgeLength=max(sXR);&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
         requiredPlotParams.ax=[0,maxEdgeLength,0,maxEdgeLength];&lt;br /&gt;
         [requiredPlotParams.rowsX,requiredPlotParams.colsX]=size(X);&lt;br /&gt;
         requiredPlotParams.rowsMax=maxEdgeLength;&lt;br /&gt;
         requiredPlotParams.colsMax=maxEdgeLength;&lt;br /&gt;
     else&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% we are using requiredPlotParams to imshow the image X&amp;lt;/span&amp;gt;&lt;br /&gt;
         tempX=zeros([requiredPlotParams.rowsMax,requiredPlotParams.colsMax]);&lt;br /&gt;
         [rows,cols]=size(X);&lt;br /&gt;
         offsetI=floor((requiredPlotParams.rowsMax-rows)/2);&lt;br /&gt;
         offsetJ=floor((requiredPlotParams.colsMax-cols)/2);&lt;br /&gt;
         tempX(1+offsetI:offsetI+rows,1+offsetJ:offsetJ+cols)=X;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         tempX=zeros([requiredPlotParams.rowsMax,requiredPlotParams.colsMax]);&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         for j=1:cols %requiredPlotParams.cols45-offsetJ-1&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             tempX((offsetI+1:requiredPlotParams.rowsMax-offsetI)&#039;,j+offsetJ)=X(:,j);&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         end&amp;lt;/span&amp;gt;&lt;br /&gt;
         if verbose&lt;br /&gt;
             title(sprintf(&#039;rotated by &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d degrees&#039;,rotDegrees));&amp;lt;/span&amp;gt;&lt;br /&gt;
             imshow(uint8(tempX));&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%&amp;lt;/span&amp;gt;&lt;br /&gt;
 function showResult(vcols,varargin)&lt;br /&gt;
     if ~isempty(vcols)&lt;br /&gt;
         vrows=1;&lt;br /&gt;
         k=1;&lt;br /&gt;
         for j=1:vcols&lt;br /&gt;
             subplot(vrows,vcols,k)&lt;br /&gt;
             result=varargin{k*2};&lt;br /&gt;
             if k==1&lt;br /&gt;
                 signal=result;&lt;br /&gt;
             end&lt;br /&gt;
             if any(size(result)==1) &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% then it is 1D&amp;lt;/span&amp;gt;&lt;br /&gt;
                 plot(result,&#039;o-b&#039;);&lt;br /&gt;
                 hold on&lt;br /&gt;
                 plot(signal,&#039;:b&#039;);&lt;br /&gt;
                 hold off&lt;br /&gt;
             else&lt;br /&gt;
                 imshow(uint8(result))&lt;br /&gt;
             end&lt;br /&gt;
             title(varargin{k*2-1});&lt;br /&gt;
             k=k+1;&lt;br /&gt;
         end&lt;br /&gt;
     else&lt;br /&gt;
         v_elements=numel(varargin)/2;&lt;br /&gt;
         vrows=floor(sqrt(v_elements));&lt;br /&gt;
         vcols=ceil(v_elements/vrows);&lt;br /&gt;
         k=1;&lt;br /&gt;
         for i=1:vrows&lt;br /&gt;
             for j=1:vcols&lt;br /&gt;
                 subplot(vrows,vcols,k)&lt;br /&gt;
                 result=varargin{k*2};&lt;br /&gt;
                 if k==1&lt;br /&gt;
                     signal=result;&lt;br /&gt;
                 end&lt;br /&gt;
                 if any(size(result)==1) &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% then it is 1D&amp;lt;/span&amp;gt;&lt;br /&gt;
                     plot(result,&#039;o-b&#039;);&lt;br /&gt;
                     hold on&lt;br /&gt;
                     plot(signal,&#039;:b&#039;);&lt;br /&gt;
                     hold off&lt;br /&gt;
                 else&lt;br /&gt;
                     imshow(uint8(result))&lt;br /&gt;
                 end&lt;br /&gt;
                 title(varargin{k*2-1});&lt;br /&gt;
                 k=k+1;&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6912</id>
		<title>MSER and Sieve Details</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6912"/>
		<updated>2014-08-07T15:53:36Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Both Gaussian filters and Sieves preserve scale-space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Software]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;What is the connection between MSER&#039;s and sieves&#039;?&amp;lt;/span&amp;gt;==&lt;br /&gt;
The papers by George Matas((Matas, et. al. 2002&amp;lt;ref&amp;gt;Matas, J., M. Urban, O. Chum and T. Pajdla (2002). &#039;&#039;Robust Wide baseline Stereo from Maximally Stable Extremal Regions.&#039;&#039;  BMVC, Cardiff&amp;lt;/ref&amp;gt;))((Matas et al., 2004)&amp;lt;ref&amp;gt;Matas, Jiri, et al. &#039;&#039;Robust wide-baseline stereo from maximally stable extremal regions&#039;&#039;. Image and vision computing 22.10 (2004): 761-767.&amp;lt;/ref&amp;gt;))&lt;br /&gt;
(Mishkin et al., 2013)&amp;lt;ref&amp;gt;Dmytro Mishkin, Michal Perdoch,Jiri Matas (2013) &#039;&#039;Two-view Matching with View Synthesis Revisited&#039;&#039; arXiv preprint arXiv:1306.3855 &amp;lt;/ref&amp;gt;  put together an effective way of finding distinguished regions (DR’s)  namely maximally stable extremal regions (&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;MSER’s&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;) with a powerful way of &#039;&#039;describing&#039;&#039; the regions at multiple scales and &#039;&#039;robustly matching&#039;&#039; such measurements with others in a second image. Since then many authors have confirmed the algorithms as a powerful tool for finding objects in images (review Mikolajczyk et al 2006: &amp;lt;ref&amp;gt;Krystian Mikolajczyk, Tinne Tuytelaars, Cordelia Schmid, Andrew Zisserman, Jiri Matas, Frederik Schaffalitzky, Timor Kadir, L Van Gool, (2006) &#039;&#039;A Comparison of Affine Region Detectors.&#039;&#039;International Journal of Computer Vision. DOI: 10.1007/s11263-005-3848-x&amp;lt;/ref&amp;gt;, Kimmel 2011 &amp;lt;ref&amp;gt;Kimmel, R., Zhang, C., Bronstein, A.M., Bronstein, M. (2011) &#039;&#039;Are MSER features really interesting?&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence 33:2316–2320&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--(This is a &#039;&#039;blast from the past&#039;&#039;. I failed to popularise it at the time, however, &#039;&#039;&#039;MSER&#039;s are now attracting lots of attention&#039;&#039;&#039; so I&#039;m now contributing my bit a little late in the day.) &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--[[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Andrews_Organ_Recital Why the hurry?]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
The algorithm &#039;&#039;&#039;underlying&#039;&#039;&#039; that for finding Maximally stable extremal regions (MSER&#039;s) &#039;&#039;&#039;is an &#039;o&#039; sieve&#039;&#039;&#039;. Such algorithms relate closely to mathematical morphology (dilations-erosion (Jackway et al 1996&amp;lt;ref&amp;gt;P. T. Jackway and M. Deriche. &#039;&#039;Scale-space properties of multiscale morphological dilation-erosion.&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence&lt;br /&gt;
, 18(1):38–51&amp;lt;/ref&amp;gt;) openings, closings and in particular watersheds (Vincent et al 1991 &amp;lt;ref&amp;gt;Vincent, Luc, and Pierre Soille. &amp;quot;Watersheds in digital spaces: an efficient algorithm based on immersion simulations.&amp;quot; IEEE transactions on pattern analysis and machine intelligence 13.6 (1991): 583-598.&amp;lt;/ref&amp;gt;) and reconstruction filters (Salembier, P. et. al. 1995&amp;lt;ref&amp;gt;Salembier P, Serra J (1995). &#039;&#039;Flat zones filtering, connected operators, and filters by reconstruction.&#039;&#039; IEEE Trans Image Process 4:1153&amp;lt;/ref&amp;gt;). In mathematical morphology the &#039;filtering&#039; element of the MSER algorithm might be called a &#039;connected-set opening&#039; (&#039;o&#039; sieve) . It is one of a family of closely related algorithms which for which I coined the term &#039;&#039;&#039;sieves&#039;&#039;&#039;. Why? &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Why call the family of feature finding algorithms &#039;&#039;sieves&#039;&#039; and not &#039;&#039;filters&#039;&#039;?&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
I thought it may be helpful to distinguish between &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;two very different signal simplifying algorithms&#039;&#039;&#039;&amp;lt;/span&amp;gt; both of which preserve scale-space: &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;linear &#039;filters&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;non-linear &#039;sieves&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;. In a linear-filter-bank such as a bank of Gaussian filters the input signal is separated, prism like, into frequency related scale bands (large and small blobs). Like all linear filters they spread outliers such as impulses and sharp edges over many scales. Sieves do not - hence the distinction. Now Gaussian filters have a very attractive property, that it turns out, is shared with sieves ...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filters preserve scale space&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
In the 1980&#039;s-1990&#039;s there were many publications on the properties of Gaussian (diffusion) filters. Key is that they &#039;&#039;preserve&#039;&#039; [http://en.wikipedia.org/wiki/Scale_space scale-space] (Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel ...&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt; To understand what is meant: imagine a photo projected onto a wall using a data projector. Leave it on for an hour. Then turn of the projector. Regions that were illuminated (white) will be warmer than those that were black. Now turn the projector off and turn on an infrared image viewer. Once again the image will be visible (warm and cold regions showing up). However, as we wait heat will diffuse from the warm to cooler regions - the image will become blurred. Heat will never flow to form new extrema. If the thermal conductivity of the surface is uniform and isotropic then there is one simple filter that will produce the same result. A Gaussian blur filter.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we have three panels illustrating one dimensional signals represented in scale space. I have used &#039;heat maps&#039; to represent the signal intensity at each scale.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=====Both Gaussian filters and Sieves preserve scale-space=====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;    3D extrema thumb.gif&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;20%&amp;quot;| &amp;lt;!-- [[Image:IllustrateSIV_1_01_thumb.gif|140px|IllustrateSIV 1 01 thumb]]--&amp;gt;&lt;br /&gt;
|&#039;&#039;&#039;Consider a signal&#039;&#039;&#039;, &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 X=getData(&#039;PULSES3WIDE&#039;)&lt;br /&gt;
 &amp;gt;blue  X=0 5 5 0 0 1 1 4 3 3 2 2 1 2 2 2 1 0 0 0 1 1 0 3 2 0 0 0 6 0 0&lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| The data has minima and maxima of different scales (lengths).  &lt;br /&gt;
|[[Image:IllustrateSIV_1_02.png|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;60%&amp;quot;| [[Image:Siv4 test 5.png|400px|&#039;m&#039; non-linear filter (sieve) compared to Gaussian filter]]&lt;br /&gt;
|[[Image:UpsideDownWitkin.jpg|300px|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Left Panel.&#039;&#039;&#039; Here, a &#039;&#039;&#039;A low-pass&#039;&#039;&#039; siv4.m gradually removes extrema (from the signal shown above) as scale increases from scale 1 to scale 64. The resulting traces are shown as a &#039;heat map&#039; where the signal goes from left to right, bright colours like red are large amplitude, small scale extrema. At each increasing scale (down the map) extrema have been removed. The &#039;m&#039;-sieve preserves scale-space so no new extrema (light regions) are formed as we move to increasing scales. Moreover, the features do not wander about in scale-space. We could say that in one dimension we measure pulse length using a sieve just as we might use a ruler or measuring tape in the physical world. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[siv4_test.m code|siv4_test code]] Fig. 5&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Superficially it is clear that, by &#039;knocking off&#039; outliers at increasingly large scales, sieves cannot introduce new extrema but to clarify the issue we&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt; formally proved that they do not introduce new extrema, i.e. preserve &#039;&#039;&#039;&#039;&#039;scale-space&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt; (Bangham et al 1996&amp;lt;ref&amp;gt;Bangham, JA, Harvey, RW, Ling, PD and Aldridge, RV (1996) &#039;&#039;Morphological scale-space preserving transforms in many dimensions.&#039;&#039; The Journal of Electronic Imaging (JEI), 5 (3). pp. 283-299.&amp;lt;/ref&amp;gt;Bangham et al 1996b&amp;lt;ref&amp;gt;Bangham, JA, Chardaire, P, Pye, CJ and Ling, PD (1996) &#039;&#039;Multiscale nonlinear decomposition: The sieve decomposition theorem.&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, 18 (5). pp. 529-539. ISSN 0162-8828&amp;lt;/ref&amp;gt;, c.f. the properties of multiscale dilation and erosion, Jackway et al 1996&amp;lt;ref&amp;gt;Jackway, P.T. and Deriche, M. (1996) &#039;&#039;Scale-space properties of the multiscale morphological dilation-erosion&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.18, no.1, pp.38,51&amp;lt;/ref&amp;gt;). Preserving scale-space is one of the &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;important reasons why MSER&#039;s&amp;lt;/span&amp;gt;&#039;&#039;&#039; are so useful for finding interest points worthy of further characterisation as feature points.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Middle Panel&#039;&#039;&#039;. A &#039;&#039;Gaussian&#039;&#039; filter bank also preserves scale-space as shown by Witkin 1986. No new features (local extrema) are formed. However, the features wander about in scale-space.&amp;lt;br&amp;gt;&lt;br /&gt;
(Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel  for Scale-Space Filtering&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Right Panel,&#039;&#039;&#039; Babaud&#039;s original Figure showing heat-map &#039;isotherms&#039;. (Actually, to be consistent with the other Panels I have flipped the image vertically.) The features wander about in scale-space and sharp edged features do not sharply disappear - they are smudged over scale-space.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Small, hot areas (outliers) are smoothed out as are sharp edges.&lt;br /&gt;
*Sieves are the opposite, impulses and regions with sharp edges do not spread over many scales (c.f. mechanical sieves in which particles (granules) either go through holes or they do not [http://en.wikipedia.org/wiki/Mesh_%28scale%29 Particle filters and sieves].)  They do however, spread smooth waveforms over many scales.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
One could consider &amp;lt;span style=&amp;quot;color:navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filter banks and filter banks based on sieves as complementary to each other&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Implementation&#039;&#039;&#039;====&lt;br /&gt;
One dimensional sieves are easily implemented by run-length coding the signal, each extremum has a list of just two neighbours. Indeed, in collaboration with [http://www.cambridgeconsultants.com/ CCL] we implemented the algorithm on a PC board to characterise the output, in real time, from line-scan cameras (often used industrially when, in the early 1990&#039;s, 2D digital camera&#039;s were not easily available). Implementations for images in higher dimensions are similar but keeping track of lists of neighbours is a little more complex, but see Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt; for a cool implementation of the MSER algorithm.&lt;br /&gt;
[[Image:Scan 10.jpeg|350px|right|first hardware implementation of sieve]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Dug up from the past.&#039;&#039;&#039; First hardware implementation of a sieve. Just a few stages.  Later implementations used an application-specific integrated circuit (ASIC). We wanted a full decomposition at speed for the line-scan cameras.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Applications&#039;&#039;&#039; ====&lt;br /&gt;
In addition to their role finding in objects in 2D images we have used sieves to analyse 1, 2 and 3D signals. We started in 1D (digital images were not available at the time). For example analysing protein hydrophobicity plots(Bangham, 1988&amp;lt;ref&amp;gt;Bangham, J.A. (1988) &#039;&#039;Data-sieving hydrophobicity plots. Anal. Biochem&#039;&#039;. 174, 142–145&amp;lt;/ref&amp;gt;) for which it was found by Fasman (1990) &amp;lt;ref&amp;gt;Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&amp;lt;/ref&amp;gt; to &amp;quot;correctly predict the hydrophobic transmembrane regions ...&amp;quot; [[Details on hydrophobicity plots | (see more details)]]. , de-noising single channel current data (Bangham et al, 1984&amp;lt;ref&amp;gt;Bangham, J.A., and T.J.C. Jacob (1984). &#039;&#039;Channel Recognition Using an Online Hardware Filter&#039;&#039; in The Journal of Physiology, (London: Physiological Society), pp. 3–5&amp;lt;/ref&amp;gt;). Much later we used them for texture analysis (Southam et al, 2009&amp;lt;ref&amp;gt;Southam, P., and Harvey, R. (2009). &#039;&#039;Texture classification via morphological scale-space: Tex-Mex features&#039;&#039;. J. Electron. Imaging 18, 043007–043007&amp;lt;/ref&amp;gt;) and lipreading (Matthews et al., 2002&amp;lt;ref&amp;gt;Matthews, I., Cootes, T.F., Bangham, J.A., Cox, S., and Harvey, R. (2002). &#039;&#039;Extraction of visual features for lipreading&#039;&#039;. Pattern Anal. Mach. Intell. Ieee Trans. 24, 198–213&amp;lt;/ref&amp;gt;). In 2D for segmenting images through extremal trees  (c.f. MSER&#039;s) (Bangham et al., 1998&amp;lt;ref&amp;gt;Bangham, J.A., Hidalgo, J.R., Harvey, R., and Cawley, G. (1998). &#039;&#039;The segmentation of images via scale-space trees&#039;&#039;. In Proceedings of British Machine Vision Conference, pp. 33–43&amp;lt;/ref&amp;gt;), maximally stable contours(Lan et al., 2010&amp;lt;ref&amp;gt; Lan, Y., Harvey, R., and Perez Torres, J.R. (2010). &#039;&#039;Finding stable salient contours.&#039;&#039; Image Vis. Comput. 28, 1244–1254&amp;lt;/ref&amp;gt;),  creating painterly pictures from photos (Bangham et al., 2003&amp;lt;ref&amp;gt;Bangham, J.A., Gibson, S.E., and Harvey, R. (2003). &#039;&#039;The art of scale-space&#039;&#039;. In Proc. British Machine Vision Conference, pp. 569–578&amp;lt;/ref&amp;gt;)(Fo2Pix sold about 65,000 licences for our software package: ArtMaster); and in 3D for segmenting volumes in CAT scans.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Could non-linear filter banks (sieves) have evolved in biological systems?&amp;lt;/span&amp;gt;====&lt;br /&gt;
Biological systems are too complex too huge to comprehend without some initial insights. In vision the particular theoretical &#039;torches&#039; that light the experimental findings are the Fourier transform, Gaussian or Gabor filter banks. &#039;&#039;We look where those lights are shining and what we find seems to fit that intuition&#039;&#039; e.g. [http://en.wikipedia.org/wiki/Scale_space#Why_a_Gaussian_filter.3F Gaussian]/[http://en.wikipedia.org/wiki/Gabor_filter Gabor]. &#039;&#039;Or perhaps has to fit for want of other &#039;&#039;torches&#039;&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So care is needed. Science should be creative,  we should create a number of torches pointing in different directions (based on different theoretical frameworks where possible) then use experimental evidence to reject those that do not fit leaving us with the best hypothesis, theoretical framework, so far. &lt;br /&gt;
&lt;br /&gt;
We now know that sieves (MSER&#039;s) not only exist but offer significant practical advantages over other methods in computer vision. They are an alternative &#039;torch&#039; that might need rejecting. Perhaps we should re-evaluate the biological evidence. Could the brain be understood in terms of sieves? Were this to be the case then it could change what we look for in brain structures. Hardware implementations of sieves are all about connectivity and relative thresholds as are brains, so perhaps it is possible.&lt;br /&gt;
*our hardware implementation of the 1D filter bank was very different to a linear filter bank.&lt;br /&gt;
*Likewise the linear time implementation of the 2D MSER algorithm (Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt;) in which dynamic connectivity is everything.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Exploring this problem would be &#039;&#039;&#039;just the &#039;wild&#039; opportunity that I have enjoyed exploring in my research life&#039;&#039;&#039;. It would be a wild ride whatever the outcome - unfortunately cancer now (June 2014) leaves me out of the game.&amp;lt;span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Summary of basic properties of sieves, linear and non-linear filters?&amp;lt;/span&amp;gt;====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 80%; height: 60px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!  &lt;br /&gt;
! Sieve 1D&lt;br /&gt;
! Sieve 2D&lt;br /&gt;
! Sieve 3D&lt;br /&gt;
! Gaussian 1D&lt;br /&gt;
! Gaussian 2D&lt;br /&gt;
! Median 1D&lt;br /&gt;
! Median 2D&lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Preserve Scale space &lt;br /&gt;
! Yes || Yes || Yes &lt;br /&gt;
|| Yes || Yes || No || No &lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Separate signals by &lt;br /&gt;
! Length|| Area || Volume&lt;br /&gt;
||Pulse Frequency|| Blob Frequency 2D || Roughly Pulse length || Roughly Blob Area &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Limitations?&amp;lt;/span&amp;gt;==&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6911</id>
		<title>Types of 1D sieve</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6911"/>
		<updated>2014-08-07T15:39:57Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Summary of outputs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Sieve stuff]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Types of 1D sieve=&lt;br /&gt;
====Summary of outputs====&lt;br /&gt;
We understand MSER&#039;s to be based on opening (&#039;o&#039;) and closing (&#039;c&#039;) sieves. At each scale &#039;&#039;either&#039;&#039; the minima (&#039;o&#039;) or the maxima (&#039;c&#039;) of that scale are removed. The output therefore &#039;floats&#039; along the bottom or the top of the data. In the following Figure they are shown in red and cyan. They bracket the data. Subtracting output from each scale from the previous one yields the maxima or minima for each scale, some of which may be selected as &#039;&#039;interest points.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
[[Image:Quick compare different sieves in 1D.png|700px]] Top: our standard signal to which &#039;&#039;randn&#039;&#039; noise has been added to help us distinguish the different outputs. Bottom: all sieves are to scale 5. &#039;o&#039; and &#039;c&#039; (red, cyan) remove minima and maxima and so &#039;float&#039; along the top and bottom of the data. &#039;M&#039; and &#039;N&#039; have compound operators (&#039;o&#039; then &#039;c&#039; and &#039;c&#039; then &#039;o&#039;). They do a better job of outputting some sort of representation of the underlying signal. &#039;v&#039; (elsewhere named lowercase &#039;m&#039;) is also a compound operator - this time applying &#039;o&#039; and &#039;c&#039; at random. The result (black) appears to be the best at representing the underlying signal (at scale 5 - this also applies to all scales. The output lies between outputs from &#039;M&#039; and &#039;N&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The idea that we can remove the max and minima at random at a particular scale and still get what appears to be the best representation of the underlying signal might prove to be &#039;magic&#039; when we explore new filtering schema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Which is best?====&lt;br /&gt;
For segmenting images we have found &#039;v&#039; sieves to be the best  - indeed for most things we have tried. We have not tried finding interest points - particularly in 1D.&lt;br /&gt;
====[[quickCompareSieves|quickCompareSieves]];====&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6910</id>
		<title>Types of 1D sieve</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6910"/>
		<updated>2014-08-07T15:36:41Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Summary of outputs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Sieve stuff]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Types of 1D sieve=&lt;br /&gt;
====Summary of outputs====&lt;br /&gt;
We understand MSER&#039;s to be based on opening (&#039;o&#039;) and closing (&#039;c&#039;) sieves. At each scale &#039;&#039;either&#039;&#039; the minima (&#039;o&#039;) or the maxima (&#039;c&#039;) of that scale are removed. The output therefore &#039;floats&#039; along the bottom or the top of the data. In the following Figure they are shown in red and cyan. They bracket the data. Subtracting output from each scale from the previous one yields the maxima or minima for each scale, some of which may be selected as &#039;&#039;interest points.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
[[Image:Quick compare different sieves in 1D.png|700px]] Top: our standard signal to which &#039;&#039;randn&#039;&#039; noise has been added to help us distinguish the different outputs. Bottom: all sieves are to scale 5. &#039;o&#039; and &#039;c&#039; (red, cyan) remove minima and maxima and so &#039;float&#039; along the top and bottom of the data. &#039;M&#039; and &#039;N&#039; have compound operators (&#039;o&#039; then &#039;c&#039; and &#039;c&#039; then &#039;o&#039;). They do a better job of outputting some sort of representation of the underlying signal. &#039;v&#039; (elsewhere named lowercase &#039;m&#039;) is also a compound operator - this time applying &#039;o&#039; and &#039;c&#039; at random. The result (black) appears to be the best at representing the underlying signal (at scale 5 - this also applies to all scales.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Which is best?====&lt;br /&gt;
For segmenting images we have found &#039;v&#039; sieves to be the best  - indeed for most things we have tried. We have not tried finding interest points - particularly in 1D.&lt;br /&gt;
====[[quickCompareSieves|quickCompareSieves]];====&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=QuickCompareSieves&amp;diff=6909</id>
		<title>QuickCompareSieves</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=QuickCompareSieves&amp;diff=6909"/>
		<updated>2014-08-07T15:34:08Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Types of 1D sieve|Return]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function quickCompareSieves(X, scale, types )&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%quickCompareSieves(X, scale )&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%X, data&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%scale, scale at which different sieves will be compared&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%types, &#039;o&#039; etc.&amp;lt;/span&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     if nargin&amp;lt;1&lt;br /&gt;
         X=[1 1 1 1 10 1 1 1 1 2 2 1 1 1 1 1 5 5 5 5 5 1 1 1 5 5 5 5 1 1 1 1 1];&lt;br /&gt;
     end&lt;br /&gt;
     if nargin&amp;lt;2&lt;br /&gt;
         scale=5;&lt;br /&gt;
     end&lt;br /&gt;
     if nargin&amp;lt;3&lt;br /&gt;
         types={&#039;o&#039;,&#039;c&#039;,&#039;m&#039;,&#039;n&#039;,&#039;v&#039;};&lt;br /&gt;
     end&lt;br /&gt;
     X=X+randn(size(X))*0.1*max(X(:));&lt;br /&gt;
     subplot(2,1,1);cla&lt;br /&gt;
     plot(X)&lt;br /&gt;
     title(&#039;X&#039;)&lt;br /&gt;
     colours=&#039;rmbck&#039;;&lt;br /&gt;
     for i=1:length(types)&lt;br /&gt;
         type=types{i};&lt;br /&gt;
         subplot(2,1,2)&lt;br /&gt;
         y=siv1_alt(X,scale,type);&lt;br /&gt;
         if i==1&lt;br /&gt;
             cla&lt;br /&gt;
             plot(X,&#039;ok&#039;)&lt;br /&gt;
             hold on&lt;br /&gt;
         end&lt;br /&gt;
         plot(y,&#039;-&#039;,&#039;color&#039;,colours(i));&lt;br /&gt;
     end&lt;br /&gt;
     title(sprintf(&#039;scale=&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d &#039;&#039;o&#039;&#039;&#039;&#039;c&#039;&#039;(red,magenta)&#039;&#039;m&#039;&#039;&#039;&#039;n&#039;&#039;(blue, cyan),&#039;&#039;v&#039;&#039; (black)&#039;,scale));&amp;lt;/span&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=QuickCompareSieves&amp;diff=6908</id>
		<title>QuickCompareSieves</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=QuickCompareSieves&amp;diff=6908"/>
		<updated>2014-08-07T15:28:19Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: Created page with &amp;quot; function quickCompareSieves(X, scale, types )      &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%quickCompareSieves(X, scale )&amp;lt;/span&amp;gt;      &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   &amp;lt;/span&amp;gt;      &amp;lt;span sty...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; function quickCompareSieves(X, scale, types )&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%quickCompareSieves(X, scale )&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%X, data&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%scale, scale at which different sieves will be compared&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%types, &#039;o&#039; etc.&amp;lt;/span&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     if nargin&amp;lt;1&lt;br /&gt;
         X=[1 1 1 1 10 1 1 1 1 2 2 1 1 1 1 1 5 5 5 5 5 1 1 1 5 5 5 5 1 1 1 1 1];&lt;br /&gt;
     end&lt;br /&gt;
     if nargin&amp;lt;2&lt;br /&gt;
         scale=5;&lt;br /&gt;
     end&lt;br /&gt;
     if nargin&amp;lt;3&lt;br /&gt;
         types={&#039;o&#039;,&#039;c&#039;,&#039;m&#039;,&#039;n&#039;,&#039;v&#039;};&lt;br /&gt;
     end&lt;br /&gt;
     X=X+randn(size(X))*0.1*max(X(:));&lt;br /&gt;
     subplot(2,1,1);cla&lt;br /&gt;
     plot(X)&lt;br /&gt;
     title(&#039;X&#039;)&lt;br /&gt;
     colours=&#039;rmbck&#039;;&lt;br /&gt;
     for i=1:length(types)&lt;br /&gt;
         type=types{i};&lt;br /&gt;
         subplot(2,1,2)&lt;br /&gt;
         y=siv1_alt(X,scale,type);&lt;br /&gt;
         if i==1&lt;br /&gt;
             cla&lt;br /&gt;
             plot(X,&#039;ok&#039;)&lt;br /&gt;
             hold on&lt;br /&gt;
         end&lt;br /&gt;
         plot(y,&#039;-&#039;,&#039;color&#039;,colours(i));&lt;br /&gt;
     end&lt;br /&gt;
     title(sprintf(&#039;scale=&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d &#039;&#039;o&#039;&#039;&#039;&#039;c&#039;&#039;(red,magenta)&#039;&#039;m&#039;&#039;&#039;&#039;n&#039;&#039;(blue, cyan),&#039;&#039;v&#039;&#039; (black)&#039;,scale));&amp;lt;/span&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6907</id>
		<title>Types of 1D sieve</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6907"/>
		<updated>2014-08-07T15:28:02Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Which is best? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Sieve stuff]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Types of 1D sieve=&lt;br /&gt;
====Summary of outputs====&lt;br /&gt;
We understand MSER&#039;s to be based on opening (&#039;o&#039;) and closing (&#039;c&#039;) sieves. At each scale &#039;&#039;either&#039;&#039; the minima (&#039;o&#039;) or the maxima (&#039;c&#039;) of that scale are removed. The output therefore &#039;floats&#039; along the bottom or the top of the data. In the following Figure they are shown in red and cyan. They bracket the data. Subtracting output from each scale from the previous one yields the maxima or minima for each scale, some of which may be selected as &#039;&#039;interest points.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
[[Image:Quick compare different sieves in 1D.png|700px]] Top: our standard signal to which &#039;&#039;randn&#039;&#039; noise has been added to help us distinguish the different outputs. Bottom: all sieves are to scale 5. &#039;o&#039; and &#039;c&#039; (red, cyan) remove minima and maxima and so &#039;float&#039; along the top and bottom of the data. &#039;m&#039; and &#039;n&#039; have compound operators (&#039;o&#039; then &#039;c&#039; and &#039;c&#039; then &#039;o&#039;). They do a better job of outputting some sort of representation of the underlying signal. &#039;v&#039; is also a compound operator - this time applying &#039;o&#039; and &#039;c&#039; at random. The result (black) appears to be the best at representing the underlying signal (at scale 5 - this also applies to all scales.&lt;br /&gt;
|}&lt;br /&gt;
====Which is best?====&lt;br /&gt;
For segmenting images we have found &#039;v&#039; sieves to be the best  - indeed for most things we have tried. We have not tried finding interest points - particularly in 1D.&lt;br /&gt;
====[[quickCompareSieves|quickCompareSieves]];====&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6906</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6906"/>
		<updated>2014-08-06T20:49:41Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
The output depends on the computation kernel the recursive median is one. Others include connected set openings (&#039;o&#039;), closings (&#039;c&#039;) and composites of these &#039;M&#039; (&#039;o&#039; followed by &#039;c&#039; at each stage) or &#039;N&#039; (&#039;c&#039; followed by &#039;o&#039;). These last two yield outputs that are almost indistinguishable from the recursive median. (I have just realised how confusing it is referring to the recursive mean as an &#039;m&#039; sieve, I shall start using the abbreviation &#039;v&#039; as much as possible instead.) This is dull stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 	&lt;br /&gt;
This is dull stuff &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt; compared to something that has been thought about much less, let alone exploited&amp;lt;/span&amp;gt;- &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt;could build entirely new filtering schema&amp;lt;/span&amp;gt;, here are some [[new filtering schema| ideas.]] They begin to look a little biological.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6905</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6905"/>
		<updated>2014-08-06T20:48:33Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
The output depends on the computation kernel the recursive median is one. Others include connected set openings (&#039;o&#039;), closings (&#039;c&#039;) and composites of these &#039;M&#039; (&#039;o&#039; followed by &#039;c&#039; at each stage) or &#039;N&#039; (&#039;c&#039; followed by &#039;o&#039;). These last two yield outputs that are almost indistinguishable from the recursive median. (I have just realised how confusing it is referring to the recursive mean as an &#039;m&#039; sieve, I shall start using the abbreviation &#039;v&#039; as much as possible instead.) This is dull stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#FFBF00 	&lt;br /&gt;
This is dull stuff &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt; compared to something that has been thought about much less, let alone exploited&amp;lt;/span&amp;gt;- &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt;could build entirely new filtering schema&amp;lt;/span&amp;gt;, here are some [[new filtering schema| ideas.]] They begin to look a little biological.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6904</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6904"/>
		<updated>2014-08-06T20:47:33Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
The output depends on the computation kernel the recursive median is one. Others include connected set openings (&#039;o&#039;), closings (&#039;c&#039;) and composites of these &#039;M&#039; (&#039;o&#039; followed by &#039;c&#039; at each stage) or &#039;N&#039; (&#039;c&#039; followed by &#039;o&#039;). These last two yield outputs that are almost indistinguishable from the recursive median. (I have just realised how confusing it is referring to the recursive mean as an &#039;m&#039; sieve, I shall start using the inebriation &#039;v&#039; as much as possible instead.) This is dull stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#FFBF00 	&lt;br /&gt;
This is dull stuff &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt; compared to something that has been thought about much less, let alone exploited&amp;lt;/span&amp;gt;- &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one &amp;lt;span style=&amp;quot;color:#C46210;&amp;quot;&amp;gt;could build entirely new filtering schema&amp;lt;/span&amp;gt;, here are some [[new filtering schema| ideas.]] They begin to look a little biological.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6903</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6903"/>
		<updated>2014-08-06T20:39:23Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
The output depends on the computation kernel the recursive median is one. Others include connected set openings (&#039;o&#039;), closings (&#039;c&#039;) and composites of these &#039;M&#039; (&#039;o&#039; followed by &#039;c&#039; at each stage) or &#039;N&#039; (&#039;c&#039; followed by &#039;o&#039;). These last two yield outputs that are almost indistinguishable from the recursive median. (I have just realised how confusing it is referring to the recursive mean as an &#039;m&#039; sieve, I shall start using the inebriation &#039;v&#039; as much as possible instead.)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is dull stuff compared to something that has been thought about much less, let alone exploited - &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one could build entirely new filtering schema, here are some [[new filtering schema| that are (for me) last minute.]] They begin to look a little biological.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6902</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6902"/>
		<updated>2014-08-06T20:30:45Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
And there is more, something that has been thought about much less, let alone exploited - &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is not like a linear (diffusion) filter where repeated passes at the same scale simply smooth the signal away. It means that one could build entirely new filtering schema, here are some [[new filtering schema| that are (for me) last minute.]]&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6901</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6901"/>
		<updated>2014-08-06T20:28:17Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away.&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt; It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
And there is more, something that has been thought about much less, let alone exploited - &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;a PhD project waiting to happen.&amp;lt;/span&amp;gt;  Sieves (and the recursive median filter is what I call one of the sieves) &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;are idempotent. In other words having made one pass through the data at any particular scale, making another pass through the result changes nothing.&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is nothing like a Gaussian (diffusion) filter where repeated passes at the same scale simply smooth the signal away. This means that one could build entirely new filtering schema, here are some [[new filtering schema| that are last minute (for me).]]&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6900</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6900"/>
		<updated>2014-08-06T20:14:08Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6899</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6899"/>
		<updated>2014-08-06T18:46:52Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-gaussiansieve.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a another crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: Gaussian filter. Stage (scale) &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=1. Stage 2 &amp;lt;math&amp;gt;sigma&amp;lt;/math&amp;gt;=2 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Right panel: recursive median. Whatever the scale each computation requires three numbers, the middle one, one ahead and one behind. If the one behind comes directly from the previous stage the median is found.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If, on the other hand the one behind is the value that has just been computed using the previous window then the recursive median is computed. It is similar to an &#039;irr&#039; filter as opposed to a &#039;fir&#039; filter. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 also has a window of 3 but is computed on a basis of 5 values. This filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it is entirely removed. It turns out that extrema at each scale are removed in a nice regular way it does preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;GOOD&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-gaussiansieve.png&amp;diff=6898</id>
		<title>File:Siv1-gaussiansieve.png</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-gaussiansieve.png&amp;diff=6898"/>
		<updated>2014-08-06T18:33:56Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-Gaussianv.flv&amp;diff=6897</id>
		<title>File:Siv1-Gaussianv.flv</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-Gaussianv.flv&amp;diff=6897"/>
		<updated>2014-08-06T18:32:37Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6896</id>
		<title>MSER&#039;s and Connected sets</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6896"/>
		<updated>2014-08-06T18:28:28Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves Return to connected-sets]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mean and median filters bad|&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Mean and median filters &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
[[Gaussian and sieve filters|&amp;lt;span style=&amp;quot;color:#004225&amp;quot;&amp;gt;Gaussian and sieve filters &#039;&#039;&#039;&#039;&#039;good&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&lt;br /&gt;
[[Details_on_hydrophobicity_plots | The first published application of the data-sieve as reviewed by Fasman, click here ...&amp;lt;/span&amp;gt;]]&lt;br /&gt;
|[[Image:hydrophobicity_plots_Fasman.jpg|right|300px]]&lt;br /&gt;
|From Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&lt;br /&gt;
Left: Running mean (c.f Gaussian): &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;no good&amp;lt;/span&amp;gt;, Right: Median based Data-sieve: &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;much better&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Extrema&#039;&#039;&#039;&#039;&#039; to trees&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;=&lt;br /&gt;
====One dimensional A====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve introduction|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;What are MSER&#039;s in one dimension?&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====One dimensional B====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve applied to images|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;One dimensional extrema in images&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6895</id>
		<title>Mean and median filters bad</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6895"/>
		<updated>2014-08-06T16:06:52Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: running mean. Stage (scale) 1 window of 3. Stage 2 window of 5 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;BUT it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Right panel: running median. Median filters had many followers. It was thought that they preserved the edges in a meaningful way. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 window of 5 on the previous stage and this filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It is tempting to imagine that extrema at each scale are removed in a nice regular way &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;BUT&#039;&#039;&#039;&#039;&#039; no, it all falls apart at larger scales it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
So here is a gripe. When I first sent a paper on all to a reputable journal I wrote just that (&#039;... falls apart ...&#039;) and the paper was all about how to fix it - sieves. The reviewer rejected the paper because &#039;everyone knows that median filters aren&#039;t useful so how could a stack of them be any better&#039;. Well - that&#039;s exactly what the paper was about. Oh well, get over it. Write it more clearly, etc. etc. So here is the paper. The implementation is very literal and slow. Each stage is run and re-run to idempotency. I called the filter a data-sieve. The &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;twist in this story &amp;lt;/span&amp;gt;is the switch to &#039;&#039;&#039;&#039;&#039;&#039;recursive median filters&#039;&#039;&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;&#039;sieves&#039;&#039;&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6894</id>
		<title>MSER and Sieve Details</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&amp;diff=6894"/>
		<updated>2014-08-06T15:59:54Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Gaussian filters preserve scale space  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Software]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;What is the connection between MSER&#039;s and sieves&#039;?&amp;lt;/span&amp;gt;==&lt;br /&gt;
The papers by George Matas((Matas, et. al. 2002&amp;lt;ref&amp;gt;Matas, J., M. Urban, O. Chum and T. Pajdla (2002). &#039;&#039;Robust Wide baseline Stereo from Maximally Stable Extremal Regions.&#039;&#039;  BMVC, Cardiff&amp;lt;/ref&amp;gt;))((Matas et al., 2004)&amp;lt;ref&amp;gt;Matas, Jiri, et al. &#039;&#039;Robust wide-baseline stereo from maximally stable extremal regions&#039;&#039;. Image and vision computing 22.10 (2004): 761-767.&amp;lt;/ref&amp;gt;))&lt;br /&gt;
(Mishkin et al., 2013)&amp;lt;ref&amp;gt;Dmytro Mishkin, Michal Perdoch,Jiri Matas (2013) &#039;&#039;Two-view Matching with View Synthesis Revisited&#039;&#039; arXiv preprint arXiv:1306.3855 &amp;lt;/ref&amp;gt;  put together an effective way of finding distinguished regions (DR’s)  namely maximally stable extremal regions (&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;MSER’s&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;) with a powerful way of &#039;&#039;describing&#039;&#039; the regions at multiple scales and &#039;&#039;robustly matching&#039;&#039; such measurements with others in a second image. Since then many authors have confirmed the algorithms as a powerful tool for finding objects in images (review Mikolajczyk et al 2006: &amp;lt;ref&amp;gt;Krystian Mikolajczyk, Tinne Tuytelaars, Cordelia Schmid, Andrew Zisserman, Jiri Matas, Frederik Schaffalitzky, Timor Kadir, L Van Gool, (2006) &#039;&#039;A Comparison of Affine Region Detectors.&#039;&#039;International Journal of Computer Vision. DOI: 10.1007/s11263-005-3848-x&amp;lt;/ref&amp;gt;, Kimmel 2011 &amp;lt;ref&amp;gt;Kimmel, R., Zhang, C., Bronstein, A.M., Bronstein, M. (2011) &#039;&#039;Are MSER features really interesting?&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence 33:2316–2320&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--(This is a &#039;&#039;blast from the past&#039;&#039;. I failed to popularise it at the time, however, &#039;&#039;&#039;MSER&#039;s are now attracting lots of attention&#039;&#039;&#039; so I&#039;m now contributing my bit a little late in the day.) &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--[[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Andrews_Organ_Recital Why the hurry?]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
The algorithm &#039;&#039;&#039;underlying&#039;&#039;&#039; that for finding Maximally stable extremal regions (MSER&#039;s) &#039;&#039;&#039;is an &#039;o&#039; sieve&#039;&#039;&#039;. Such algorithms relate closely to mathematical morphology (dilations-erosion (Jackway et al 1996&amp;lt;ref&amp;gt;P. T. Jackway and M. Deriche. &#039;&#039;Scale-space properties of multiscale morphological dilation-erosion.&#039;&#039; IEEE Trans. Pattern Analysis and Machine Intelligence&lt;br /&gt;
, 18(1):38–51&amp;lt;/ref&amp;gt;) openings, closings and in particular watersheds (Vincent et al 1991 &amp;lt;ref&amp;gt;Vincent, Luc, and Pierre Soille. &amp;quot;Watersheds in digital spaces: an efficient algorithm based on immersion simulations.&amp;quot; IEEE transactions on pattern analysis and machine intelligence 13.6 (1991): 583-598.&amp;lt;/ref&amp;gt;) and reconstruction filters (Salembier, P. et. al. 1995&amp;lt;ref&amp;gt;Salembier P, Serra J (1995). &#039;&#039;Flat zones filtering, connected operators, and filters by reconstruction.&#039;&#039; IEEE Trans Image Process 4:1153&amp;lt;/ref&amp;gt;). In mathematical morphology the &#039;filtering&#039; element of the MSER algorithm might be called a &#039;connected-set opening&#039; (&#039;o&#039; sieve) . It is one of a family of closely related algorithms which for which I coined the term &#039;&#039;&#039;sieves&#039;&#039;&#039;. Why? &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Why call the family of feature finding algorithms &#039;&#039;sieves&#039;&#039; and not &#039;&#039;filters&#039;&#039;?&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
I thought it may be helpful to distinguish between &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;two very different signal simplifying algorithms&#039;&#039;&#039;&amp;lt;/span&amp;gt; both of which preserve scale-space: &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;linear &#039;filters&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;non-linear &#039;sieves&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;. In a linear-filter-bank such as a bank of Gaussian filters the input signal is separated, prism like, into frequency related scale bands (large and small blobs). Like all linear filters they spread outliers such as impulses and sharp edges over many scales. Sieves do not - hence the distinction. Now Gaussian filters have a very attractive property, that it turns out, is shared with sieves ...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filters preserve scale space&#039;&#039;&#039; &amp;lt;/span&amp;gt; ====&lt;br /&gt;
In the 1980&#039;s-1990&#039;s there were many publications on the properties of Gaussian (diffusion) filters. Key is that they &#039;&#039;preserve&#039;&#039; [http://en.wikipedia.org/wiki/Scale_space scale-space] (Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel ...&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt; To understand what is meant: imagine a photo projected onto a wall using a data projector. Leave it on for an hour. Then turn of the projector. Regions that were illuminated (white) will be warmer than those that were black. Now turn the projector off and turn on an infrared image viewer. Once again the image will be visible (warm and cold regions showing up). However, as we wait heat will diffuse from the warm to cooler regions - the image will become blurred. Heat will never flow to form new extrema. If the thermal conductivity of the surface is uniform and isotropic then there is one simple filter that will produce the same result. A Gaussian blur filter.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we have three panels illustrating one dimensional signals represented in scale space. I have used &#039;heat maps&#039; to represent the signal intensity at each scale.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=====Both Gaussian filters and Sieves preserve scale-space=====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;    3D extrema thumb.gif&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;20%&amp;quot;| &amp;lt;!-- [[Image:IllustrateSIV_1_01_thumb.gif|140px|IllustrateSIV 1 01 thumb]]--&amp;gt;&lt;br /&gt;
|&#039;&#039;&#039;Consider a signal&#039;&#039;&#039;, &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 X=getData(&#039;PULSES3WIDE&#039;)&lt;br /&gt;
 &amp;gt;blue  X=0 5 5 0 0 1 1 4 3 3 2 2 1 2 2 2 1 0 0 0 1 1 0 3 2 0 0 0 6 0 0&lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| The data has minima and maxima of different scales (lengths).  &lt;br /&gt;
|[[Image:IllustrateSIV_1_02.png|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;60%&amp;quot;| [[Image:Siv4 test 5.png|400px|&#039;m&#039; non-linear filter (sieve) compared to Gaussian filter]]&lt;br /&gt;
|[[Image:UpsideDownWitkin.jpg|300px|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Left Panel.&#039;&#039;&#039; Here, a &#039;&#039;&#039;A low-pass&#039;&#039;&#039; siv4.m gradually removes extrema (from the signal shown above) as scale increases from scale 1 to scale 64. The resulting traces are shown as a &#039;heat map&#039; where the signal goes from left to right, bright colours like red are large amplitude, small scale extrema. At each increasing scale (down the map) extrema have been removed. The &#039;m&#039;-sieve preserves scale-space so no new extrema (light regions) are formed as we move to increasing scales. Moreover, the features do not wander about in scale-space. We could say that in one dimension we measure pulse length using a sieve just as we might use a ruler or measuring tape in the physical world. &amp;lt;br&amp;gt;&lt;br /&gt;
Superficially it is clear that, by &#039;knocking off&#039; outliers at increasingly large scales, sieves cannot introduce new extrema but to clarify the issue we&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt; formally proved that they do not introduce new extrema, i.e. preserve &#039;&#039;&#039;&#039;&#039;scale-space&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt; (Bangham et al 1996&amp;lt;ref&amp;gt;Bangham, JA, Harvey, RW, Ling, PD and Aldridge, RV (1996) &#039;&#039;Morphological scale-space preserving transforms in many dimensions.&#039;&#039; The Journal of Electronic Imaging (JEI), 5 (3). pp. 283-299.&amp;lt;/ref&amp;gt;Bangham et al 1996b&amp;lt;ref&amp;gt;Bangham, JA, Chardaire, P, Pye, CJ and Ling, PD (1996) &#039;&#039;Multiscale nonlinear decomposition: The sieve decomposition theorem.&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, 18 (5). pp. 529-539. ISSN 0162-8828&amp;lt;/ref&amp;gt;, c.f. the properties of multiscale dilation and erosion, Jackway et al 1996&amp;lt;ref&amp;gt;Jackway, P.T. and Deriche, M. (1996) &#039;&#039;Scale-space properties of the multiscale morphological dilation-erosion&#039;&#039; IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.18, no.1, pp.38,51&amp;lt;/ref&amp;gt;). Preserving scale-space is one of the &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#9457EB;&amp;quot;&amp;gt;important reasons why MSER&#039;s&amp;lt;/span&amp;gt;&#039;&#039;&#039; are so useful for finding interest points worthy of further characterisation as feature points.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Middle Panel&#039;&#039;&#039;. A &#039;&#039;Gaussian&#039;&#039; filter bank also preserves scale-space as shown by Witkin 1986. No new features (local extrema) are formed. However, the features wander about in scale-space.&amp;lt;br&amp;gt;&lt;br /&gt;
(Babaud et. al. 1986 &amp;quot;The uniqueness of the Gaussian kernel  for Scale-Space Filtering&amp;quot;)&amp;lt;ref&amp;gt;Babaud, Jean; Witkin, Andrew P.; Baudin, Michel; Duda, Richard O., &amp;quot;Uniqueness of the Gaussian Kernel for Scale-Space Filtering,&amp;quot; Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.PAMI-8, no.1, pp.26,33, Jan. 1986 doi: 10.1109/TPAMI.1986.4767749&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Right Panel,&#039;&#039;&#039; Babaud&#039;s original Figure showing heat-map &#039;isotherms&#039;. (Actually, to be consistent with the other Panels I have flipped the image vertically.) The features wander about in scale-space and sharp edged features do not sharply disappear - they are smudged over scale-space.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Small, hot areas (outliers) are smoothed out as are sharp edges.&lt;br /&gt;
*Sieves are the opposite, impulses and regions with sharp edges do not spread over many scales (c.f. mechanical sieves in which particles (granules) either go through holes or they do not [http://en.wikipedia.org/wiki/Mesh_%28scale%29 Particle filters and sieves].)  They do however, spread smooth waveforms over many scales.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
One could consider &amp;lt;span style=&amp;quot;color:navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Gaussian filter banks and filter banks based on sieves as complementary to each other&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Implementation&#039;&#039;&#039;====&lt;br /&gt;
One dimensional sieves are easily implemented by run-length coding the signal, each extremum has a list of just two neighbours. Indeed, in collaboration with [http://www.cambridgeconsultants.com/ CCL] we implemented the algorithm on a PC board to characterise the output, in real time, from line-scan cameras (often used industrially when, in the early 1990&#039;s, 2D digital camera&#039;s were not easily available). Implementations for images in higher dimensions are similar but keeping track of lists of neighbours is a little more complex, but see Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt; for a cool implementation of the MSER algorithm.&lt;br /&gt;
[[Image:Scan 10.jpeg|350px|right|first hardware implementation of sieve]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Dug up from the past.&#039;&#039;&#039; First hardware implementation of a sieve. Just a few stages.  Later implementations used an application-specific integrated circuit (ASIC). We wanted a full decomposition at speed for the line-scan cameras.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Applications&#039;&#039;&#039; ====&lt;br /&gt;
In addition to their role finding in objects in 2D images we have used sieves to analyse 1, 2 and 3D signals. We started in 1D (digital images were not available at the time). For example analysing protein hydrophobicity plots(Bangham, 1988&amp;lt;ref&amp;gt;Bangham, J.A. (1988) &#039;&#039;Data-sieving hydrophobicity plots. Anal. Biochem&#039;&#039;. 174, 142–145&amp;lt;/ref&amp;gt;) for which it was found by Fasman (1990) &amp;lt;ref&amp;gt;Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&amp;lt;/ref&amp;gt; to &amp;quot;correctly predict the hydrophobic transmembrane regions ...&amp;quot; [[Details on hydrophobicity plots | (see more details)]]. , de-noising single channel current data (Bangham et al, 1984&amp;lt;ref&amp;gt;Bangham, J.A., and T.J.C. Jacob (1984). &#039;&#039;Channel Recognition Using an Online Hardware Filter&#039;&#039; in The Journal of Physiology, (London: Physiological Society), pp. 3–5&amp;lt;/ref&amp;gt;). Much later we used them for texture analysis (Southam et al, 2009&amp;lt;ref&amp;gt;Southam, P., and Harvey, R. (2009). &#039;&#039;Texture classification via morphological scale-space: Tex-Mex features&#039;&#039;. J. Electron. Imaging 18, 043007–043007&amp;lt;/ref&amp;gt;) and lipreading (Matthews et al., 2002&amp;lt;ref&amp;gt;Matthews, I., Cootes, T.F., Bangham, J.A., Cox, S., and Harvey, R. (2002). &#039;&#039;Extraction of visual features for lipreading&#039;&#039;. Pattern Anal. Mach. Intell. Ieee Trans. 24, 198–213&amp;lt;/ref&amp;gt;). In 2D for segmenting images through extremal trees  (c.f. MSER&#039;s) (Bangham et al., 1998&amp;lt;ref&amp;gt;Bangham, J.A., Hidalgo, J.R., Harvey, R., and Cawley, G. (1998). &#039;&#039;The segmentation of images via scale-space trees&#039;&#039;. In Proceedings of British Machine Vision Conference, pp. 33–43&amp;lt;/ref&amp;gt;), maximally stable contours(Lan et al., 2010&amp;lt;ref&amp;gt; Lan, Y., Harvey, R., and Perez Torres, J.R. (2010). &#039;&#039;Finding stable salient contours.&#039;&#039; Image Vis. Comput. 28, 1244–1254&amp;lt;/ref&amp;gt;),  creating painterly pictures from photos (Bangham et al., 2003&amp;lt;ref&amp;gt;Bangham, J.A., Gibson, S.E., and Harvey, R. (2003). &#039;&#039;The art of scale-space&#039;&#039;. In Proc. British Machine Vision Conference, pp. 569–578&amp;lt;/ref&amp;gt;)(Fo2Pix sold about 65,000 licences for our software package: ArtMaster); and in 3D for segmenting volumes in CAT scans.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Could non-linear filter banks (sieves) have evolved in biological systems?&amp;lt;/span&amp;gt;====&lt;br /&gt;
Biological systems are too complex too huge to comprehend without some initial insights. In vision the particular theoretical &#039;torches&#039; that light the experimental findings are the Fourier transform, Gaussian or Gabor filter banks. &#039;&#039;We look where those lights are shining and what we find seems to fit that intuition&#039;&#039; e.g. [http://en.wikipedia.org/wiki/Scale_space#Why_a_Gaussian_filter.3F Gaussian]/[http://en.wikipedia.org/wiki/Gabor_filter Gabor]. &#039;&#039;Or perhaps has to fit for want of other &#039;&#039;torches&#039;&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So care is needed. Science should be creative,  we should create a number of torches pointing in different directions (based on different theoretical frameworks where possible) then use experimental evidence to reject those that do not fit leaving us with the best hypothesis, theoretical framework, so far. &lt;br /&gt;
&lt;br /&gt;
We now know that sieves (MSER&#039;s) not only exist but offer significant practical advantages over other methods in computer vision. They are an alternative &#039;torch&#039; that might need rejecting. Perhaps we should re-evaluate the biological evidence. Could the brain be understood in terms of sieves? Were this to be the case then it could change what we look for in brain structures. Hardware implementations of sieves are all about connectivity and relative thresholds as are brains, so perhaps it is possible.&lt;br /&gt;
*our hardware implementation of the 1D filter bank was very different to a linear filter bank.&lt;br /&gt;
*Likewise the linear time implementation of the 2D MSER algorithm (Nister and Stewenius,  &amp;lt;ref&amp;gt;D. Nister and H. Stewenius &#039;&#039;Linear time maximally stable extremal regions&#039;&#039; ECCV 2008 part II LNCS 5303 pp 183-196. &amp;lt;/ref&amp;gt;) in which dynamic connectivity is everything.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Exploring this problem would be &#039;&#039;&#039;just the &#039;wild&#039; opportunity that I have enjoyed exploring in my research life&#039;&#039;&#039;. It would be a wild ride whatever the outcome - unfortunately cancer now (June 2014) leaves me out of the game.&amp;lt;span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Summary of basic properties of sieves, linear and non-linear filters?&amp;lt;/span&amp;gt;====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 80%; height: 60px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!  &lt;br /&gt;
! Sieve 1D&lt;br /&gt;
! Sieve 2D&lt;br /&gt;
! Sieve 3D&lt;br /&gt;
! Gaussian 1D&lt;br /&gt;
! Gaussian 2D&lt;br /&gt;
! Median 1D&lt;br /&gt;
! Median 2D&lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Preserve Scale space &lt;br /&gt;
! Yes || Yes || Yes &lt;br /&gt;
|| Yes || Yes || No || No &lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Separate signals by &lt;br /&gt;
! Length|| Area || Volume&lt;br /&gt;
||Pulse Frequency|| Blob Frequency 2D || Roughly Pulse length || Roughly Blob Area &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Limitations?&amp;lt;/span&amp;gt;==&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6893</id>
		<title>Mean and median filters bad</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Mean_and_median_filters_bad&amp;diff=6893"/>
		<updated>2014-08-06T15:30:10Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: Created page with &amp;quot;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot; |- valign=&amp;quot;top&amp;quot; |&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanme...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: running mean. Stage (scale) 1 window of 3. Stage 2 window of 5 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. BUT it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Right panel: running median. Median filters had many followers. It was thought that they preserved the edges in a meaningful way. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 window of 5 on the previous stage and this filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It is tempting to imagine that extrema at each scale are removed in a nice regular way &#039;&#039;&#039;&#039;&#039;BUT&#039;&#039;&#039;&#039;&#039; no, it all falls apart at larger scales it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Comparison_of_Matlab_MSER%27s_and_%27o%27_sieve&amp;diff=6892</id>
		<title>Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Comparison_of_Matlab_MSER%27s_and_%27o%27_sieve&amp;diff=6892"/>
		<updated>2014-08-06T15:28:12Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: Created page with &amp;quot;I just have to mend some code - I was using earlier this year but somehow I must have missed saving the latest versions on the svn.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I just have to mend some code - I was using earlier this year but somehow I must have missed saving the latest versions on the svn.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Tutorial_on_different_ways_of_specifying_the_growth_of_shapes&amp;diff=6891</id>
		<title>Tutorial on different ways of specifying the growth of shapes</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Tutorial_on_different_ways_of_specifying_the_growth_of_shapes&amp;diff=6891"/>
		<updated>2014-08-06T15:23:37Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Illustrating independent ways to form shapes and the use of submodels. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages#Output and Results|Back to GFtbox Tutorial pages]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We illustrate the practical advantage of having submodels within a project and an important consequence of understanding biological growth within the GPT-framework.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion: using a &#039;&#039;&#039;combination&#039;&#039;&#039; of polarity patterns to set local axes for anisotropic growth and patterns of differential specified growth to regulate the growth of shape would be powerful. &lt;br /&gt;
==Illustrating independent ways to form shapes and the use of submodels. ==&lt;br /&gt;
The full interaction function is shown at the bottom. The line of code that selects the submodel and the start of each submodel is shown in red.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&#039;&#039;&#039;Uniform specified polariser&#039;&#039;&#039; (no polariser gradient). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns tend to produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;: Whilst it may be possible to produce complex shapes such as the outgrowth shown in the GFtbox icon, we don&#039;t know how.&lt;br /&gt;
|width=&amp;quot;180pt&amp;quot;|[[image:GPT TwoWayHeart 20110531-0001 Last.png‎|thumb|180px|Pattern of isotropic specified growth (no polariser)]]&lt;br /&gt;
|width=&amp;quot;180pt&amp;quot;|[[image:GPT_TwoWayHeart_20110531-0001.png‎|thumb|180px|Pattern of isotropic specified growth after growing to 3 times the original area.]] &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;: It is not so easy to produce blobby shapes using patterns of polariser alone. But it is easy to produce outgrowths.&lt;br /&gt;
|width=&amp;quot;180pt&amp;quot;|[[image:GPT_TwoWayHeart_20110531-0002_Last.png‎|thumb|180px|Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).]]&lt;br /&gt;
|width=&amp;quot;180pt&amp;quot;|[[image:GPT_TwoWayHeart_20110531-0002.png‎|thumb|180px|Patterns and shape after growing to 3 times the original area.]] &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 1&amp;lt;/span&amp;gt;&lt;br /&gt;
 function m = gpt_twowayheart_20110531( m )&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%m = gpt_twowayheart_20110531( m )&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   Morphogen interaction function.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   Written at 2011-05-31 19:51:32.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   GFtbox revision 3548, 2011-05-31 14:37:10.747930.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% The user may edit any part of this function between delimiters&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% of the form &amp;quot;USER CODE...&amp;quot; and &amp;quot;END OF USER CODE...&amp;quot;.  The&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% delimiters themselves must not be moved, edited, deleted, or added.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
     fprintf( 1, &#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%s found in %s\n&#039;, mfilename(), which(mfilename()) );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     try&lt;br /&gt;
         m = local_setproperties( m );&lt;br /&gt;
     catch&lt;br /&gt;
     end&lt;br /&gt;
 &lt;br /&gt;
     realtime = m.globalDynamicProps.currenttime;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 2&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: INITIALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% In this section you may modify the mesh in any way whatsoever.&amp;lt;/span&amp;gt;&lt;br /&gt;
     if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% First iteration&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Set up names for variant models.  Useful for running multiple models on a cluster.&amp;lt;/span&amp;gt;&lt;br /&gt;
         m.userdata.ranges.modelname.range = { &#039;PolariserBased&#039;, &#039;DifferentialGrowthBased&#039; };  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% CLUSTER&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Crimson&amp;quot;&amp;gt; m.userdata.ranges.modelname.index = 1;  &amp;lt;/span&amp;gt;                     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% CLUSTER&amp;lt;/span&amp;gt;&lt;br /&gt;
     end&lt;br /&gt;
     modelname = m.userdata.ranges.modelname.range{m.userdata.ranges.modelname.index};  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% CLUSTER&amp;lt;/span&amp;gt;&lt;br /&gt;
     disp(sprintf(&#039;\nRunning &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%s model %s\n&#039;,mfilename, modelname));&amp;lt;/span&amp;gt;&lt;br /&gt;
     	&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Set priorities for simultaneous plotting of multiple morphogens, if desired.&amp;lt;/span&amp;gt;&lt;br /&gt;
     m = leaf_mgen_plotpriority( m, {&#039;ID_PLUSORG&#039;, &#039;ID_MINUSORG&#039;}, [1,2], [0.4,0.4] );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Set colour of polariser gradient arrows.&amp;lt;/span&amp;gt;&lt;br /&gt;
     m = leaf_plotoptions(m,&#039;highgradcolor&#039;,[0,0,0],&#039;lowgradcolor&#039;,[1,0,0]);&lt;br /&gt;
     m = leaf_plotoptions(m,&#039;decorscale&#039;,1.5);&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% setup a multiplot of the following morphogens&amp;lt;/span&amp;gt;&lt;br /&gt;
     m = leaf_plotoptions( m, &#039;morphogen&#039;, {&#039;V_KAREAL&#039;,&#039;ID_PLUSORG&#039;,&#039;ID_MINUSORG&#039;});&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% END OF USER CODE: INITIALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 3&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% SECTION 1: ACCESSING MORPHOGENS AND TIME.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
     setGlobals();&lt;br /&gt;
     global gNEW_KA_PAR gNEW_KA_PER gNEW_KB_PAR gNEW_KB_PER&lt;br /&gt;
     global gNEW_K_NOR gNEW_POLARISER gNEW_STRAINRET gNEW_ARREST&lt;br /&gt;
     dt = m.globalProps.timestep;&lt;br /&gt;
     polariser_i = gNEW_POLARISER;&lt;br /&gt;
     P = m.morphogens(:,polariser_i);&lt;br /&gt;
     [kapar_i,kapar_p,kapar_a,kapar_l] = getMgenLevels( m, &#039;KAPAR&#039; );&lt;br /&gt;
     [kaper_i,kaper_p,kaper_a,kaper_l] = getMgenLevels( m, &#039;KAPER&#039; );&lt;br /&gt;
     [kbpar_i,kbpar_p,kbpar_a,kbpar_l] = getMgenLevels( m, &#039;KBPAR&#039; );&lt;br /&gt;
     [kbper_i,kbper_p,kbper_a,kbper_l] = getMgenLevels( m, &#039;KBPER&#039; );&lt;br /&gt;
     [knor_i,knor_p,knor_a,knor_l] = getMgenLevels( m, &#039;KNOR&#039; );&lt;br /&gt;
     [strainret_i,strainret_p,strainret_a,strainret_l] = getMgenLevels( m, &#039;STRAINRET&#039; );&lt;br /&gt;
     [arrest_i,arrest_p,arrest_a,arrest_l] = getMgenLevels( m, &#039;ARREST&#039; );&lt;br /&gt;
     [id_plusorg_i,id_plusorg_p,id_plusorg_a,id_plusorg_l] = getMgenLevels( m, &#039;ID_PLUSORG&#039; );&lt;br /&gt;
     [id_minusorg_i,id_minusorg_p,id_minusorg_a,id_minusorg_l] = getMgenLevels( m, &#039;ID_MINUSORG&#039; );&lt;br /&gt;
     [v_kareal_i,v_kareal_p,v_kareal_a,v_kareal_l] = getMgenLevels( m, &#039;V_KAREAL&#039; );&lt;br /&gt;
     [id_tip_i,id_tip_p,id_tip_a,id_tip_l] = getMgenLevels( m, &#039;ID_TIP&#039; );&lt;br /&gt;
     [id_top_i,id_top_p,id_top_a,id_top_l] = getMgenLevels( m, &#039;ID_TOP&#039; );&lt;br /&gt;
     [s_growth_i,s_growth_p,s_growth_a,s_growth_l] = getMgenLevels( m, &#039;S_GROWTH&#039; );&lt;br /&gt;
     [id_mid_i,id_mid_p,id_mid_a,id_mid_l] = getMgenLevels( m, &#039;ID_MID&#039; );&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Mesh type: circle&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          centre: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%       circumpts: 24&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%       coneangle: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         dealign: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          height: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%        innerpts: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%      randomness: 0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%           rings: 4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         version: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          xwidth: 2&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          ywidth: 2&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            Morphogen   Diffusion   Decay   Dilution   Mutant&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            -------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KAPAR        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KAPER        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KBPAR        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KBPER        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                 KNOR        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            POLARISER         0.1    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            STRAINRET        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%               ARREST        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%           ID_PLUSORG        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          ID_MINUSORG        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             V_KAREAL        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%               ID_TIP        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%               ID_TOP        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%             S_GROWTH        0.01    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%               ID_MID        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: MORPHOGEN INTERACTIONS&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% In this section you may modify the mesh in any way that does not&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% alter the set of nodes.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Use the same pattern for both submodels&amp;lt;/span&amp;gt;&lt;br /&gt;
      RangeTip=(m.nodes(:,1)&amp;lt;-0.8)&amp;amp;...&lt;br /&gt;
          (abs(m.nodes(:,2))&amp;lt;0.2);&lt;br /&gt;
      RangeMid=(m.nodes(:,1)&amp;lt;=0.5)&amp;amp;...&lt;br /&gt;
          (m.nodes(:,1)&amp;gt;-0.5)&amp;amp;...&lt;br /&gt;
          (abs(m.nodes(:,2))&amp;lt;0.3);&lt;br /&gt;
      RangeTops=(m.nodes(:,1)&amp;lt;=max(m.nodes(:,1))&amp;amp;...&lt;br /&gt;
          (m.nodes(:,1)&amp;gt;0.5)&amp;amp;...&lt;br /&gt;
          (abs(m.nodes(:,2))&amp;gt;0.3));&lt;br /&gt;
     if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Initialisation code.&amp;lt;/span&amp;gt;&lt;br /&gt;
         switch modelname&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color: Crimson&amp;quot;&amp;gt; case &#039;PolariserBased&#039;  &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% &amp;lt;/span&amp;gt;&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% One way to set up a morphogen gradient is by ...&amp;lt;/span&amp;gt;&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Setting up a gradient by clamping the ends (execute only once)&amp;lt;/span&amp;gt;&lt;br /&gt;
                 P(RangeTip)=0;&lt;br /&gt;
                 P(RangeMid)=0.5;&lt;br /&gt;
                 P(RangeTops)=1;&lt;br /&gt;
                 id_plusorg_p=P;&lt;br /&gt;
                 id_minusorg_p(RangeTip)=1;&lt;br /&gt;
                 m.morphogenclamp( RangeTops|RangeTip|RangeMid, polariser_i ) = 1;&lt;br /&gt;
                 m = leaf_mgen_conductivity( m, &#039;POLARISER&#039;, 0.1 );  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%specifies the diffusion rate of polariser&amp;lt;/span&amp;gt;&lt;br /&gt;
                 m = leaf_mgen_absorption( m, &#039;POLARISER&#039;, 0.0 );     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% specifies degradation rate of polariser&amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color: Crimson&amp;quot;&amp;gt; case &#039;DifferentialGrowthBased&#039;&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% &amp;lt;/span&amp;gt;&lt;br /&gt;
                 P(:)=0;&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% One way to set up a morphogen gradient is by ...&amp;lt;/span&amp;gt;&lt;br /&gt;
                 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Setting up a gradient by clamping the ends (execute only once)&amp;lt;/span&amp;gt;&lt;br /&gt;
                 s_growth_p(RangeTip)=1;&lt;br /&gt;
                 s_growth_p(RangeMid)=0.05;&lt;br /&gt;
                 s_growth_p(RangeTops)=0.8;&lt;br /&gt;
                 m.morphogenclamp( RangeTops|RangeTip|RangeMid, s_growth_i ) = 1;&lt;br /&gt;
                 m = leaf_mgen_conductivity( m, &#039;s_growth&#039;, 0.001 );  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%specifies the diffusion rate of polariser&amp;lt;/span&amp;gt;&lt;br /&gt;
                 m = leaf_mgen_absorption( m, &#039;s_growth&#039;, 0.0 );     &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% specifies degradation rate of polariser&amp;lt;/span&amp;gt;&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     BasicGrowth=0.01;&lt;br /&gt;
     switch modelname&lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: Crimson&amp;quot;&amp;gt; case &#039;PolariserBased&#039; &amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%&amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Every equation to be formatted should end with an at-at Eqn N comment.&amp;lt;/span&amp;gt;&lt;br /&gt;
             kapar_p(:) = BasicGrowth;  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             kaper_p(:) = 0.0;   &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             kbpar_p(:) = BasicGrowth;  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             kbper_p(:) = 0.0;   &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             knor_p(:)  = 0;  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% thickness&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Crimson&amp;quot;&amp;gt; case &#039;DifferentialGrowthBased&#039;&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%  &amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Every equation to be formatted should end with an at-at Eqn N comment.&amp;lt;/span&amp;gt;&lt;br /&gt;
             kapar_p(:) = BasicGrowth*s_growth_p; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%0.01;  % when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             kaper_p(:) = BasicGrowth*s_growth_p; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%0.0;   % when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             kbpar_p(:) = BasicGrowth*s_growth_p; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%0.01;  % when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             kbper_p(:) = BasicGrowth*s_growth_p; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%0.0;   % when isotropic this will be 0.005&amp;lt;/span&amp;gt;&lt;br /&gt;
             knor_p(:)  = 0;  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% thickness&amp;lt;/span&amp;gt;&lt;br /&gt;
     end&lt;br /&gt;
     v_kareal_p=kapar_p+kaper_p; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% total specified areal growth&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 5&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% END OF USER CODE: MORPHOGEN INTERACTIONS&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% SECTION 3: INSTALLING MODIFIED VALUES BACK INTO MESH STRUCTURE&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&amp;lt;/span&amp;gt;&lt;br /&gt;
     m.morphogens(:,polariser_i) = P;&lt;br /&gt;
     m.morphogens(:,kapar_i) = kapar_p;&lt;br /&gt;
     m.morphogens(:,kaper_i) = kaper_p;&lt;br /&gt;
     m.morphogens(:,kbpar_i) = kbpar_p;&lt;br /&gt;
     m.morphogens(:,kbper_i) = kbper_p;&lt;br /&gt;
     m.morphogens(:,knor_i) = knor_p;&lt;br /&gt;
     m.morphogens(:,strainret_i) = strainret_p;&lt;br /&gt;
     m.morphogens(:,arrest_i) = arrest_p;&lt;br /&gt;
     m.morphogens(:,id_plusorg_i) = id_plusorg_p;&lt;br /&gt;
     m.morphogens(:,id_minusorg_i) = id_minusorg_p;&lt;br /&gt;
     m.morphogens(:,v_kareal_i) = v_kareal_p;&lt;br /&gt;
     m.morphogens(:,id_tip_i) = id_tip_p;&lt;br /&gt;
     m.morphogens(:,id_top_i) = id_top_p;&lt;br /&gt;
     m.morphogens(:,s_growth_i) = s_growth_p;&lt;br /&gt;
     m.morphogens(:,id_mid_i) = id_mid_p;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: FINALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% END OF USER CODE: FINALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: SUBFUNCTIONS&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 6&amp;lt;/span&amp;gt;&lt;br /&gt;
 function m = local_setproperties( m )&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6890</id>
		<title>Gaussian and sieve filters</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Gaussian_and_sieve_filters&amp;diff=6890"/>
		<updated>2014-08-06T15:09:11Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: Created page with &amp;quot;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot; |- valign=&amp;quot;top&amp;quot; |&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanme...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: running mean. Stage (scale) 1 window of 3. Stage 2 window of 5 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. BUT it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Right panel: running median. Median filters had many followers. It was thought that they preserved the edges in a meaningful way. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 window of 5 on the previous stage and this filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It is tempting to imagine that extrema at each scale are removed in a nice regular way &#039;&#039;&#039;&#039;&#039;BUT&#039;&#039;&#039;&#039;&#039; no, it all falls apart at larger scales it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6889</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6889"/>
		<updated>2014-08-06T15:08:44Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* 1 A */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6888</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6888"/>
		<updated>2014-08-06T15:07:30Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* 1 A */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;800&amp;quot; height=&amp;quot;900&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-meanmedian_2.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;OK its a crap Figure. I spent ages getting the trace above each new one to show the moving window used to compute the output of each stage.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Left panel: running mean. Stage (scale) 1 window of 3. Stage 2 window of 5 on the previous stage. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. BUT it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Right panel: running median. Median filters had many followers. It was thought that they preserved the edges in a meaningful way. Stage (scale) 1 window of 3. The filter removes extrema of length (scale) 1. Stage 2 window of 5 on the previous stage and this filter removes extrema of scale 2. And so forth. Each stage simplifies the signal until, at the bottom, it fades away. It is tempting to imagine that extrema at each scale are removed in a nice regular way &#039;&#039;&#039;&#039;&#039;BUT&#039;&#039;&#039;&#039;&#039; no, it all falls apart at larger scales it does not preserve [http://en.wikipedia.org/wiki/Scale_space scale-space] and that is &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-meanmedian_2.flv&amp;diff=6887</id>
		<title>File:Siv1-meanmedian 2.flv</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-meanmedian_2.flv&amp;diff=6887"/>
		<updated>2014-08-06T14:38:41Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: AndrewBangham uploaded a new version of &amp;amp;quot;File:Siv1-meanmedian 2.flv&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-meanmedian_2.flv&amp;diff=6886</id>
		<title>File:Siv1-meanmedian 2.flv</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-meanmedian_2.flv&amp;diff=6886"/>
		<updated>2014-08-06T14:34:21Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6885</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6885"/>
		<updated>2014-08-06T11:44:07Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* 1 A */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;600&amp;quot; height=&amp;quot;600&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Siv1-o.flv|Siv1-meanmedian.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Two simple growth rules translate the pattern into directed growth. The changing geometry that arises through growth causes the reaction-diffusion patterning to continue to change. These movies were used in a London Science Museum exhibit in association with a video interview with me.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-o.flv&amp;diff=6884</id>
		<title>File:Siv1-o.flv</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-o.flv&amp;diff=6884"/>
		<updated>2014-08-06T11:38:39Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: AndrewBangham uploaded a new version of &amp;amp;quot;File:Siv1-o.flv&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6883</id>
		<title>MSER&#039;s and Connected sets</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6883"/>
		<updated>2014-08-05T18:12:09Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves Return to connected-sets]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Mean and median filters bad|Mean and median filters &#039;&#039;&#039;&#039;&#039;bad&#039;&#039;&#039;&#039;&#039;]]&lt;br /&gt;
[[Gaussian and sieve filters|Gaussian and sieve filters &#039;&#039;&#039;&#039;&#039;good&#039;&#039;&#039;&#039;&#039;]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&lt;br /&gt;
[[Details_on_hydrophobicity_plots | The first published application of the data-sieve as reviewed by Fasman, click here ...&amp;lt;/span&amp;gt;]]&lt;br /&gt;
|[[Image:hydrophobicity_plots_Fasman.jpg|right|300px]]&lt;br /&gt;
|From Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&lt;br /&gt;
Left: Running mean (c.f Gaussian): &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;no good&amp;lt;/span&amp;gt;, Right: Median based Data-sieve: &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;much better&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Extrema&#039;&#039;&#039;&#039;&#039; to trees&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;=&lt;br /&gt;
====One dimensional A====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve introduction|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;What are MSER&#039;s in one dimension?&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====One dimensional B====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve applied to images|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;One dimensional extrema in images&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-meanmedian.png&amp;diff=6882</id>
		<title>File:Siv1-meanmedian.png</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-meanmedian.png&amp;diff=6882"/>
		<updated>2014-08-05T18:05:50Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-o.flv&amp;diff=6881</id>
		<title>File:Siv1-o.flv</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Siv1-o.flv&amp;diff=6881"/>
		<updated>2014-08-05T17:26:00Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6880</id>
		<title>MSER&#039;s and Connected sets</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=MSER%27s_and_Connected_sets&amp;diff=6880"/>
		<updated>2014-08-05T16:57:35Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Extrema in one dimensional signals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php/Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves Return to connected-sets]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&lt;br /&gt;
[[Details_on_hydrophobicity_plots | The first published application of the data-sieve as reviewed by Fasman, click here ...&amp;lt;/span&amp;gt;]]&lt;br /&gt;
|[[Image:hydrophobicity_plots_Fasman.jpg|right|300px]]&lt;br /&gt;
|From Fasman and Gilbert &amp;quot;The prediction of transmembrane protein sequences and their conformation: an evaluation&amp;quot; in Trends in Biochemistry 15 pp 89:91&lt;br /&gt;
Left: Running mean (c.f Gaussian): &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;no good&amp;lt;/span&amp;gt;, Right: Median based Data-sieve: &amp;lt;span style=&amp;quot;color:#C364C5;&amp;quot;&amp;gt;much better&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Extrema&#039;&#039;&#039;&#039;&#039; to trees&amp;lt;span style=&amp;quot;color:Chocolate&amp;quot;&amp;gt;=&lt;br /&gt;
====One dimensional A====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve introduction|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;What are MSER&#039;s in one dimension?&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====One dimensional B====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[One dimensional sieve applied to images|&amp;lt;span style=&amp;quot;color:Navy&amp;quot;&amp;gt;&#039;&#039;One dimensional extrema in images&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| [[Image:IllustrateSIV_1_01.gif|350px|link=One dimensional sieve introduction|AAMToolbox]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6879</id>
		<title>Types of 1D sieve</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6879"/>
		<updated>2014-08-05T12:11:31Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Types of 1D sieve */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Software#MSERs.2C_extrema.2C_connected-set_filters_and_sieves|Back to Sieve stuff]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Types of 1D sieve=&lt;br /&gt;
====Summary of outputs====&lt;br /&gt;
We understand MSER&#039;s to be based on opening (&#039;o&#039;) and closing (&#039;c&#039;) sieves. At each scale &#039;&#039;either&#039;&#039; the minima (&#039;o&#039;) or the maxima (&#039;c&#039;) of that scale are removed. The output therefore &#039;floats&#039; along the bottom or the top of the data. In the following Figure they are shown in red and cyan. They bracket the data. Subtracting output from each scale from the previous one yields the maxima or minima for each scale, some of which may be selected as &#039;&#039;interest points.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
[[Image:Quick compare different sieves in 1D.png|700px]] Top: our standard signal to which &#039;&#039;randn&#039;&#039; noise has been added to help us distinguish the different outputs. Bottom: all sieves are to scale 5. &#039;o&#039; and &#039;c&#039; (red, cyan) remove minima and maxima and so &#039;float&#039; along the top and bottom of the data. &#039;m&#039; and &#039;n&#039; have compound operators (&#039;o&#039; then &#039;c&#039; and &#039;c&#039; then &#039;o&#039;). They do a better job of outputting some sort of representation of the underlying signal. &#039;v&#039; is also a compound operator - this time applying &#039;o&#039; and &#039;c&#039; at random. The result (black) appears to be the best at representing the underlying signal (at scale 5 - this also applies to all scales.&lt;br /&gt;
|}&lt;br /&gt;
====Which is best?====&lt;br /&gt;
For segmenting images we have found &#039;v&#039; sieves to be the best  - indeed for most things we have tried. We have not tried finding interest points - particularly in 1D.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6878</id>
		<title>Types of 1D sieve</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6878"/>
		<updated>2014-08-05T12:02:56Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Types of 1D sieve */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Types of 1D sieve=&lt;br /&gt;
====Summary of outputs====&lt;br /&gt;
We understand MSER&#039;s to be based on opening (&#039;o&#039;) and closing (&#039;c&#039;) sieves. At each scale &#039;&#039;either&#039;&#039; the minima (&#039;o&#039;) or the maxima (&#039;c&#039;) of that scale are removed. The output therefore &#039;floats&#039; along the bottom or the top of the data. In the following Figure they are shown in red and cyan. They bracket the data. Subtracting output from each scale from the previous one yields the maxima or minima for each scale, some of which may be selected as &#039;&#039;interest points.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
[[Image:Quick compare different sieves in 1D.png|700px]] Top: our standard signal to which &#039;&#039;randn&#039;&#039; noise has been added to help us distinguish the different outputs. Bottom: all sieves are to scale 5. &#039;o&#039; and &#039;c&#039; (red, cyan) remove minima and maxima and so &#039;float&#039; along the top and bottom of the data. &#039;m&#039; and &#039;n&#039; have compound operators (&#039;o&#039; then &#039;c&#039; and &#039;c&#039; then &#039;o&#039;). They do a better job of outputting some sort of representation of the underlying signal. &#039;v&#039; is also a compound operator - this time applying &#039;o&#039; and &#039;c&#039; at random. The result (black) appears to be the best at representing the underlying signal (at scale 5 - this also applies to all scales.&lt;br /&gt;
|}&lt;br /&gt;
====Which is best?====&lt;br /&gt;
For segmenting images we have found &#039;v&#039; sieves to be the best  - indeed for most things we have tried. We have not tried finding interest points - particularly in 1D.&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6877</id>
		<title>Types of 1D sieve</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_1D_sieve&amp;diff=6877"/>
		<updated>2014-08-05T11:59:44Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: Created page with &amp;quot;=Types of 1D sieve= We understand MSER&amp;#039;s to be based on opening (&amp;#039;o&amp;#039;) and closing (&amp;#039;c&amp;#039;) sieves. At each scale &amp;#039;&amp;#039;either&amp;#039;&amp;#039; the minima (&amp;#039;o&amp;#039;) or the maxima (&amp;#039;c&amp;#039;) of that scale are...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Types of 1D sieve=&lt;br /&gt;
We understand MSER&#039;s to be based on opening (&#039;o&#039;) and closing (&#039;c&#039;) sieves. At each scale &#039;&#039;either&#039;&#039; the minima (&#039;o&#039;) or the maxima (&#039;c&#039;) of that scale are removed. The output therefore &#039;floats&#039; along the bottom or the top of the data. In the following Figure they are shown in red and cyan. They bracket the data. Subtracting output from each scale from the previous one yields the maxima or minima for each scale, some of which may be selected as &#039;&#039;interest points.&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
[[Image:Quick compare different sieves in 1D.png|700px]] Top: our standard signal to which &#039;&#039;randn&#039;&#039; noise has been added to help us distinguish the different outputs. Bottom: all sieves are to scale 5. &#039;o&#039; and &#039;c&#039; (red, cyan) remove minima and maxima and so &#039;float&#039; along the top and bottom of the data. &#039;m&#039; and &#039;n&#039; have compound operators (&#039;o&#039; then &#039;c&#039; and &#039;c&#039; then &#039;o&#039;). They do a better job of outputting some sort of representation of the underlying signal. &#039;v&#039; is also a compound operator - this time applying &#039;o&#039; and &#039;c&#039; at random. The result (black) appears to be the best at representing the underlying signal (at scale 5 - this also applies to all scales.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6876</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6876"/>
		<updated>2014-08-05T11:37:30Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* Finding interest points, features and segmenting images.  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_rd_rk_tentacles_20120417-0004.flv|GPT_rd_rk_tentacles_20120417-0004_First.png&amp;lt;/wikiflv&amp;gt; A simple reaction-diffusion system develops a pattern of spots. &lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_rd_rk_tentacles_20120417-0001.flv|GPT_rd_rk_tentacles_20120417-0004.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Two simple growth rules translate the pattern into directed growth. The changing geometry that arises through growth causes the reaction-diffusion patterning to continue to change. These movies were used in a London Science Museum exhibit in association with a video interview with me.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Quick_compare_different_sieves_in_1D.png&amp;diff=6875</id>
		<title>File:Quick compare different sieves in 1D.png</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=File:Quick_compare_different_sieves_in_1D.png&amp;diff=6875"/>
		<updated>2014-08-05T11:35:35Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6874</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3-v.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6874"/>
		<updated>2014-07-31T14:40:50Z</updated>

		<summary type="html">&lt;p&gt;AndrewBangham: /* The final version of the Windows ArtMaster2.0 is downloadable here  with no support. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_rd_rk_tentacles_20120417-0004.flv|GPT_rd_rk_tentacles_20120417-0004_First.png&amp;lt;/wikiflv&amp;gt; A simple reaction-diffusion system develops a pattern of spots. &lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_rd_rk_tentacles_20120417-0001.flv|GPT_rd_rk_tentacles_20120417-0004.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Two simple growth rules translate the pattern into directed growth. The changing geometry that arises through growth causes the reaction-diffusion patterning to continue to change. These movies were used in a London Science Museum exhibit in association with a video interview with me.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
</feed>