https://svn.lrde.epita.fr/svn/oln/trunk
Index: ChangeLog
from Alexandre Abraham <abraham(a)lrde.epita.fr>
W-watershed implemented, dummy tikz output.
* milena/sandbox/abraham/morpho/basic_najman.hh: Fix bugs.
* milena/sandbox/abraham/morpho/images/test_2.pgm: New.
* milena/sandbox/abraham/morpho/images/test_3.pgm: New.
* milena/sandbox/abraham/morpho/images/test_4.pgm: New.
* milena/sandbox/abraham/morpho/tikz.h: New
(mln::io::tikz::save) New, working on 2d grayscale images.
* milena/sandbox/abraham/morpho/test_watershed.cc:
Add tikz output.
* milena/sandbox/abraham/morpho/Makefile: .
Makefile | 2 -
basic_najman.hh | 96 ++++++++++++++++++++++++++++++------------------------
images/test_2.pgm | 5 ++
images/test_3.pgm | 29 ++++++++++++++++
test_watershed.cc | 64 ++++++++++++++++++++++++++++++++----
tikz.h | 37 ++++++++++++++++++++
6 files changed, 184 insertions(+), 49 deletions(-)
Index: milena/sandbox/abraham/morpho/basic_najman.hh
--- milena/sandbox/abraham/morpho/basic_najman.hh (revision 1887)
+++ milena/sandbox/abraham/morpho/basic_najman.hh (working copy)
@@ -6,6 +6,9 @@
#include <queue>
#include <set>
+#define MOINS_UN
+
+
namespace mln
{
@@ -19,7 +22,7 @@
typedef mln_psite(I) psite;
struct node {
- int level;
+ mln_value(I) level;
int area;
int highest;
p_array<mln_psite(I)> children;
@@ -349,8 +352,8 @@
p_set<psite> v;
for_all(q)
- if (exact(ima)(q) < exact(ima)(p))
- v.append(Par_node(q));
+ if (exact(pima).has(q) && exact(pima)(q) < exact(pima)(p))
+ v.insert(Par_node(q));
if (v.npoints() == 0)
return psite(-1, -1);
@@ -372,7 +375,7 @@
p_set<psite> v;
for_all(q)
- if (exact(ima)(q) < exact(ima)(p))
+ if (exact(pima).has(q) && exact(pima)(q) < exact(pima)(p))
v.insert(Par_node(q));
if (v.npoints() == 0)
@@ -422,12 +425,12 @@
if (i != psite(-1, -1))
{
- pima(p) = nodes(i).level ;
+ pima(p) = nodes(i).level MOINS_UN ;
Par_node(p) = i;
mln_niter(N) q(nbh, p);
for_all(q)
- if (!isproc(q))
+ if (exact(pima).has(q) && !isproc(q))
if (m_destructible(q) != psite(-1, -1))
{
l.push(q);
@@ -439,13 +442,15 @@
void w_watershed()
{
- p_array< p_set<psite> > L;
+ std::vector< std::set<psite> > L(255);
// TODO : replace int with the type of value
- mln_ch_value(I, int) K;
- mln_ch_value(I, psite) H;
+ I K(exact(ima).domain(), exact(ima).border());
+ mln_ch_value(I, psite) H(exact(ima).domain(), exact(ima).border());
mln_piter(I) it(exact(ima).domain());
+ // mln_value(I) max = 0;
+
psite i;
for_all(it)
{
@@ -454,19 +459,30 @@
i = w_destructible(p);
if (i != psite(-1, -1))
{
- L[nodes(i).level].insert(p);
- K(p) = nodes(i).level;
+ // if (max < nodes(i).level)
+ // max = nodes(i).level;
+ L[nodes(i).level MOINS_UN].insert(p);
+ K(p) = nodes(i).level MOINS_UN;
H(p) = i;
+ }
+ }
- typename p_array< p_set<psite> >::fwd_piter n(L);
- for_all(n)
+ mln_value(I) k = 0;
+
+ typename std::vector< std::set<psite> >::iterator n;
+ for( n = L.begin(); n != L.end(); n++, k++ )
{
- while (!n.empty())
+
+ // to avoid looping on max
+ // if (k + 1 == max)
+ // break;
+
+ while (!n->empty())
{
- psite p = *n.begin();
- n.erase(p);
- // TODO : replace int with the type of value
- int k = nodes(p).level + 1;
+ psite p = *(n->begin());
+ n->erase(p);
+ // mln_value(I) k = nodes(p).level;
+
if (K(p) == k)
{
pima(p) = k;
@@ -474,16 +490,16 @@
mln_niter(N) q(nbh, p);
for_all(q)
- if (k < pima(q))
+ if (exact(pima).has(q) && k < pima(q))
{
psite j = w_destructible(q);
- if (j != psite(-1, -1))
- K(q) = -1;
+ if (j == psite(-1, -1))
+ K(q) = 255;
else
- if (K(q) != nodes(j).level)
+ if (K(q) != nodes(j).level MOINS_UN)
{
- n.insert(q);
- K(q) = i-1;
+ n->insert(q);
+ K(q) = nodes(j).level MOINS_UN;
H(q) = j;
}
}
@@ -491,10 +507,6 @@
}
}
}
- }
-
- }
-
}; // struct basic_najman
Index: milena/sandbox/abraham/morpho/images/test_2.pgm
--- milena/sandbox/abraham/morpho/images/test_2.pgm (revision 0)
+++ milena/sandbox/abraham/morpho/images/test_2.pgm (revision 0)
@@ -0,0 +1,5 @@
+P5
+# CREATOR: GIMP PNM Filter Version 1.1
+7 6
+255
+3M³fMf³MMÌÌÌfÌ̳æMMæ³f3MfæM
\ No newline at end of file
Index: milena/sandbox/abraham/morpho/images/test_3.pgm
--- milena/sandbox/abraham/morpho/images/test_3.pgm (revision 0)
+++ milena/sandbox/abraham/morpho/images/test_3.pgm (revision 0)
@@ -0,0 +1,29 @@
+P5
+# CREATOR: GIMP PNM Filter Version 1.1
+100 100
+255
+!$(-17=CIPX_gow¡ª²»ÃËÒÙßäèëììëéåáÛÔÍż´¬¥~}|||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ $(,16<BHOU]dlt|¨±ºÃËÓÚßäèêëêèåàÚÓÌļ´¬¤
~}|||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{#'+/4:?ELRY`hpx§±ºÃÌÓÚàäçèèæãßÙÓËû³«£
~}|||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{!%)-27<BHNU\dlu~§±»ÄÍÕÛàäææåâÞÙÒËû³«£
~}|||{{{{{{{{{{{{{{{zzzzzzzzz{{{{{{|||
"&*/38>DJQX`ir|§²½ÇÏ×ÝáãääáÝØÑʺ²ª¢}}||{{{{{{{{{{{{{{zzzzzzzzzz{{{{{{{|||
#'+/49?ELT]fp{ªµÀÉÒØÞáââàÜ×Ñʺ²ª¢~}}||{{{{{{{{{{zzzzzzzzzzzzzz{{{{{{||||
+
+
+
+
#'+05;BIQ[ep|¡®¹ÄÍÔÚÞàáßÛ×Ðɹ±©¢~}||{{{{{{{{{zzzzzzzzzzzzzz{{{{{{||||}}
+
+
+
#',28?GPZfr¦³¾ÈÑ×ÜÞßÞÛÖÐÉÁ¹±©¡~}||{{{{zzzzzzzzzzzzzzzzzz{{{{{{||||}}}
+
+
$)/6>GQ\iv¬¹ÄÍÔÙÜÞÝÚÕÏÈÁ¹±©¡~}|{{{{zzzzzzzzzzzzzzzzzzz{{{{{||||}}}~
+
"'.5>ITan|§´¿ÉÑ×ÛÜÜÙÕÏÈÁ¹±©¡~}|{{{zzzzzzzzzzzzzzzzzzzz{{{{{||||}}}~
+!'.7AMYgv
¢°¼ÆÏÕÙÛÛÙÕÏÈÁ¹±©¡}||{{{zzzzzzzzzzzzzzzzzz{{{{{{||||}}}}~
+")1;GSap¬¸ÄÍÓØÚÚØÔÏÈÁ¹±©¡}||{{zzzzzzzzzzzzzzzzzzz{{{{{{|||}}}~~~
$,6AN\k{¨¶ÁËÒ×ÙÚØÔÏÈÁ¹±©¡}||{{zzzzzzzzzzzzzzzzzz{{{{{{|||}}}~~~
+
)2>JYhx¦´¿ÉÑÖÙÙ×ÔÏÈÁ¹±©¡}||{{zzzzzzzzzzzzzzzzzz{{{{{||||}}}~~~
+ &/;GVeu
¤²¾ÈÐÕØÙ×ÔÏÈÁ¹±©¡}||{{zzzzzzzzzzzzzzzzzz{{{{{||||}}}~~~
+ $-9FTcs£±½ÇÏÕØÙ×ÔÏÈÁ¹±©¢}||{{zzzzzzzzzzzzzzzzz{{{{{{||||}}}}~~~
+ #,8DSbr¢°½ÇÏÕØÙ×ÔÏÉÁº±©¢}||{{zzzzzzzzzzzzzzzzz{{{{{{|||||}}}~~~
+ ",7DRbr¢°½ÇÏÕØÙØÔÏɺ²ª¢}||{{zzzzzzzzzzzzzzzzz{{{{{{|||||}}}}~~
+",7DSbr£±½ÈÐÕØÙØÕÏɺ²ª¢~||{{zzzzzzzzzzzzzzzzz{{{{{{|||||}}}}~~ #-8ETct¤²¾ÈÐÖÙÚØÕÐʺ²ª£~}|{{{zzzzzzzzzzzzzzzz{{{{{{{|||||}}}}}#!
+
+
%/:GVeu¥³¿ÉÑ×ÚÚÙÕÐÊû³«£~}|{{{zzzzzzzzzzzzzzzz{{{{{{{|||||}}}}},)&#
+ '1=JXhx§µÁËÒØÛÛÚÖÑËü´«¤~}|{{{zzzzzzzzzzzzzzzz{{{{{{{{|||||||}}62/+'$
+
+
+"*4@M\k{ª·ÃÌÔÙÜÜÚ×ÒËļ´¬¤
~}|{{{zzzzzzzzzzzzzzzz{{{{{{{{{|||||||}A=950,($
&/9ER`pºÅÏÖÛÝÝÜØÓÍŽµ¦
}||{{{zzzzzzzzzzzzzzzz{{{{{{{{{{{|||||MIE@;61-($!$+4>JWfu£±½ÈÑØÜßßÝÙÔÎƾ¶®¦~}|{{{zzzzzzzzzzzzzzzz{{{{{{{{{{{{{|||[VQLFA<72-)%"$*1:EP^l{§µÁËÔÚÞààÞÚÕÏÈÀ¸°¨ ~}|{{{zzzzzzzzzzzzzzzz{{{{{{{{{{{{{|||id^YSMGB<73.+'$"
!#'+19BLXes¹ÅÏ×ÜàââàÜ×Ñɺ²ª¢
}||{{{zzzzzzzzzzzzzz{{{{{{{{{{{{{{{||wrlg`ZTNHC>951.+)(''(),/4:BKUam{¥²¾ÉÒÚßâäãáÝØÒËû³«¤~}||{{{{zzzzzzzzzzz{{{{{{{{{{{{{{{{{{
ztnhb[UPJEA=964221236:>ELU_kw¬¸ÄÎÖÝâåæåãßÚÔÍƾ¶®¦ ~}||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|vpic]WRMIFC@>==>?BEJPX`ju§³¿ÉÒÚàåçèçåáÜÖÐÈÀ¹±©¢~}}|||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ }wqke`[WSPNLKJKLORW]dmv¤¯»ÅÏ×ÞäèêêéçäßÙÒËü´¬¥
~}}|||||{{{{{{{{{{{{{{{{{{{|||||||¬§¢
ytojfb_\[YYY[]aekrz¢¸ÂÌÕÜâçêìíìéæáÛÕÎÆ¿·°©¢
~~}}}|||||||||||||||||||||||||||¶²¨£}xtqnkjhhhjloty£·ÀÊÒÚáæêíïïîëèãÞØÑÊû´¦ ~~~}}}}}||||||||||||||||}}}}}}¾º¶±¬§¢}{yxxxy|¥®·ÀÉÑÙßåêíðññðíêæáÛÔÍÆ¿¸±ª¤
~~~~~}}}}}}}}}}}}}}}~~~~~ÃÀ¼¸´°«§£¢©±¸ÁÉÐØÞäéíðòóóñïìèãÞØÑÊüµ¯©£~~~~~~~~~~ÇÄÁ½º¶³¯¬¨¥¢¤©®µ»ÂÉÐ×ÝãèìðòôõôóñîêæáÛÕÎÇÁº³¨£
ÈÅÂÀ½º·´²¯«©§¥¤£¢¢¢£¤¦©¬°´¹¿ÅËÑ×ÝãçìïòôöööôóðìèãÞØÒÌÅ¿¸²¨£
ÆÄÂÀ½»¹·¶´³±°¯®®®®°±´·º¾ÃÈÍÒØÝâçëïòôö÷÷÷öôñîêæáÛÕÏÉý·²¨¤
ÂÁ¿½¼º¹¸·¶¶µµµµµµµµ¶·¹º½¿ÃÆÊÏÓØÜáåêíðóõ÷÷ø÷öõòïìèãÞØÓÍÇÁ¼¶²©¥¢½»º¹¸·¶¶¶¶¶··¸¸¹º»¼½¾¿ÁÃÆÉÌÐÓ×Üàäèëïñôö÷øøø÷õóðíéäßÚÕÏÊÅÀ»¶²®«¨¥£ ¶´³³²²²²³´µ¶·¸º»¼½¿ÀÂÃÅÇÊÌÏÒÖÚÝáåèìïñôõ÷÷ø÷öõóðíéåàÛÖÑÌǾº¶³°ª¨¦¥£¢ ¬¬«««¬®¯±³µ¶¸º¼¾¿ÁÃÄÆÈËÍÐÓÖÚÝáäèëîðóôö÷÷ööôòïìéäàÛ×ÒÍÉÄÀ½¹¶´±¯®¬«©¨§¦¥¤£¡ ¤¤££££¤¦§©«°²µ·¹»½¿ÁÃÅÇÉÌÏÒÕØÛßâåéìîñóôõõõôóñîëçãßÚÖÑÍÉÅÁ¾»¹·µ´²±°¯®¬«ª©¨§¦¥¤£¢¡¡ ¡¡¡¡¢¢¡¤§©¬¯²´¶¹»½¿ÁÃÆÈËÎÑÔ×ÛÞâåèëîðòóóóòñïìèäàÜ×ÓÏËÇÃÀ¾¼º¸··¶µµµ´´³³²±°°¯®¬«ª©©¨¨¨§§§¨¨¨¨¨©©©©ª¢¥¨«°²µ·¹»¾ÀÂÅÈËÎÒÖÙÝáäèêíïðññðîìéåáÝØÓÏËÇÃÀ¾¼º¹¸¸¸¸¸¹¹¹¹¹¹¹¸¸··¶µ´³²²±°°°°°°°°°°±±±²²²¢¥¨«¯²´¶¹»¾ÁÄÇËÏÓ×ÛßãæéëíîííëèåáÜ×ÓÎÉÅÁ¾»¹¸····¸¹º»¼½¾¿¿¿¿¿¿¾¾½¼¼»º¹¹¹¸¸¸¸¸¸¸¹¹¹ººº»~
¢¤¦©«°²µ¸¼¿ÃÇÌÐÕÙÝáäçéêêéçäàÛÖÑÌǽº·´³²²²³´¶¸º¼¾¿ÁÂÄÅÅÆÆÆÅÅÄÄÃÂÂÁÁÁÀÀÀÀÀÁÁÁÂÂÂÃÃwwwwwxz{}
¢¤¦©¬¯²¶º¿ÃÈÍÒ×ÜßâäææäâßÛÖÐÊÄ¿ºµ±®¬«ª«¬®°²µ¸»½ÀÃÅÇÉÊËÌÌÍÌÌÌËËÊÊÉÉÉÈÈÈÈÈÉÉÉÊÊÊÊpppppqrtvxz}
¢¥¨¬±µ»ÀÆËÐÕÚÝßááßÝÙÔÏɼ¶°«§¤¢¡¡¢¤¦©¬°´¸¼¿ÃÆÉÌÎÐÑÒÓÓÓÓÓÒÒÑÑÐÐÐÐÐÐÐÐÐÑÑÑÒÒjiijjklmoqsuwz|£§¬²¸¾ÄÊÏÔØÚÜÜÚØÓÎÈÁº³¬¦¡¡¥©®³¸½ÁÆÊÍÐÓÕ×ØÙÙÙÙÙÙØØ×××ÖÖÖÖÖ××××ØØeeeeefghiklnpsuwy{}
£©¯¶¼ÃÈÎÒÕ××ÕÒÍÇÀ¹±©¢¡§³¸¾ÃÈÍÑÕØÚÜÝÞßßÞÞÞÝÝÜÜÜÜÛÛÜÜÜÜÝÝÝ````aabcdeghjlnprsuwxz|~
§®µ¼ÂÈÌÐÑÑÐÌÇÁ¹±¨
¥¬²¹ÀÆËÑÕÙÜßáâããããââááààààßßßààààà]]]]]]^_`abcefhikmnoqrtvxz|¦®µ¼ÂÇÊÌÌÊÆÁº²©zvtstvy}¤¬³»ÂÉÏÔÙÝàãäæææææååääãããââââããããZZZZZ[[\\]^_abcdfghiklmoqsux|
§¯¶¼ÁÅÇÇÅÁ»³«¡|uplihiknrw}£¬´½ÄÌÒØÝáäæèèééèèççæååäääääääääYXXXXYYYZ[[\]^_`abcdefgijloquy~¡©°·½ÀÂÂÀ¼µ¤
|slfb_^^`cglry¤®·¿ÈÏÖÛàäæèéêêêéèèçæåååääääääåWWWWWWWXXXYZZ[\]]^_`abcdegilosx~
¤¬²¸¼¾¾¼·°¨~tkc]XUTTUX\ahov¦°ºÃËÓÙÞãæèêêêêêéèçæååääääääääVVVVVVVVWWWXXYYZ[[\]]^_`acegkosy§®´¸ºº·³¬£wmd\UPMKKLOSX^emu©´½ÇÏÖÜáåèéêêêéèçæåääããâââââãUUUUUUUUUVVVWWWXXYYZZ[\]^_adgkou|¤«±µ··´¯¨}rg]UNIFDCDGJOU\dmv¢¸ÂËÓÚßãæèéééèçæåäãâááàààààáTTTTTTTUUUUUVVVWWWXXXYZZ[]_adhlry¡¨®²´´±«¤
ymbXPIC@>=>@CGMT[dny§³½ÇÏ×ÝáäæçèççåäãâáàßßÞÞÞÞÞÞTTTTTTTTTTTUUUUUVVVWWWXYZ[]_bfjpv~¦¬°²±®©¡ui^TKD?;888:=AFMT]gr}¢®¹ÃÌÔÚßãåæææåäâáàÞÝÝÜÜÜÛÛÜÜTTTTTTTTTTTTTTTUUUUUVVVWXY[]`dhnt|¤ª®°¯¬§rf[QHA;753458<AGNWalw©µ¿ÉÑØÝàãäääãâàßÝÜÛÚÚÙÙÙÙÙÙTTTTSSSSSSTTTTTTTTTUUUVVWXZ\_bgmsz£¨®®«¥|pdYNF>84100147<BIR\fr¥±¼ÆÏÕÛÞáâââáàÞÝÛÚÙØØ××××××TTTTSSSSSSSSSTTTTTTTTUUVVXY[^bflry¢¨¬®ª¤{ocWMD=72/../149?FNXcn{¢®ºÄÌÓÙÝßááàßÞÜÛÙØ×ÖÕÕÔÔÔÔÔTTSSSSSSSSSSSSSSTTTTTTUUVWY[^afkry¡§«©¤{nbWLC;51.,,-/26<CKU`lx
¬¸ÂËÒ×ÛÞßßßÞÜÚÙ×ÖÕÔÓÓÓÒÒÒÒTTSSSSSSSSSSSSSSSTTTTTUUVWY[]afkry¡§«¬©¤{nbVLC;50-++,.15;AJS^jw«¶ÁÉÑÖÚÜÞÞÝÜÚÙ×ÖÕÓÓÒÑÑÑÑÑÑTTSSSSSSSSSSSSSSSSSSTTTUVWXZ]aekqy¡§«ª¤{ocWMD<61.,+,-05:AJS^jv«¶ÀÉÐÕÙÛÜÜÜÛÙ×ÖÔÓÒÑÐÐÐÏÏÏÏTTSSSSSSSSSSSSSSSSSSSTTTUVXZ]aekqy¢¨¬®ª¥}pdYNE=72/-,-.16;BJT_jw«¶ÀÉÏÕØÚÛÛÛÙØÖÕÓÒÑÐÏÏÎÎÎÎÎTSSSSSSSSSSSSSSSSSSSSTTTUVXZ]aekqy¢¨¯¯¬§sg[QG@941/..038=DLVamy ¬·ÁÉÐÔØÚÛÛÚØ×ÕÔÒÑÐÏÎÎÎÎÍÍÍTSSSSSSSSSSSSSSSSSSSSTTTUVXZ]aekry£©®°°®©¡vj_TKC<7421136;@GOYdo|¢®¸ÂÉÐÔØÙÚÚÙØÖÔÓÑÐÏÏÎÎÍÍÍÍÍTSSSSSSSSSSSSSSSSSSSSTTTUVXZ]afkry¤ª¯²²°«¤zncYOGA<86568;?ELT^ht¥°ºÃÊÐÕ×ÙÙÙØ×ÕÔÒÑÐÏÎÍÍÍÍÌÌÌTSSSSSSSSSSSSSSSSSSSTTTUVWXZ]aflrz¥«±´´³®¨ ti^UMGA><;;=@EJRZcny
¨³½ÅÌÑÕØÙÙØ×ÖÔÓÑÐÏÎÍÍÍÌÌÌÌÌTSSSSSSSSSSSSSSSSTTTTTTUVWY[^aflsz¦²¶·¶²¬¤
zoe\TMHEBBBDGLQXajt¢¬¶¿ÇÍÒÕØÙÙØ×ÕÔÒÑÐÏÎÍÍÌÌÌÌÌÌTTTSSSSSSSSSSTTTTTTTTTUUVWY[^bgms{§¯´¸º¹¶±ª¡wmd\VQMKJKLPTZair|§±ºÂÉÏÓÖ×ØØ×ÖÕÓÒÐÏÎÎÍÍÌÌÌÌÌÌTTTTTTTTTTTTTTTTTTTTTUUVWXY\_cgmt|
©±·»½½º¶¯§vmf_ZWTSTVY]cjrz¢¬µ¾ÅËÐÔÖØØØ×ÕÔÓÑÐÏÎÍÍÌÌÌÌÌÌÌTTTTTTTTTTTTTTTUUUUUUUVVWYZ]`chnu}¢«²¹¾ÀÁ¿»µ®¥wpjea_^_adhmt{©²ºÁÈÍÑÔÖ×××ÖÕÓÒÑÏÎÎÍÍÌÌÌÌÌÍÍUUUTTTUUUUUUUUUUUVVVVVWWXZ[^aejov~¤µ¼ÁÄÅÄÁ¼µ¥{uqmkjklosy§¯·¾ÅËÏÒÕÖ××ÖÕÔÒÑÐÏÎÍÌÌÌÌÌÌÌÌÍUUUUUUUUUVVVVVVVVWWWWWXYY[]_bfkqx¥¯·¾ÄÇÉÈƼµ®¥}zxwwy|¦®µ¼ÃÈÍÑÓÕÖÖÖÕÔÓÑÐÏÎÍÍÌÌÌÌÌÌÌÌÍVVVVVVVWWWWWWXXXXXXYYYZZ[]^adhmsz¨±ºÁÇËÍÍÌÈľ·¯¨
¡¨¯µ¼ÁÇËÏÒÔÕÖÖÕÔÓÒÑÐÏÎÍÌÌÌÌÌÌÌÍÍÍXXXXXXXXXYYYYYZZZZ[[[[\]^_acgkpv}
¡ª´¼ÄÊÎÑÒÑÏËÅ¿¹²¬¦ ¥«°¶¼ÁÆÊÎÑÓÔÕÕÕÔÓÒÑÐÏÎÍÍÌÌÌÌÌÌÌÍÍÍZZZZZZZZ[[[\\\\]]]]^^^_`abdgjnsy¤·¿ÇÍÒÕÖÖÔÑÍǼ¶±¬§¤¡ ¢¤§«¯´¸½ÂÆÊÍÐÒÓÔÕÕÔÓÒÑÐÏÎÎÍÌÌÌÌÌÌÌÌÍÍÍ\\\\]]]]^^^__```aaabbbcdefhknrw}§±ºÂÊÐÕØÚÚÙ×ÓÏÊÅÀ»·³°¬««¬¯²µ¸¼¿ÃÇÊÍÏÑÓÔÔÔÔÓÒÑÐÏÎÎÍÌÌÌÌÌÌÌÌÌÍÍÍ__````aaabbccddeefffgghijkmpsw|¢«´½ÅÍÓØÛÝÞÝÛÙÕÑÍÈÄÀ½º¸·¶¶¶·¹»½ÀÃÅÈËÍÏÑÒÓÔÔÓÓÒÑÐÐÏÎÍÍÌÌÌÌÌÌÌÌÍÍÍÎcddddeeffgghiijjkkllmmnopqsvy}§°¸ÁÉÐÖÛÞáááàÝÛ×ÔÐÍÉÆÄÂÁÀÀÀÀÂÃÅÇÈÊÌÎÐÑÒÓÓÓÓÒÒÑÐÏÏÎÍÍÌÌÌËËËÌÌÌÍÍÍÎiiiijjkklmnnoppqrrssttuvwxz}¤¬´½ÅÌÓÙÞáãääãáßÜÙÖÓÐÎÌÊÉÈÈÈÈÉÉËÌÍÎÐÑÑÒÓÓÓÓÒÒÑÐÏÏÎÍÍÌÌËËËËËËÌÌÌÍÍÍoooppqrrstuvwwxyzz{{||}~
£ª²ºÂÉÐÖÜàãåææåäâàÝÛØÖÔÒÐÏÎÎÎÎÎÏÏÐÐÑÒÒÓÓÓÓÒÒÑÑÐÏÏÎÍÍÌÌËËËËËËËÌÌÌÍÍÍvvwwxyyz{|}~
¤ª±¸ÀÇÎÔÚÞâåæçççæäâàÞÜÚØ×ÕÔÓÓÒÒÒÒÒÒÓÓÓÓÓÓÓÒÒÑÐÐÏÎÎÍÍÌÌËËËËËËËËÌÌÌÍÍÍ~
¢§¬²¹¿ÆÌÒØÝáäæèèèèæåãâàÞÝÛÚÙØ×ÖÖÕÕÕÔÔÔÔÔÓÓÒÒÑÑÐÐÏÎÎÍÍÌÌËËËËËËËËËÌÌÌÌÍÍ ¢¥¨¬°µºÀÆÌÑÖÛßãåçèèèçæåãâàßÞÜÛÚÙØØ××ÖÖÕÕÔÔÓÓÒÒÑÑÐÏÏÎÍÍÌÌÌËËËËËËËËËËËÌÌÌÌÍ ¡¢£¤¥¥¦§§¨ª«°²¶º¾ÃÇÍÒÖÛßâåçèèèèçæåãâàßÞÝÜÛÚÙÙØ××ÖÖÕÔÔÓÒÒÑÐÐÏÎÎÍÍÌÌÌËËËËËËËËËËËËËÌÌÌÍ ¢£¤¥¦¨©ª«¬®¯°°±²²³µ¶¸º¼¿ÃÇËÏÓ×ÛßâåæèèèèçæåãâáßÞÝÜÛÚÚÙØØ×ÖÖÕÔÔÓÒÒÑÐÐÏÎÎÍÍÌÌÌËËËËËËËËËËËËËËËÌĮ̀¨©ª«¬®¯°²³´¶·¸¹ºº»¼¼½¾¾¿ÁÂÄÆÉÌÏÒÖÙÝàãåçèééèçæåãâáßÞÝÜÛÚÙÙØØ×ÖÖÕÔÔÓÒÒÑÐÐÏÎÎÍÍÌÌÌËËËËËËËËËËËËËËËËÌÌ̳´´µ¶·¸¹º¼½¾¿ÁÂÃÄÄÅÆÆÇÇÈÉÊËÌÎÐÒÔ×ÚÜßâäæèééééèçåãâàßÝÜÛÚÙÙØØ×ÖÖÕÕÔÓÓÒÑÑÐÏÏÎÎÍÍÍÌÌÌÌËËËËËËËËËËËËËËËËË̾¿¿ÀÁÂÃÄÅÆÇÉÊËÌÍÎÎÏÐÐÑÑÒÒÓÔÕ×ØÚÜÞàãåçèêêëëêéçæäâàßÝÜÚÙØØ×ÖÖÕÕÔÔÓÓÒÑÑÐÐÏÏÎÎÍÍÌÌÌÌÌËËËËËËËËËËËËËËËËÌÌÌÉÉÊÊËÌÍÎÏÐÑÒÓÔÕÖ×ØØÙÙÚÚÛÛÜÝÝßàáãäæèéëìììììêéçåãáßÝÛÚÙØ×ÖÕÕÔÔÓÓÓÒÒÑÑÐÏÏÎÎÎÍÍÌÌÌÌÌËËËËËËËËËËËËËËËËËÌÌÌÒÓÓÔÕÕÖ×ØÙÚÛÜÝÞßßààááâââããäåææèéêëìíîïïîîìëéçäâàÞÜÚØ×ÖÕÔÔÓÓÒÒÒÑÑÐÐÐÏÏÎÎÎÍÍÍÌÌÌÌËËËËËËËËËËËËËËËËÌÌÌÌÌÛÜÜÝÝÞßßàáâãääåææççèèèéééêêëëìíîïïðññññðïíëéçäáßÝÚÙ×ÖÔÔÓÒÒÑÑÑÐÐÐÏÏÏÎÎÎÍÍÍÍÌÌÌÌÌÌËËËËËËËËËËËËÌÌÌÌÌÌÌÌãããääåææçèèéêëëììíííîîîîïïïððññòóóóôôóòñðîìéæäáÞÜÚØÖÔÓÒÑÑÐÐÐÏÏÏÏÏÎÎÎÎÍÍÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌééêêëëììííîïïððñññòòòóóóóóôôôõõõöööööõôòñïìéæäáÞÛÙ×ÕÓÒÑÐÐÏÏÏÏÎÎÎÎÎÍÍÍÍÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌïïïðððññòòòóóôôõõõõöööööö÷÷÷÷÷øøøøøø÷öõóñïìéæãàÝÛØÖÔÓÑÐÐÏÏÎÎÎÎÎÍÍÍÍÍÍÍÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌóóóôôôõõõööö÷÷÷øøøøùùùùùùùùúúúúúúúùùø÷öôòïíêçãàÝÛØÖÔÒÑÐÏÎÎÎÍÍÍÍÍÍÍÍÍÍÍÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÍÍÍÍÍÌÌÌÌÌ
\ No newline at end of file
Index: milena/sandbox/abraham/morpho/images/test_4.pgm
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: milena/sandbox/abraham/morpho/images/test_4.pgm
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Index: milena/sandbox/abraham/morpho/tikz.h
--- milena/sandbox/abraham/morpho/tikz.h (revision 0)
+++ milena/sandbox/abraham/morpho/tikz.h (revision 0)
@@ -0,0 +1,37 @@
+#ifndef TIKZ_H
+# define TIKZ_H
+
+#include <fstream>
+
+namespace mln {
+ namespace io {
+ namespace tikz {
+
+ template <typename I>
+ void save (const Image<I>& input, std::string filename)
+ {
+ const I& ima = exact(input);
+
+ std::ofstream file(filename.c_str());
+ file << "\\begin{tikzpicture}" << std::endl;
+ file << "\\tikzstyle{every node}=[draw,shape=rectangle, minimum width=1cm,
minimum height=1cm]" << std::endl;
+
+ typename I::fwd_piter p(ima.domain());
+
+ int i = 0;
+
+ for_all(p)
+ file << "\\path " << p.to_point() <<
"node[fill=black!" << ((255 - ima(p)) * 100) / 255 << "]
(p_" << i++ << ") { \\scriptsize "
+ << ((ima(p) < 127)?("\\color{white}"):("")) <<
ima(p) << "};" << std::endl;
+
+ file << "\\end{tikzpicture}" << std::endl;
+ }
+
+ } // namespace tikz
+ } // namespace io
+} // namespace mln
+
+
+
+
+#endif // !TIKZ_H
Index: milena/sandbox/abraham/morpho/test_watershed.cc
--- milena/sandbox/abraham/morpho/test_watershed.cc (revision 1887)
+++ milena/sandbox/abraham/morpho/test_watershed.cc (working copy)
@@ -13,6 +13,8 @@
#include <string>
#include <iostream>
+#include "tikz.h"
+
int print_and_exit (std::string s)
{
std::cerr << s << std::endl;
@@ -26,15 +28,41 @@
typedef image2d<int_u8> image2dint;
- image2dint input, mverif;
+ image2dint input, mverif, wverif;
+
+ #define TEST
+
io::pgm::load(input, "./images/test_watershed.pgm");
- // io::pgm::load(input, "./images/lena.pgm");
+ // io::pgm::load(input, "./images/test_3.pgm");
+ // io::pgm::load(input, "./images/lena_light.pgm");
io::pgm::load(mverif, "./images/result_m_watershed.pgm");
+ io::pgm::load(wverif, "./images/result_topo_watershed.pgm");
morpho::basic_najman< image2d<int_u8>, neighb2d> n(input, c4());
+
+ /*
+ image2dint::fwd_piter it(input.domain());
+ for_all(it)
+ {
+ input(it) = input(it)/17;
+ mverif(it) = mverif(it)/17;
+ }
+ */
+
+ io::tikz::save(input, "start.tex");
+
+ std::cout << "Building Component tree..." << std::endl;
+
n.go();
+
+ std::cout << "M-Watershed" << std::endl;
+
n.m_watershed();
+ io::tikz::save(n.pima, "step.tex");
+
+#ifdef TEST
+
bool equal = true;
equal = n.pima == mverif;
@@ -47,7 +75,31 @@
else
std::cout << "M-Watershed good as chocolate ice cream" <<
std::endl;
- // n.w_watershed();
+#endif
+
+ std::cout << "W-watershed" << std::endl;
+
+ n.w_watershed();
+
+ // for_all(it)
+ // n.pima(it) = n.pima(it) * 17;
+
+
+#ifdef TEST
+ equal = n.pima == wverif;
+
+ if (!equal)
+ {
+ std::cout << "W-Watershed broken" << std::endl;
+ return 1;
+ }
+ else
+ std::cout << "W-Watershed good as chocolate ice cream" <<
std::endl;
+#endif
+
+ io::tikz::save(n.pima, "end.tex");
+
+ // n.image_output(n.pima);
io::pgm::save(n.pima, "out.pgm");
Index: milena/sandbox/abraham/morpho/Makefile
--- milena/sandbox/abraham/morpho/Makefile (revision 1887)
+++ milena/sandbox/abraham/morpho/Makefile (working copy)
@@ -11,6 +11,6 @@
all: tree
-test_watershed.o: basic_najman.hh
+test_watershed.o: basic_najman.hh tikz.h
test_component_tree.o: basic_najman.hh
test.o: basic_najman.hh
\ No newline at end of file