<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://cmpdartsvr3.cmp.uea.ac.uk/index.php?action=history&amp;feed=atom&amp;title=Siv4_test.m_code</id>
	<title>Siv4 test.m code - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://cmpdartsvr3.cmp.uea.ac.uk/index.php?action=history&amp;feed=atom&amp;title=Siv4_test.m_code"/>
	<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;action=history"/>
	<updated>2026-05-06T16:05:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6914&amp;oldid=prev</id>
		<title>AndrewBangham at 16:58, 7 August 2014</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6914&amp;oldid=prev"/>
		<updated>2014-08-07T16:58:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:58, 7 August 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[MSER_and_Sieve_Details|Return]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[MSER_and_Sieve_Details|Return]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This code illustrates lots of things to do with 1D sieving of 2D images column by column where the image is rotated.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  function siv4_test&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  function siv4_test&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>AndrewBangham</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6913&amp;oldid=prev</id>
		<title>AndrewBangham: Created page with &quot;Return&lt;br&gt;&lt;br&gt;   function siv4_test      &lt;span style=&quot;color: Green&quot;&gt;%function siv4_test demonstrate siv4 functionality&lt;/span&gt;      &lt;span style=&quot;colo...&quot;</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Siv4_test.m_code&amp;diff=6913&amp;oldid=prev"/>
		<updated>2014-08-07T16:55:59Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/wiki/BanghamLab/index.php?title=MSER_and_Sieve_Details&quot; title=&quot;MSER and Sieve Details&quot;&gt;Return&lt;/a&gt;&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;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&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,&amp;#039;Simple starting signal and a simplified signal&amp;#039;);&lt;br /&gt;
         data{1}=siv4_alt(&amp;#039;PULSES3WIDE&amp;#039;);&lt;br /&gt;
         showResult(subplotrows,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&amp;#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&amp;#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,&amp;#039;Showing increasing simplification by removing small scale pulses&amp;#039;);&lt;br /&gt;
         data{1}=siv4_alt(&amp;#039;PULSES3WIDE&amp;#039;,[2;5;10])&lt;br /&gt;
         showResult(4,...&lt;br /&gt;
             data{1}.name,data{1}.X,...&lt;br /&gt;
             sprintf(&amp;#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&amp;#039;,data{1}.options(1,1)),data{1}.y{1}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             sprintf(&amp;#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&amp;#039;,data{1}.options(2,1)),data{1}.y{2}, ...&amp;lt;/span&amp;gt;&lt;br /&gt;
             sprintf(&amp;#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&amp;#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,&amp;#039;Showing increasing simplification by removing small scale pulses&amp;#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(&amp;#039;1D sieve columnwise scale %d&amp;#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(&amp;#039;1D sieve columnwise scale %d&amp;#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(&amp;#039;1D sieve columnwise scale %d&amp;#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,&amp;#039;Dynamic figure showing gradual simplification of signal by removing small scale details&amp;#039;);&lt;br /&gt;
         im=getData(&amp;#039;PULSES3WIDE&amp;#039;);&lt;br /&gt;
         X(:,1)=double(im(:));&lt;br /&gt;
         maxmesh=size(X,1);&lt;br /&gt;
         data{1}=siv4_alt(X(:),maxmesh,&amp;#039;g&amp;#039;);&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%     data{1}=siv4_alt(&amp;#039;PULSES3WIDE&amp;#039;,maxmesh,&amp;#039;g&amp;#039;);&amp;lt;/span&amp;gt;&lt;br /&gt;
         cla&lt;br /&gt;
         shg&lt;br /&gt;
         plot(data{1}.X(:),&amp;#039;o-b&amp;#039;);&lt;br /&gt;
         hold on&lt;br /&gt;
         g=data{1}.g{1};&lt;br /&gt;
         h=[];&lt;br /&gt;
         xlabel(&amp;#039;position&amp;#039;)&lt;br /&gt;
         ylabel(&amp;#039;granule sample value&amp;#039;)&lt;br /&gt;
         title(&amp;#039;Granule values superimposed on data{1}&amp;#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],&amp;#039;-r&amp;#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,&amp;#039;Heatmap showing granules in scale-space&amp;#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&amp;#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(&amp;#039;X&amp;#039;)&lt;br /&gt;
         ylabel(&amp;#039;Scale&amp;#039;);&lt;br /&gt;
         colormap jet&lt;br /&gt;
         title(&amp;#039;Heatmap, colormap jet&amp;#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,&amp;#039;Aside compare sieve filter bank (m-sieve) with Gaussian filter bank&amp;#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(&amp;#039;Gaussian&amp;#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&amp;#039;,hh,&amp;#039;same&amp;#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}&amp;#039;;&lt;br /&gt;
         end&lt;br /&gt;
         subplot(1,2,1)&lt;br /&gt;
         imagesc(heatmapS&amp;#039;)&lt;br /&gt;
         title(&amp;#039;Sieve decomposition&amp;#039;)&lt;br /&gt;
         str=&amp;#039;&amp;#039;;&lt;br /&gt;
         for i=1:length(scales)&lt;br /&gt;
             scale=scales(i);&lt;br /&gt;
             str=[str,num2str(scale),&amp;#039;|&amp;#039;];&lt;br /&gt;
         end&lt;br /&gt;
         set(gca,&amp;#039;Yticklabel&amp;#039;,str)&lt;br /&gt;
         ylabel(&amp;#039;Scale - note logarithmic&amp;#039;);&lt;br /&gt;
         subplot(1,2,2)&lt;br /&gt;
         imagesc(heatmapG&amp;#039;)&lt;br /&gt;
         title(&amp;#039;Gaussian decomposition&amp;#039;)&lt;br /&gt;
         colormap jet&lt;br /&gt;
         set(gca,&amp;#039;Yticklabel&amp;#039;,str)&lt;br /&gt;
         ylabel(&amp;#039;Scale - note logarithmic&amp;#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,&amp;#039;Histogram showing number of granules at each position (of various scales)&amp;#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(&amp;#039;A &amp;#039;&amp;#039;stable&amp;#039;&amp;#039; extremum is at position &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d with %d nested granules\n&amp;#039;,i,maxnumber));&amp;lt;/span&amp;gt;&lt;br /&gt;
         xlabel(&amp;#039;position (x)&amp;#039;);&lt;br /&gt;
         ylabel(&amp;#039;number of granules at each position&amp;#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,&amp;#039;Two dimensional signal with each column simplified to scale 10&amp;#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 &amp;#039;TestCard5.png&amp;#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(&amp;#039;1D sieve columnwise scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&amp;#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,&amp;#039;Image simplified to scale 10 column by column where the column is rotated&amp;#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(&amp;#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d deg. scale %d, scan [%d %d]&amp;#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,&amp;#039;Rotate: 1D sieve to scale 10 column by column: rotated back&amp;#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,&amp;#039;crop&amp;#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(&amp;#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d deg. scale %d, scan [%d %d]&amp;#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,&amp;#039;Image granules from columns&amp;#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 &amp;#039;TestCard5.png&amp;#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,&amp;#039;g&amp;#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(&amp;#039;Test image&amp;#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,&amp;#039;Rotated image granules from columns rotated back&amp;#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 &amp;#039;TestCard5.png&amp;#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,&amp;#039;loose&amp;#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(&amp;#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&amp;#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(&amp;#039;press a key&amp;#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(&amp;#039;sievedData-&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%s.mat&amp;#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,&amp;#039;l&amp;#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,&amp;#039;g&amp;#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, &amp;#039;sievedRotim&amp;#039;,&amp;#039;gransRotim&amp;#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(&amp;#039;scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d&amp;#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],&amp;#039;-r&amp;#039;);&lt;br /&gt;
                 plot(xxr,yyr,&amp;#039;*r&amp;#039;);&lt;br /&gt;
             else&lt;br /&gt;
                 xyer=[xyr(1);xyr(2)-1];&lt;br /&gt;
                 plot([xx xx],[yy_start yy_end],&amp;#039;-r&amp;#039;);&lt;br /&gt;
                 plot(xx,yy,&amp;#039;*r&amp;#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,&amp;#039;-b&amp;#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,&amp;#039;.b&amp;#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(&amp;#039;Scale &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d column granules&amp;#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,&amp;#039;*r&amp;#039;,&amp;#039;linewidth&amp;#039;,2);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot([jj, jj],[ii ii+scale],&amp;#039;-r&amp;#039;,&amp;#039;linewidth&amp;#039;,2);&lt;br /&gt;
                 end&lt;br /&gt;
             else&lt;br /&gt;
                 if scale==1&lt;br /&gt;
                     plot(jj,ii,&amp;#039;*b&amp;#039;,&amp;#039;linewidth&amp;#039;,2);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot([jj, jj],[ii ii+scale],&amp;#039;-b&amp;#039;,&amp;#039;linewidth&amp;#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,&amp;#039;.r&amp;#039;);&lt;br /&gt;
                 else&lt;br /&gt;
                     plot(jj,ii+k-1,&amp;#039;.b&amp;#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,&amp;#039;screensize&amp;#039;);&lt;br /&gt;
     figNo=figNo+1;&lt;br /&gt;
     figure(figNo);&lt;br /&gt;
     pos=get(figNo,&amp;#039;Position&amp;#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,&amp;#039;position&amp;#039;,pos,&amp;#039;name&amp;#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)&amp;#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(&amp;#039;rotated by &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%d degrees&amp;#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,&amp;#039;o-b&amp;#039;);&lt;br /&gt;
                 hold on&lt;br /&gt;
                 plot(signal,&amp;#039;:b&amp;#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,&amp;#039;o-b&amp;#039;);&lt;br /&gt;
                     hold on&lt;br /&gt;
                     plot(signal,&amp;#039;:b&amp;#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>
</feed>