diff --git a/Article/Expe_auto/bsNew.png b/Article/Expe_auto/bsNew.png deleted file mode 100644 index 8311feb0685ab1d59f68f7f1db80d4371e6c574f..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/bsNew.png and /dev/null differ diff --git a/Article/Expe_auto/bsOld.png b/Article/Expe_auto/bsOld.png deleted file mode 100644 index 95f8a8d80f7a304c476fc54346520715de6385a5..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/bsOld.png and /dev/null differ diff --git a/Article/Expe_auto/buro.png b/Article/Expe_auto/buro.png deleted file mode 100755 index b3aa23a4ff700d29efcabcbbb50a917c9fdb5ea0..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/buro.png and /dev/null differ diff --git a/Article/Expe_auto/buroDetail.png b/Article/Expe_auto/buroDetail.png deleted file mode 100755 index a73b1a1656de95efb0a570af8c14c7676d50169a..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/buroDetail.png and /dev/null differ diff --git a/Article/Expe_auto/cannyTable.tex b/Article/Expe_auto/cannyTable.tex deleted file mode 100644 index bb2f214ae13ffe3c50c551b35f5371fc9c068d3b..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/cannyTable.tex +++ /dev/null @@ -1,14 +0,0 @@ -\begin{tabular}{|l||r|r|r|r|r|} -\hline -Measure $M$ & \multicolumn{1}{c|}{$T$ (ms)} & \multicolumn{1}{c|}{$C$} -& \multicolumn{1}{c|}{$N$} -& \multicolumn{1}{c|}{$L$} & \multicolumn{1}{c|}{$L/N$} \\ -\hline -Canny -& 75.4 $\pm$ 11.7 & 60.6 $\pm$ 10.6 -& 466 $\pm$ 138 & 17678 $\pm$ 4419 & 39.5 $\pm$ 10.2 \\ -Ours -& 83.2 $\pm$ 20.1 & 61.5 $\pm$ 10.8 -& 613 $\pm$ 140 & 20769 $\pm$ 4000 & 34.6 $\pm$ 5.4 \\ -\hline -\end{tabular} diff --git a/Article/Expe_auto/coloredNew.png b/Article/Expe_auto/coloredNew.png deleted file mode 100644 index 76e163c45f9a4411ce309a24a0d1ce24c300b59f..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/coloredNew.png and /dev/null differ diff --git a/Article/Expe_auto/coloredOld.png b/Article/Expe_auto/coloredOld.png deleted file mode 100644 index afedf2807e2064a97870fe63031151f04c3e54f9..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/coloredOld.png and /dev/null differ diff --git a/Article/Expe_auto/dssDetailNew.png b/Article/Expe_auto/dssDetailNew.png deleted file mode 100644 index 2313b7fc473548728e6c26c69086384d2f78bb27..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/dssDetailNew.png and /dev/null differ diff --git a/Article/Expe_auto/dssDetailOld.png b/Article/Expe_auto/dssDetailOld.png deleted file mode 100644 index 56349908259b4ba57287220f5182119ea04153c1..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/dssDetailOld.png and /dev/null differ diff --git a/Article/Expe_auto/dssNew.png b/Article/Expe_auto/dssNew.png deleted file mode 100644 index 9cd53b790d1513e289413b7bfb9437e37787e579..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/dssNew.png and /dev/null differ diff --git a/Article/Expe_auto/dssOld.png b/Article/Expe_auto/dssOld.png deleted file mode 100644 index 9cfe50a24cf1c84b3918212c26cb435706e88ff3..0000000000000000000000000000000000000000 Binary files a/Article/Expe_auto/dssOld.png and /dev/null differ diff --git a/Article/Expe_auto/perfTable.tex b/Article/Expe_auto/perfTable.tex deleted file mode 100644 index decd46a58d983bcc5e24cc0ddc7da2f7b9593be9..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perfTable.tex +++ /dev/null @@ -1,20 +0,0 @@ -\begin{tabular}{|l||r|r|r|r|} -\hline -Measure $M$ & \multicolumn{1}{c|}{$T$} & \multicolumn{1}{c|}{$N$} -& \multicolumn{1}{c|}{$L$} & \multicolumn{1}{c|}{$W$} \\ -\hline -$M_{old}$ on image of \RefFig{fig:auto} -& 29.51 ms & 306 segments & 38.58 pixels & 2.47 pixels \\ -$M_{new}$ on image of \RefFig{fig:auto} -& 25.85 ms & 352 segments & 33.25 pixels & 2.17 pixels \\ -\hline \hline -$M_{new}/M_{old}$ (\%) & & & & \\ -\hspace{0.4cm} on image of \RefFig{fig:auto} -& \multicolumn{1}{l|}{87.60} & \multicolumn{1}{l|}{115.03} -& \multicolumn{1}{l|}{86.18} & \multicolumn{1}{l|}{87.85} \\ -\hspace{0.4cm} on the set of test images -& 85.47 $\pm$ 2.16 & 108.19 $\pm$ 4.86 & 91.23 $\pm$ 3.63 & 86.18 $\pm$ 3.88 \\ -\hspace{0.4cm} on CannyLines images -& 86.02 $\pm$ 2.44 & 110.15 $\pm$ 6.51 & 89.23 $\pm$ 5.11 & 84.70 $\pm$ 2.98 \\ -\hline -\end{tabular} diff --git a/Article/Expe_auto/perf_buro.txt b/Article/Expe_auto/perf_buro.txt deleted file mode 100644 index 52280913a4b139f22a1bbec586912f708e2eef3f..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_buro.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -800 -533 -2.58545 -914 -352 -94 -33.2509 -2.17087 -2.21914 -2.95147 -851 -306 -85 -38.5787 -2.47154 -2.46201 diff --git a/Article/Expe_auto/perf_indoor01.txt b/Article/Expe_auto/perf_indoor01.txt deleted file mode 100644 index 3e91f64fe58143a91e16c4ea76cc3db166f2b74e..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor01.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -5.55119 -2323 -834 -178 -28.8666 -2.18444 -2.32847 -6.5528 -2279 -786 -176 -30.9693 -2.60664 -2.705 diff --git a/Article/Expe_auto/perf_indoor02.txt b/Article/Expe_auto/perf_indoor02.txt deleted file mode 100644 index 045b632e7f6091486fe39f83102b3fb6005d410f..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor02.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.80259 -1498 -540 -154 -37.068 -1.84411 -1.88157 -4.4721 -1455 -460 -157 -43.7546 -2.25229 -2.27455 diff --git a/Article/Expe_auto/perf_indoor03.txt b/Article/Expe_auto/perf_indoor03.txt deleted file mode 100644 index feb842c3622a7585cd76cc95b041f4f5fea6d70f..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor03.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.61507 -1490 -544 -89 -28.1896 -2.15282 -2.19388 -4.21664 -1427 -497 -99 -30.912 -2.56824 -2.61858 diff --git a/Article/Expe_auto/perf_indoor04.txt b/Article/Expe_auto/perf_indoor04.txt deleted file mode 100644 index dac2c2c5fb24953c47ba18faf63a0e837d1d8fe8..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor04.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -1.96869 -734 -251 -85 -43.1107 -2.02305 -2.07427 -2.30199 -730 -205 -83 -54.239 -2.32858 -2.3503 diff --git a/Article/Expe_auto/perf_indoor05.txt b/Article/Expe_auto/perf_indoor05.txt deleted file mode 100644 index 21678296ff433af6fdd33e79bf8957b368a395e4..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor05.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.90785 -1594 -649 -110 -25.5561 -2.16213 -2.17938 -4.70566 -1554 -604 -134 -28.002 -2.4826 -2.50369 diff --git a/Article/Expe_auto/perf_indoor06.txt b/Article/Expe_auto/perf_indoor06.txt deleted file mode 100644 index b85532b1345585d5c92cc9f6ace1c4f1de36ebc1..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor06.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.64825 -1234 -500 -168 -43.8536 -1.78707 -1.7937 -4.36547 -1248 -394 -174 -55.1621 -2.09328 -2.01921 diff --git a/Article/Expe_auto/perf_indoor07.txt b/Article/Expe_auto/perf_indoor07.txt deleted file mode 100644 index 8202eee8529805662d9c5fe4e17cda972a85827a..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor07.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -4.05357 -1470 -520 -142 -38.5894 -2.07342 -2.11269 -4.6441 -1333 -440 -134 -47.63 -2.49047 -2.55303 diff --git a/Article/Expe_auto/perf_indoor08.txt b/Article/Expe_auto/perf_indoor08.txt deleted file mode 100644 index 3e88308b9f68678e118cdbc1ce320a84445087a2..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor08.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -4.87889 -2141 -764 -106 -24.1643 -2.3129 -2.33964 -5.74342 -2146 -715 -117 -25.6504 -2.74824 -2.84597 diff --git a/Article/Expe_auto/perf_indoor09.txt b/Article/Expe_auto/perf_indoor09.txt deleted file mode 100644 index 1221db9407eceb90c63876fb9be39dca54bec62c..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor09.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -5.55145 -2335 -865 -149 -26.4754 -2.24392 -2.24859 -6.52401 -2295 -788 -146 -29.8719 -2.61334 -2.56096 diff --git a/Article/Expe_auto/perf_indoor10.txt b/Article/Expe_auto/perf_indoor10.txt deleted file mode 100644 index 70999a38648c26aab21a166fcf7082b24e9159e9..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_indoor10.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -2.06293 -772 -270 -93 -42.3207 -1.96 -1.95388 -2.58662 -777 -258 -88 -45.3709 -2.53972 -2.57716 diff --git a/Article/Expe_auto/perf_outdoor01.txt b/Article/Expe_auto/perf_outdoor01.txt deleted file mode 100644 index f3c8e82e77eb19aa578c34c44fd43f00fd1e551e..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor01.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -4.07407 -1619 -590 -120 -28.621 -2.13309 -2.1309 -4.87129 -1538 -540 -130 -31.9144 -2.57515 -2.59164 diff --git a/Article/Expe_auto/perf_outdoor02.txt b/Article/Expe_auto/perf_outdoor02.txt deleted file mode 100644 index 2a813a519c0feb7a04c06644e852dd5780c6ff2f..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor02.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -5.944 -3000 -964 -99 -17.5359 -2.50626 -2.48442 -6.6842 -2917 -904 -112 -19.1165 -2.78864 -2.82444 diff --git a/Article/Expe_auto/perf_outdoor03.txt b/Article/Expe_auto/perf_outdoor03.txt deleted file mode 100644 index 0504c6d469f59f9d922e8fde93b0e6e23a0fbe80..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor03.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.98861 -2018 -615 -56 -18.6491 -2.38418 -2.35207 -4.49043 -1951 -591 -54 -19.9451 -2.81475 -2.83261 diff --git a/Article/Expe_auto/perf_outdoor04.txt b/Article/Expe_auto/perf_outdoor04.txt deleted file mode 100644 index 13bbc2038df5435e41a77122c7ec49d9518937ce..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor04.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -4.86978 -2471 -767 -88 -17.8296 -2.38793 -2.39488 -5.46851 -2356 -726 -99 -19.9373 -2.80044 -2.89292 diff --git a/Article/Expe_auto/perf_outdoor05.txt b/Article/Expe_auto/perf_outdoor05.txt deleted file mode 100644 index 6d475c93fe378cc43fe7428a01703127188c5377..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor05.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.09307 -1404 -496 -78 -23.7321 -2.33562 -2.53464 -3.49671 -1349 -436 -83 -27.5756 -2.71522 -2.86789 diff --git a/Article/Expe_auto/perf_outdoor06.txt b/Article/Expe_auto/perf_outdoor06.txt deleted file mode 100644 index e84f583fea14383958229088a1fee30f21c158b7..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor06.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -6.80802 -3549 -1044 -75 -17.3937 -2.42717 -2.32804 -7.609 -3441 -1054 -94 -17.5495 -2.78552 -2.85436 diff --git a/Article/Expe_auto/perf_outdoor07.txt b/Article/Expe_auto/perf_outdoor07.txt deleted file mode 100644 index ace6ab181a990b84007a89e15e0a0b0b1086c0db..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor07.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -6.41568 -2790 -1029 -150 -24.6812 -2.30869 -2.64853 -7.34472 -2529 -916 -180 -29.1043 -2.67184 -2.81002 diff --git a/Article/Expe_auto/perf_outdoor08.txt b/Article/Expe_auto/perf_outdoor08.txt deleted file mode 100644 index eb3cb8ba9d8e488d98a68bba07af14430bfffdf2..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor08.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -6.90651 -3248 -1037 -168 -24.014 -2.37173 -2.45299 -7.78974 -3115 -963 -187 -25.699 -2.77951 -2.91742 diff --git a/Article/Expe_auto/perf_outdoor09.txt b/Article/Expe_auto/perf_outdoor09.txt deleted file mode 100644 index f337357ede81efaa5ffa659ac16423a68b8c834d..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor09.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.77171 -1734 -571 -113 -27.3691 -1.93375 -1.87111 -4.37652 -1648 -523 -114 -31.0221 -2.46606 -2.43659 diff --git a/Article/Expe_auto/perf_outdoor10.txt b/Article/Expe_auto/perf_outdoor10.txt deleted file mode 100644 index 3733e88c6ea237faa4e3005b4740255cfd2fdae3..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/perf_outdoor10.txt +++ /dev/null @@ -1,17 +0,0 @@ -100 -640 -480 -3.82884 -1576 -648 -82 -22.4578 -2.41069 -2.47638 -4.49443 -1535 -610 -94 -24.359 -2.71668 -2.86795 diff --git a/Article/Expe_auto/readme.txt b/Article/Expe_auto/readme.txt deleted file mode 100644 index 058065687e348f1595e4426a7df011b774c13865..0000000000000000000000000000000000000000 --- a/Article/Expe_auto/readme.txt +++ /dev/null @@ -1,36 +0,0 @@ -Seg ../buro.png -20 y pour obtenir un niveau de fond d'ecran a 100 -m pour une detection m -! pour un affichage sombre -m pour une detection multiple avec le nouveau detecteur -p pour recuperer la capture (capture.png -> coloredNew.png) -6 pour une detection multiple avec l'ancien detecteur -p pour recuperer la capture (capture.png -> coloredOld.png) -= pour remplacer les couleurs aleatoires par du noir -p pour recuperer la capture (capture.png -> bsOld.png) -6 pour une detection multiple avec le nouveau detecteur -p pour recuperer la capture (capture.png -> bsNew.png) -Ctrl y - Ctrl u pour afficher les segments englobants -p pour recuperer la capture (capture.png -> dssNew.png) -6 pour une detection multiple avec l'ancien detecteur -p pour recuperer la capture (capture.png -> dssOld.png) -8 pour un test de performance (perf.txt -> perf_buro.txt) -cp dssNew.png dssDetailNew.png -Selectionner la zone (544, 512) (742, 448) -cp dssOld.png dssDetailOld.png -Selectionner la zone (544, 512) (742, 448) - -Contenu de perf_buro.txt -- Nombre de detections multiples -- Largeur d'image -- Hauteur d'image -puis avec le nouveau detecteur -- Temps d'execution -- Nombre de minimum locaux testes -- Nombre de segments flous detectes -- Nombre de segments d'extension > 40 pixels -- Extension moyenne des segments flous detectes -- Largeur moyenne des segments flous detectes -- Largeur moyenne des segments flous longs (> 40 pixels) detectes -puis pareil avec l'ancien detecteur - diff --git a/Article/Expe_hard/hardDetailNew.png b/Article/Expe_hard/hardDetailNew.png deleted file mode 100644 index 4ee88ca837b9a94a69421daca4fb654b9cdcbcd9..0000000000000000000000000000000000000000 Binary files a/Article/Expe_hard/hardDetailNew.png and /dev/null differ diff --git a/Article/Expe_hard/hardDetailOld.png b/Article/Expe_hard/hardDetailOld.png deleted file mode 100644 index 2cb5c40a315583485993761372f7c536a02eb605..0000000000000000000000000000000000000000 Binary files a/Article/Expe_hard/hardDetailOld.png and /dev/null differ diff --git a/Article/Expe_hard/hardNew.png b/Article/Expe_hard/hardNew.png deleted file mode 100644 index 1f40affbb154e2abfe7676be82cec496d763cd33..0000000000000000000000000000000000000000 Binary files a/Article/Expe_hard/hardNew.png and /dev/null differ diff --git a/Article/Expe_hard/hardOld.png b/Article/Expe_hard/hardOld.png deleted file mode 100644 index 65f20b0d4a9f2ca176e05d95107279c2a0048661..0000000000000000000000000000000000000000 Binary files a/Article/Expe_hard/hardOld.png and /dev/null differ diff --git a/Article/Expe_hard/readme.txt b/Article/Expe_hard/readme.txt deleted file mode 100644 index 3ac1d6b5e8281ba85229bbf0930a4722060cda9c..0000000000000000000000000000000000000000 --- a/Article/Expe_hard/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Seg ../parpaings.gif -30 y : Met le fond d'ecran au niveau 150 -7 l : Out89put BS min size -> 12 (note qu'avec l = 16 c'est pas mal non plus) -m : detection auto avec le nouveau detecteur -! : affiche les segments en sombre -= : supprime les couleurs aleatoires (-> segments noirs) -p : sauve l'image capture.png -> ismm/Expe_hard/hardNew.png -6 : detection auto avec l'ancien detecteur -p : sauve l'image capture.png -> ismm/Expe_hard/hardOld.png - -Pour les images hardDetailNew.png et hardDetailOld.png, -selectionner le coin haut gauche de l'image depuis le -point (346, 140). diff --git a/Article/Fig_method/parpaings.png b/Article/Fig_method/parpaings.png deleted file mode 100644 index ac6716017d8dd3a3b6d1bde446140a7032de1386..0000000000000000000000000000000000000000 Binary files a/Article/Fig_method/parpaings.png and /dev/null differ diff --git a/Article/Fig_method/parpaings2.png b/Article/Fig_method/parpaings2.png deleted file mode 100644 index 70b3376d8d3a44aff8525a29581a5de8b26b13a2..0000000000000000000000000000000000000000 Binary files a/Article/Fig_method/parpaings2.png and /dev/null differ diff --git a/Article/Fig_method/parpaings3.png b/Article/Fig_method/parpaings3.png deleted file mode 100644 index a5844fe79faa96225bc829bc196d9d080e2a8275..0000000000000000000000000000000000000000 Binary files a/Article/Fig_method/parpaings3.png and /dev/null differ diff --git a/Article/Fig_method/plafondAuto.png b/Article/Fig_method/plafondAuto.png deleted file mode 100644 index ce9d50d33bcef3c0232dc25cfa134c5afbf1953d..0000000000000000000000000000000000000000 Binary files a/Article/Fig_method/plafondAuto.png and /dev/null differ diff --git a/Article/Fig_method/plafond_petit.png b/Article/Fig_method/plafond_petit.png deleted file mode 100755 index ca8499ffd8106085a21e07150bee48101f266997..0000000000000000000000000000000000000000 Binary files a/Article/Fig_method/plafond_petit.png and /dev/null differ diff --git a/Article/Fig_method/vcercle.png b/Article/Fig_method/vcercle.png deleted file mode 100644 index 5341e956c2d65b45c9de1f144c97898d3bdd1551..0000000000000000000000000000000000000000 Binary files a/Article/Fig_method/vcercle.png and /dev/null differ diff --git a/Article/Fig_method/vcercleAuto.png b/Article/Fig_method/vcercleAuto.png deleted file mode 100644 index d9f8f3298a45da931a9c02a4c4e72c15411c1081..0000000000000000000000000000000000000000 Binary files a/Article/Fig_method/vcercleAuto.png and /dev/null differ diff --git a/Article/expe.tex b/Article/expe.tex deleted file mode 100755 index 6b3fcd358d9a46be773bbf173e9b2cd20e45f6a0..0000000000000000000000000000000000000000 --- a/Article/expe.tex +++ /dev/null @@ -1,70 +0,0 @@ -\section{Experimental validation} - -\label{sec:expe} - -The main goal of this work is to provide straight segments with a quality -indication through the associated width parameter. -In lack of available reference tool, the evaluation stage mostly aims -at quantifying the advantages of the new detector compared to the previous -one in unsupervised context. -The process flow of the former method (initial detection followed by two -refinement steps) is integrated as an option into the code of the new -detector, so that both methods rely on the same optimized basic routines. -During all these experiments, only the blurred segment size and its -orientation compared to the initial stroke are tested at the end of -the initial detection, and only the segment size is tested at the end -of the fine tracking stage. -All other tests, sparsity or fragmentation, are disabled. -The segment minimal size is set to 5 pixels, except where precised. - -The first test compares the performance of both -detectors on a set of 1000 synthesized images containing 10 randomly -placed input segments with random width between 2 and 5 pixels. -The absolute value of the difference of each found segment to its -matched input segment is measured. -On these ground-truth image, the numerical error on the gradient extraction -biases the line width measures. This bias was first estimated using 1000 -images containing only one input segment (no possible interaction) -and the found value (1.4 pixel) was taken into account in the test. -\RefTab{tab:synth} shows -slightly better width and angle measurements for the new detector. -The new detector shows more precise, with a smaller amount of false -detections and succeeds in finding most of the input segments. - -%\begin{figure}[h] -%\center -% \begin{tabular}{ -% c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c} -% \includegraphics[width=0.19\textwidth]{Fig_synth/statsExample.png} & -% \includegraphics[width=0.19\textwidth]{Fig_synth/statsoldPoints.png} & -% \includegraphics[width=0.19\textwidth]{Fig_synth/statsoldBounds.png} & -% \includegraphics[width=0.19\textwidth]{Fig_synth/statsnewPoints.png} & -% \includegraphics[width=0.19\textwidth]{Fig_synth/statsnewBounds.png} -% \begin{picture}(1,1) -% \put(-310,0){a)} -% \put(-240,0){b)} -% \put(-170,0){c)} -% \put(-100,0){d)} -% \put(-30,0){e)} -% \end{picture} -% \end{tabular} -% \caption{Evaluation on synthesized images: -% a) one of the test images, -% b) output blurred segments from the old detector and -% c) their enclosing digital segments, -% d) output blurred segments from the new detector and -% e) their enclosing digital segments.} -% \label{fig:synth} -%\end{figure} -\begin{table} -\centering -\input{Fig_synth/statsTable} -\caption{Measured performance of both detectors on a set of synthesized images. -$S$ is the set of all the input segments, -$D$ the set of all the detected blurred segments.} -\label{tab:synth} -\end{table} - -\input{expeAuto} - -%\input{expeHard} diff --git a/Article/expeAuto.tex b/Article/expeAuto.tex deleted file mode 100755 index 48c6175c5714114d329acb260acafa11e8eea71c..0000000000000000000000000000000000000000 --- a/Article/expeAuto.tex +++ /dev/null @@ -1,81 +0,0 @@ -The next experiments aim at evaluating the performance of the new -detector with respect to the previous one on a test set composed of a -selection of 20 real images. -One of them is displayed on \RefFig{fig:auto}. -Compared measures $M$ are the execution time $T$, the amount $N$ of detected -blurred segments, their mean length $L$ and their mean width $W$. -For the sake of objectivity, these results are also compared to the same -measurements made on the 20 images data base used for the CannyLine line -segment detector \cite{LuAl15}. -\RefTab{tab:auto} gives the achieved results. -\begin{figure}[h] -%\center - \begin{tabular}{ - c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}} - \includegraphics[width=0.32\textwidth]{Expe_auto/buro.png} & -% \includegraphics[width=0.32\textwidth]{Expe_auto/coloredOld.png} & -% \includegraphics[width=0.32\textwidth]{Expe_auto/coloredNew.png} \\ - \includegraphics[width=0.32\textwidth]{Expe_auto/bsOld.png} & - \includegraphics[width=0.32\textwidth]{Expe_auto/bsNew.png} \\ - \includegraphics[width=0.22\textwidth]{Expe_auto/buroDetail.png} & - \includegraphics[width=0.22\textwidth]{Expe_auto/dssDetailOld.png} & - \includegraphics[width=0.22\textwidth]{Expe_auto/dssDetailNew.png} - \begin{picture}(1,1) - {\color{red}{ - \put(-19.5,31){\framebox(28,9)} - \put(-5.5,31){\vector(-2,-1){20}} - \put(-133.5,31){\framebox(28,9)} - \put(-117.5,31){\vector(-2,-1){20}} - \put(-247.5,31){\framebox(28,9)} - \put(-231.5,31){\vector(-2,-1){20}} - }} - {\color{dwhite}{ - \put(-291,32.5){\circle*{8}} - \put(-177,32.5){\circle*{8}} - \put(-63,32.5){\circle*{8}} - \put(-302,4.5){\circle*{8}} - \put(-188,4.5){\circle*{8}} - \put(-75,4.5){\circle*{8}} - }} - \put(-293.5,30){a} - \put(-179.5,30){b} - \put(-65.5,30){c} - \put(-305,2){d} - \put(-191,2){e} - \put(-77.5,2){f} - \end{picture} - \end{tabular} - \caption{Automatic detection on real images: - an input image (a), the segments found by the old detector (b) - and those found by the new detector (c), and a detail of the - image (d) and the enclosing digital segments for both old (e) - and new (f) detectors.} - \label{fig:auto} -\end{figure} -\begin{table} -\centering -\input{Expe_auto/perfTable} -\caption{Measured performance of both detectors on standard images. - $M_{old}$ (resp. $M_{new}$) denotes the measure obtained with - the previous (resp. new) detector.} -\label{tab:auto} -\end{table} - -The new detector is faster and finds more edges than the previous one. -Details of \RefFig{fig:auto} d) and e) illustrate achieved -accuracy improvements. -Output segments are thinner but also shorter. -The control of the assigned width to fit detected segment width -has the side effect of blocking the segment expansion when remote parts -are noisier. -Found edges are thus more fragmented. -The relevance of this behavior depends strongly on application requirements. -Therefore the control of the assigned width is left as an option, the user -can let or cancel it. -%In both case, it could be useful to combine the detector with a tool -%to merge aligned segments. - -%Although these observations in unsupervised context should be reproduced -%in supervised context, similar experiments require an application context -%to dispose of a ground truth and of real users to assess the detector -%relevance through ergonomy evaluations. diff --git a/Article/expeHard.tex b/Article/expeHard.tex deleted file mode 100755 index 4304047ccbb2fb9715f51ebde2592280d6418092..0000000000000000000000000000000000000000 --- a/Article/expeHard.tex +++ /dev/null @@ -1,33 +0,0 @@ -The last test visually compares the results of both detectors on very textured -images, also difficult to process for other detectors from the literature. -The minimal size parameter was raised to 12 pixels to reject small segments -considered as outliers. -On the example of \RefFig{fig:hard}, the new detector provides less residual -outliers and misaligned segments, and globally more relevant informations -to infere the structure of the brick wall. -\begin{figure} - \center - \begin{tabular}{ - c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}} - \includegraphics[width=0.205\textwidth]{Fig_method/parpaings.png} & - \includegraphics[width=0.32\textwidth]{Expe_hard/hardDetailOld.png} & - \includegraphics[width=0.32\textwidth]{Expe_hard/hardDetailNew.png} - \begin{picture}(1,1) - {\color{red}{ - \put(-302,34){\framebox(29,11.5)} - }} - {\color{dwhite}{ - \put(-266,4.5){\circle*{8}} - \put(-171,4.5){\circle*{8}} - \put(-58,4.5){\circle*{8}} - }} - \put(-268.5,2){a} - \put(-173.5,2){b} - \put(-60.5,2){c} - \end{picture} - \end{tabular} - \caption{Results on very textured images: test image (a), - detail (top left corner) on the segments found by the old - detector (b) and on those found by the new detector (c).} - \label{fig:hard} -\end{figure} diff --git a/Article/intro.tex b/Article/intro.tex deleted file mode 100755 index 4499fd50d086c666b2990870c9f717f835f689b1..0000000000000000000000000000000000000000 --- a/Article/intro.tex +++ /dev/null @@ -1,99 +0,0 @@ -\section{Introduction} - -\label{sec:intro} - -\subsection{Motivations} - -Straight line detection is a preliminary step of many image analysis -processes. -Therefore, it is always an active research topic centered on -the quest of still faster, more accurate or more robust-to-noise methods -\cite{AkinlarTopal12,GioiAl10,LuAl15,MatasAl00}. -However, they seldom provide an exploitable measure of the output line -quality, based on intrinsic properties such as sharpness, connectivity -or scattering. -%Some information may sometimes be drawn from their specific context, -%for example through an analysis of the peak in a Hough transform accumulator. - -Digital geometry is a research field where new mathematical definitions -of quite classical geometric objects, such as lines or circles, are introduced -to better fit to the discrete nature of most of todays data to process. -In particular, the notion of blurred segment \cite{Buzer07,DebledAl05} was -introduced to cope with the image noise or other sources of imperfections -from the real world by the mean of a width parameter. -Efficient algorithms have already been designed to recognize -these digital objects in binary images \cite{DebledAl06}. -Straight edges are rich visual features for 3D scene reconstruction from 2D -images. -A blurred segment seems well suited to reflect the required edge quality -information. -Its preimage, -i.e. the space of geometric entities which numerization matches this -blurred segment, may be used to compute some confidence level in the delivered -3D interpretations, as a promising extension of former works -on discrete epipolar geometry \cite{NatsumiAl08}. - -The present work aims at designing a flexible tool to detect blurred segments -with optimal width and orientation in gray-level images for as well -supervised as unsupervised contexts. -User-friendly solutions are sought, with ideally no parameter to set, -or at least quite few values with intuitive meaning. - -\subsection{Previous work} - -In a former paper \cite{KerautretEven09}, an efficient tool to detect -blurred segments of fixed width in gray-level images was already introduced. -It is based on a first rough detection in a local image area -defined by the user. The goal is to disclose the presence of a straight edge. -Therefore as simple a test as the gradient maximal value is performed. -In case of success, refinement steps are run through an exploration of -the image in the direction of the detected edge. -In order to prevent local disturbances such as the presence of a sharper -edge nearby, all the local gradient maxima are successively tested -untill a correct candidate with an acceptable gradient orientation is found. - -Only the gradient information is processed as it provides a good information -on the image dynamics, and hence the presence of edges. -Trials to also use the intensity signal were made through costly correlation -techniques, but they were mostly successful for detecting shapes with a -stable appearance such as metallic tubular objects \cite{AubryAl17}. - -Despite of good performances achieved, several drawbacks remain. -First, the blurred segment width is not measured but initially set by the -user according to the application requirements. The produced information -on the edge quality is rather poor, and especially when the edge is thin, -the risk to incorporate outlier points is quite high, thus producing a -biased estimation of the edge orientation. -Then, two refinement steps are systematically performed. -On the one hand, this is useless when the first detection is successfull. -On the other hand, there is no guarantee that this approach is able to -process larger images. -The search direction relies on the support vector of the blurred segment -detected at the former step. -Because the numerization rounding fixes a limit on this estimated orientation -accuracy, more steps are inevitably necessary to process larger images. - -\subsection{Main contributions} - -The present work aims at solving both former mentioned -drawbacks through two main contributions: -(i) the concept of {\bf adaptive directional scan} designed to get some -compliance to the unpredictable orientation problem; -(ii) the {\bf control of the assigned width} to the blurred segment -recognition algorithm, intended to derive more reliable information on the -edge orientation and quality. -As a side effect, these two major evolutions also led to a noticeable -improvement of the time performance of the detector. -They are also put forward within a global line extraction algorithm -which can be evaluated through an online demonstration at : -\href{http://ipol-geometry.loria.fr/~kerautre/ipol_demo/FBSD_IPOLDemo}{ -\small{\url{http://ipol-geometry.loria.fr/~kerautre/ipol_demo/FBSD_IPOLDemo}}} - -In the next section, the main theoretical notions are introduced. -The new detector workflow, the adaptive directional scan, the control -of the assigned width and their integration into both supervised and -unsupervised contexts are then presented in \RefSec{sec:method}. -Experiments led to assess the expected increase of performance are decribed -in \RefSec{sec:expe}. -Finally, achieved results are summarized in \RefSec{sec:conclusion}, -followed by some open perspectives for future works. diff --git a/Article/method.tex b/Article/method.tex deleted file mode 100755 index efa15402d4950edff6eb57ddc675f669ca940d0b..0000000000000000000000000000000000000000 --- a/Article/method.tex +++ /dev/null @@ -1,280 +0,0 @@ -\section{The detection method} - -\label{sec:method} - -\subsection{Workflow of the detection process} - -The workflow of the detection process is summerized in the following figure. - -\begin{figure}[h] -\center - \input{Fig_method/workflow} - \caption{The detection process main workflow.} - \label{fig:workflow} -\end{figure} - -The initial detection consists in building and extending a blurred segment -$\mathcal{B}$ based on points with highest norm gradient found in each scan -of a static directional scan defined by an input segment $AB$. - -Validity tests are then applied to decide of the detection pursuit. -They aim at rejecting too short or too sparse blurred segments, or -those with a close orientation to $AB$. -In case of positive response, the position $C$ and direction $\vec{D}$ -of this initial blurred segment are extracted. - -In the fine tracking step, another blurred segment $\mathcal{B}'$ is built -and extended with points that correspond to local maxima of the -image gradient, ranked by magnitude order, and with gradient direction -close to start point gradient direction. -At this refinement step, a control of the assigned width is applied -and an adaptive directional scan based on the found position $C$ and -direction $\vec{D}$ is used in order to extends the segment in the -appropriate direction. These two improvements are described in the -following sections. - -The output segment $\mathcal{B}'$ is finally tested according to the -application needs. Too short, too sparse or too fragmented segments -can be rejected. Length, sparsity or fragmentation thresholds are -intuitive parameters left at the end user disposal. -%None of these tests are activated for the experimental stage in order -%to put forward achievable performance. - -\subsection{Adaptive directional scan} - -The blurred segment is searched within a directional scan with a position -and an orientation approximately provided by the user, or blindly defined -in unsupervised mode. -Most of the time, the detection stops where the segment escapes sideways -from the scan strip (\RefFig{fig:escape} a). -A second search is then run using another directional scan aligned -on the detected segment (\RefFig{fig:escape} b). -In the given example, an outlier added to the initial segment leads to a -wrong orientation value. -But even in case of a correct detection, this estimated orientation is -subject to the numerization rounding, and the longer the real segment is, -the higher the probability gets to fail again on an escape from the scan strip. - -\begin{figure}[h] -\center - \begin{tabular}{c@{\hspace{0.2cm}}c@{\hspace{0.2cm}}c} - \includegraphics[width=0.24\textwidth]{Fig_notions/escapeLightFirst_half.png} & - \includegraphics[width=0.24\textwidth]{Fig_notions/escapeLightSecond_half.png} & - \includegraphics[width=0.48\textwidth]{Fig_notions/escapeLightThird_zoom.png} - \begin{picture}(1,1)(0,0) - {\color{dwhite}{ - \put(-307,4.5){\circle*{8}} - \put(-216,4.5){\circle*{8}} - \put(-127,4.5){\circle*{8}} - }} - \put(-309.5,2){a} - \put(-219,1.5){b} - \put(-129.5,2){c} - \end{picture} - \end{tabular} - \caption{Aborted detections on side escapes of static directional scans - and successful detection using an adaptive directional scan. - The last points added to the left of the blurred segment during - initial detection (a) lead to a bad estimation of its - orientation, and thus to an incomplete fine tracking with a - classical directional scan (b). An adaptive directional scan - instead of the static one allows to continue the segment - expansion as far as necessary (c). - Input selection is drawn in red color, scan strip bounds - in blue and detected blurred segments in green.} - \label{fig:escape} -\end{figure} - -To overcome this issue, in the former work, an additional refinement step is -run in the direction estimated from this longer segment. -It is enough to completely detect most of the tested edges, but certainly -not all, especially if big size images with much longer edges are processed. -As a solution, this operation could be itered as long as the blurred segment -escapes from the directional scan using as any fine detection steps as -necessary. -But at each iteration, already tested points are processed again, -thus producing a useless computational cost. - -Here the proposed solution is to dynamically align the scan direction on -the blurred segment all along the expansion stage. -At each iteration $i$ of the expansion, the scan strip is aligned on the -direction of the blurred segment $\mathcal{B}_{i-1}$ computed at previous -iteration $i-1$. -More generally, an adaptive directional scan $ADS$ is defined by: -\begin{equation} -ADS = \left\{ -S_i = \mathcal{D}_i \cap \mathcal{N}_i \cap \mathcal{I} -\left| \begin{array}{l} -\vec{V}(\mathcal{N}_i) \cdot \vec{V}(\mathcal{D}_0) = 0 \\ -\wedge~ h(\mathcal{N}_i) = h(\mathcal{N}_{i-1}) + p(\mathcal{D}_0) \\ -\wedge~ \mathcal{D}_{i} = \mathcal{D} (C_{i-1}, \vec{D}_{i-1}, w_{i-1}), -i > \lambda -\end{array} \right. \right\} -\end{equation} -where $C_{i}$, $\vec{D}_{i}$ and $w_{i}$ are respectively a position, -a director vector and a width observed at iteration $i$. -In the scope of the present detector, $C_{i-1}$ is the intersection of -the input selection and the central line of $\mathcal{B}_{i-1}$, -$\vec{D}_{i-1}$ the support vector of the enclosing digital segment -$E(\mathcal{B}_{i-1})$, and $w_{i-1}$ a value slightly greater than the -minimal width of $\mathcal{B}_{i-1}$. -So the last clause expresses the update of the scan bounds at iteration $i$. -Compared to static directional scans where the scan strip remains fixed to -the initial line $\mathcal{D}_0$, here the scan strip moves while -scan lines remain fixed. -This behavior ensures a complete detection of the blurred segment even when -the orientation of $\mathcal{D}_0$ is badly estimated (\RefFig{fig:escape} c). -In practice, it is started after $\lambda = 20$ iterations when the observed -direction becomes more stable. - -\subsection{Control of the assigned width} - -The assigned width $\varepsilon$ to the blurred segment recognition algorithm -is initially set to a large value $\varepsilon_0$ in order to allow the -detection of large blurred segments. -Then, when no more augmentation of the minimal width is observed after -$\tau$ iterations ($\mu_{i+\tau} = \mu_i$), it is set to a much -stricter value able to circumscribe the possible interpretations of the -segment, that take into account the digitization margins: -\begin{equation} -\varepsilon = \mu_{i+\tau} + \frac{\textstyle 1}{\textstyle 2} -\end{equation} -This strategy aims at preventing the incorporation of spurious outliers in -further parts of the segment. -Setting the observation distance to a constant value $\tau = 20$ seems -appropriate in most experimented situations. - -\subsection{Supervised blurred segments detection} - -In supervised context, the user draws an input stroke across the specific -edge that he wants to extract from the image. -The detection method previously described is continuously run during mouse -dragging and the output blurred segment is displayed on-the-fly. - -%The method is quite sensitive to the local conditions of the initial detection -%so that the output blurred segment may be quite unstable. -%In order to temper this undesirable behavior for interactive applications, -%the initial detection can be optionally run twice, the second fast scan being -%aligned on the first detection output. -%This strategy provides a first quick analysis of the local context before -%extracting the segment and contributes to notably stabilize the overall -%process. -% -%When selecting candidates for the fine detection stage, an option, called -%{\it edge selection mode}, is left to also filter the points according to -%their gradient direction. -%In {\it main edge selection mode}, only the points with a gradient vector -%in the same direction as the start point gradient vector are added to the -%blurred segment. -%In {\it opposite edge selection mode}, only the points with an opposite -%gradient vector direction are kept. -%In {\it line selection mode} this direction-based filter is not applied, -%and all the candidate points are aggregated into a same blurred segment, -%whatever the direction of their gradient vector. -%As illustrated on \RefFig{fig:edgeDir}, this mode allows the detection of -%the two opposite edges of a thin straight object. -% -%\begin{figure}[h] -%\center -% \begin{tabular}{c@{\hspace{0.2cm}}c} -% \includegraphics[width=0.4\textwidth]{Fig_method/selectLine_zoom.png} & -% \includegraphics[width=0.4\textwidth]{Fig_method/selectEdges_zoom.png} -% \end{tabular} -% \begin{picture}(1,1)(0,0) -% {\color{dwhite}{ -% \put(-220,-14.5){\circle*{8}} -% \put(-74,-14.5){\circle*{8}} -% }} -% \put(-222.5,-17){a} -% \put(-76.5,-17){b} -% \end{picture} -% \caption{Blurred segments obtained in \textit{line} or \textit{edge -% selection mode} as a result of the gradient direction filtering -% when adding points. -% In \textit{line selection mode} (a), a thick blurred segment is -% built and extended all along the brick join. -% In \textit{edge selection mode} (b), a thin blurred segment is -% built along one of the two join edges. -% Both join edges are detected with the \textit{multi-selection} -% option. -% On that very textured image, they are much shorter than the whole -% join detected in line selection mode. -% Blurred segment points are drawn in black color, and the enclosing -% straight segments in blue.} -% \label{fig:edgeDir} -%\end{figure} - -%\subsection{Multiple blurred segments detection} - -An option, called {\it multi-detection} (Algorithm 1), allows the -detection of all the segments crossed by the input stroke $AB$. -In order to avoid multiple detections of the same edge, an occupancy mask, -initially empty, collects the dilated points of all the blurred segments, -so that these points can not be added to another segment. -\input{Fig_method/algoMulti} - -First the positions $M_j$ of the prominent local maxima of the gradient -magnitude found under the stroke are sorted from the highest to the lowest. -For each of them the main detection process is run with three modifications: -\begin{enumerate} -\item the initial detection takes $M_j$ and the orthogonal direction -$\vec{AB}_\perp$ to the stroke as input to build a static scan of fixed width -$2~\varepsilon_{ini}$, and $M_j$ is used as start point of the blurred -segment; -\item the occupancy mask is filled in with the points of the dilated blurred -segments $\mathcal{B}_j'$ at the end of each successful detection -(a 21 pixels neighborhood is used); -\item points marked as occupied are rejected when selecting candidates for the -blurred segment extension in the fine tracking step. -\end{enumerate} - -%In edge selection mode (\RefFig{fig:edgeDir} b), the multi-detection -%algorithm is executed twice, first in main edge selection mode, then -%in opposite edge selection mode. - -\subsection{Automatic blurred segment detection} - -An unsupervised mode is also proposed to automatically detect all the -straight edges in the image. The principle of this automatic detection -is described in Algorithm 2. A stroke that crosses the whole image, is -swept in both directions, vertical then horizontal, from the center to -the borders. At each position, the multi-detection algorithm is run -to collect all the segments found under the stroke. -In the present work, the stroke sweeping step $\delta$ is set to 10 pixels. - -The automatic detection of blurred segments in a whole image is available -for testing from an online demonstration -and from a \textit{GitHub} source code repository: \\ -\href{https://github.com/evenp/FBSD}{ -\small{\url{https://github.com/evenp/FBSD}}} - -\input{Fig_method/algoAuto} - -%The behavior of the unsupervised detection is depicted through the two -%examples of \RefFig{fig:auto}. -%The example on the left shows the detection of thin straight objects on a -%circle with variable width. -%On the left half of the circumference, the distance between both edges -%exceeds the initial assigned width and a thick blurred segment is build -%for each of them. Of course, on a curve, a continuous thickenning is -%observed untill the blurred segment minimal width reaches the initial -%assigned width. -%On the right half, both edges are encompassed in a common blurred segment, -%and at the extreme right part of the circle, the few distant residual points -%are grouped to form a thick segment. -% -%The example on the right shows the limits of the edge detector on a picture -%with quite dense repartition of gradient. -%All the salient edges are well detected but they are surrounded by a lot -%of false detections, that rely on the presence of many local maxima of -%the gradient magnitude with similar orientations. -% -%\begin{figure}[h] -%\center -% \begin{tabular}{c@{\hspace{0.2cm}}c} -% \includegraphics[width=0.37\textwidth]{Fig_method/vcercleAuto.png} & -% \includegraphics[width=0.58\textwidth]{Fig_method/plafondAuto.png} -% \end{tabular} -% \caption{Automatic detection of blurred segments.} -% \label{fig:auto} -%\end{figure} diff --git a/Article/notions.tex b/Article/notions.tex deleted file mode 100755 index f2e631180848faf9ee7a0320a02ba2bfee95dbe3..0000000000000000000000000000000000000000 --- a/Article/notions.tex +++ /dev/null @@ -1,168 +0,0 @@ -\section{Theoretical background} - -\label{sec:notions} - -\subsection{Blurred segment} - -This work relies on the notion of digital straight line as classically -defined in the digital geometry literature \cite{KletteRosenfeld04}. -Only the 2D case is considered here. - -\begin{definition} -A \textbf{digital straight line} $\mathcal{L}(a,b,c,\nu)$, -with $(a,b,c,\nu) \in \mathbb{Z}^4$, -is the set of points $P(x,y)$ of $\mathbb{Z}^2$ that satisfy : -$0 \leq ax + by - c < \nu$. -\end{definition} - -In the following, we note $\vec{V}(\mathcal{L}) = (a,b)$ the director vector -of digital line $\mathcal{L}$, $w(\mathcal{L}) = \nu$ its arithmetical width, -$h(\mathcal{L}) = c$ its shift to origin, and $p(\mathcal{L}) = max(|a|,|b|)$ -its period (i.e. the length of its periodic pattern). -When $\nu = p(\mathcal{L})$, then $\mathcal{L}$ is the narrowest 8-connected -line and is called a {\it naive line}. - -\begin{definition} -A \textbf{blurred segment} $\mathcal{B}$ of assigned width $\varepsilon$ is -a set of points in $\mathbb{Z}^2$ that all belong to a digital straight line -$\mathcal{L}$ of arithmetical width $w(\mathcal{L}) = \varepsilon$. -\end{definition} - -A linear-time algorithm to recognize a blurred segment of assigned width -$\varepsilon$ \cite{DebledAl05} is used in this work. -It is based on an incremental growth of the convex hull of the blurred -segment when adding each point $P_i$ successively. -The minimal width $\mu$ of the blurred segment $\mathcal{B}$ is the -arithmetical width of the narrowest digital straight line that contains -$\mathcal{B}$. -%It is also the minimal width of the convex hull of $\mathcal{B}$, -%that can be computed by Melkman's algorithm \cite{Melkman87}. -The enclosing digital segment $E(\mathcal{B})$ is the section of this -optimal digital straight line bounded by the end points of $\mathcal{B}$. -As depicted on \RefFig{fig:bs}, -the extension of the blurred segment $\mathcal{B}_{i-1}$ of assigned width -$\varepsilon$ and minimal width $\mu_{i-1}$ at step $i-1$ with a new input -point $P_i$ is thus controlled by the recognition test $\mu_i < \varepsilon$. - -\begin{figure}[h] -\center - \input{Fig_notions/bswidth} - \caption{A growing blurred segment $\mathcal{B}_i$ : -when adding the new point $P_i$, the blurred segment minimal width -augments from $\mu_{i-1}$ to $\mu_i$; if the new width $\mu_i$ exceeds -the assigned width $\varepsilon$, then the new input point is rejected -and $\mathcal{B}_i = \mathcal{B}_{i-1}$.} - \label{fig:bs} -\end{figure} - -Associated to this primitive, the following definition of a directional scan - is an important point the proposed method. - -\subsection{Directional scan} - -\begin{definition} -A directional scan $DS$ is an ordered partition restricted to the image -domain $\mathcal{I}$ of a digital straight line $\mathcal{D}$, called the -\textbf{scan strip}, into scans $S_i$, each of them being a segment of a -naive line $\mathcal{N}_i$, called a \textbf{scan line}, orthogonal to -$\mathcal{D}$. -\end{definition} - -\begin{equation} -DS = \left\{ S_i = \mathcal{D} \cap \mathcal{N}_i \cap \mathcal{I} -\left| \begin{array}{l} -\vec{V}(\mathcal{N}_i) \cdot \vec{V}(\mathcal{D}) = 0 \\ -\wedge~ h(\mathcal{N}_i) = h(\mathcal{N}_{i-1}) + p(\mathcal{D}) -\end{array} \right. \right\} -%S_i = \mathcal{D} \cap \mathcal{N}_i, \mathcal{N}_i \perp \mathcal{D} -\end{equation} -In this definition, the clause -$\vec{V}(\mathcal{N}_i) \cdot \vec{V}(\mathcal{D}) = 0$ -expresses the orthogonality constraint between the scan lines $\mathcal{N}_i$ -and the scan strip $\mathcal{D}$. -Then the shift of the period $p(\mathcal{D})$ between successive scans -guarantees that all points of the scan strip are travelled one and only one -time. - -The scans $S_i$ are developed on each side of a start scan $S_0$, -and ordered by their distance to the start line $\mathcal{N}_0$ with -a positive (resp. negative) sign if they are on the left (resp. right) -side of $\mathcal{N}_0$ (\RefFig{fig:ds}). -The directional scan is iteratively parsed from the start scan to both ends. -At each iteration $i$, the scans $S_i$ and $S_{-i}$ are successively processed. - -\begin{figure}[h] -\center -% \input{Fig_notions/fig} - \includegraphics[width=0.8\textwidth]{Fig_notions/scanstrip.eps} - \begin{picture}(1,1)(0,0) - \thicklines - \put(-176,112){\vector(2,-1){30}} - \put(-90,19){\vector(-2,1){30}} - {\color{dwhite}{ - \put(-181,114.5){\circle*{10}} - \put(-84,16.5){\circle*{10}} - \put(-16,102.5){\circle*{10}} - \put(-132,66.5){\circle*{12}} - \put(-72,96.5){\circle*{12}} - \put(-175.5,65.5){\circle*{20}} - \put(-117,10.5){\circle*{14}} - \put(-54,32.5){\circle*{14}} - \put(-161,10.5){\circle*{20}} - }} - \put(-88,13.5){$A$} - \put(-185,111.5){$B$} - \put(-20,98){$\mathcal{D}$} - \put(-137,64){\color{blue}{$S_0$}} - \put(-77,94){\color{red}{$S_8$}} - \put(-183,64){\color{dgreen}{$S_{-5}$}} - \put(-123,8){\color{blue}{$\mathcal{N}_0$}} - \put(-60,30){\color{red}{$\mathcal{N}_8$}} - \put(-169,8){\color{dgreen}{$\mathcal{N}_{-5}$}} - \end{picture} - \caption{A directional scan. - The start scan $S_0$ is drawn in blue, odd scans in green, - even scans in red, the bounds of scan lines $\mathcal{N}_i$ - with plain lines and the bounds of scan strip $\mathcal{D}$ - with dotted lines.} - \label{fig:ds} -\end{figure} - -A directional scan can be defined by its start scan $S_0$. -If $A(x_A,y_A)$ and $B(x_B,y_B)$ are the end points of $S_0$, -and if we note $\delta_x = x_B - x_A$, $\delta_y = y_B - y_A$, -$c_1 = \delta_x\cdot x_A + \delta_y\cdot y_A$, -$c_2 = \delta_x\cdot x_B + \delta_y\cdot y_B$ and -$\nu_{AB} = max (|\delta_x|, |\delta_y|)$, it is then defined by -the following scan strip $\mathcal{D}^{A,B}$ and scan lines -$\mathcal{N}_i^{A,B}$: -\begin{equation} -\left\{ \begin{array}{l} -\mathcal{D}^{A,B} = -\mathcal{L}(\delta_x,~ \delta_y,~ min (c1,c2),~ 1 + |c_1-c_2|) \\ -\mathcal{N}_i^{A,B} = \mathcal{L}(\delta_y,~ -\delta_x,~ -\delta_y\cdot x_A - \delta_x\cdot y_A + i\cdot \nu_{AB},~ \nu_{AB}) -\end{array} \right. -\end{equation} - -%The scan lines length is $d_\infty(AB)$ or $d_\infty(AB)-1$, where $d_\infty$ -%is the chessboard distance ($d_\infty = max (|d_x|,|d_y|)$). -%In practice, this difference of length between scan lines is not a drawback, -%as the image bounds should also be processed anyway. - -A directional scan can also be defined by its central point $C(x_C,y_C)$, -its direction $\vec{D}(X_D,Y_D)$ and its width $w$. If we note -$c_3 = x_C\cdot Y_D - y_C\cdot X_D$, -$c_4 = X_D\cdot x_C + Y_D\cdot y_C$, -$\nu_{\vec{D}} = max (|X_D|,|Y_D|)$, -it is then defined by -the following scan strip $\mathcal{D}^{C,\vec{D},w}$ and scan lines -$\mathcal{N}_i^{C,\vec{D},w}$: -\begin{equation} -\left\{ \begin{array}{l} -\mathcal{D}^{C,\vec{D},w} -= \mathcal{L}(Y_D,~ -X_D,~ c_3 - w / 2,~ w) \\ -\mathcal{N}_i^{C,\vec{D},w} = \mathcal{L}(X_D,~ Y_D,~ - c_4 - w / 2 + i\cdot w,~ \nu_{\vec{D}}) -\end{array} \right. -\end{equation}