diff --git a/Article/Expe_auto/bsNew.png b/Article/Expe_auto/bsNew.png new file mode 100644 index 0000000000000000000000000000000000000000..8311feb0685ab1d59f68f7f1db80d4371e6c574f Binary files /dev/null and b/Article/Expe_auto/bsNew.png differ diff --git a/Article/Expe_auto/bsOld.png b/Article/Expe_auto/bsOld.png new file mode 100644 index 0000000000000000000000000000000000000000..95f8a8d80f7a304c476fc54346520715de6385a5 Binary files /dev/null and b/Article/Expe_auto/bsOld.png differ diff --git a/Article/Expe_auto/buro.png b/Article/Expe_auto/buro.png new file mode 100755 index 0000000000000000000000000000000000000000..b3aa23a4ff700d29efcabcbbb50a917c9fdb5ea0 Binary files /dev/null and b/Article/Expe_auto/buro.png differ diff --git a/Article/Expe_auto/coloredNew.png b/Article/Expe_auto/coloredNew.png new file mode 100644 index 0000000000000000000000000000000000000000..76e163c45f9a4411ce309a24a0d1ce24c300b59f Binary files /dev/null and b/Article/Expe_auto/coloredNew.png differ diff --git a/Article/Expe_auto/coloredOld.png b/Article/Expe_auto/coloredOld.png new file mode 100644 index 0000000000000000000000000000000000000000..afedf2807e2064a97870fe63031151f04c3e54f9 Binary files /dev/null and b/Article/Expe_auto/coloredOld.png differ diff --git a/Article/Expe_auto/dssDetailNew.png b/Article/Expe_auto/dssDetailNew.png new file mode 100644 index 0000000000000000000000000000000000000000..2313b7fc473548728e6c26c69086384d2f78bb27 Binary files /dev/null and b/Article/Expe_auto/dssDetailNew.png differ diff --git a/Article/Expe_auto/dssDetailOld.png b/Article/Expe_auto/dssDetailOld.png new file mode 100644 index 0000000000000000000000000000000000000000..56349908259b4ba57287220f5182119ea04153c1 Binary files /dev/null and b/Article/Expe_auto/dssDetailOld.png differ diff --git a/Article/Expe_auto/dssNew.png b/Article/Expe_auto/dssNew.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd53b790d1513e289413b7bfb9437e37787e579 Binary files /dev/null and b/Article/Expe_auto/dssNew.png differ diff --git a/Article/Expe_auto/dssOld.png b/Article/Expe_auto/dssOld.png new file mode 100644 index 0000000000000000000000000000000000000000..9cfe50a24cf1c84b3918212c26cb435706e88ff3 Binary files /dev/null and b/Article/Expe_auto/dssOld.png differ diff --git a/Article/Expe_auto/perfTable.tex b/Article/Expe_auto/perfTable.tex new file mode 100644 index 0000000000000000000000000000000000000000..e6e0d87782760b42408987d55246946ebd385130 --- /dev/null +++ b/Article/Expe_auto/perfTable.tex @@ -0,0 +1,16 @@ +\begin{tabular}{|l||r|r|r|r|} +\hline +Measure $M$ & \multicolumn{1}{c|}{$T$ (ms)} & \multicolumn{1}{c|}{$N$} +& \multicolumn{1}{c|}{$L$ (pixels)} & \multicolumn{1}{c|}{$W$ (pixels)} \\ +\hline +$M_{old}$ on image of \RefFig{fig:auto} & 29.51 & 306 & 38.58 & 2.47 \\ +$M_{new}$ on image of \RefFig{fig:auto} & 25.85 & 352 & 33.25 & 2.17 \\ +$M_{new}/M_{old}$ (\%) +& \multicolumn{1}{l|}{87.60} & \multicolumn{1}{l|}{115.03} +& \multicolumn{1}{l|}{86.18} & \multicolumn{1}{l|}{87.85} \\ +\hline +$M_{new}/M_{old}$ (\%) & & & & \\ +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 new file mode 100644 index 0000000000000000000000000000000000000000..52280913a4b139f22a1bbec586912f708e2eef3f --- /dev/null +++ b/Article/Expe_auto/perf_buro.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..3e91f64fe58143a91e16c4ea76cc3db166f2b74e --- /dev/null +++ b/Article/Expe_auto/perf_indoor01.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..045b632e7f6091486fe39f83102b3fb6005d410f --- /dev/null +++ b/Article/Expe_auto/perf_indoor02.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..feb842c3622a7585cd76cc95b041f4f5fea6d70f --- /dev/null +++ b/Article/Expe_auto/perf_indoor03.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..dac2c2c5fb24953c47ba18faf63a0e837d1d8fe8 --- /dev/null +++ b/Article/Expe_auto/perf_indoor04.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..21678296ff433af6fdd33e79bf8957b368a395e4 --- /dev/null +++ b/Article/Expe_auto/perf_indoor05.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..b85532b1345585d5c92cc9f6ace1c4f1de36ebc1 --- /dev/null +++ b/Article/Expe_auto/perf_indoor06.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..8202eee8529805662d9c5fe4e17cda972a85827a --- /dev/null +++ b/Article/Expe_auto/perf_indoor07.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..3e88308b9f68678e118cdbc1ce320a84445087a2 --- /dev/null +++ b/Article/Expe_auto/perf_indoor08.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..1221db9407eceb90c63876fb9be39dca54bec62c --- /dev/null +++ b/Article/Expe_auto/perf_indoor09.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..70999a38648c26aab21a166fcf7082b24e9159e9 --- /dev/null +++ b/Article/Expe_auto/perf_indoor10.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..f3c8e82e77eb19aa578c34c44fd43f00fd1e551e --- /dev/null +++ b/Article/Expe_auto/perf_outdoor01.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..2a813a519c0feb7a04c06644e852dd5780c6ff2f --- /dev/null +++ b/Article/Expe_auto/perf_outdoor02.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..0504c6d469f59f9d922e8fde93b0e6e23a0fbe80 --- /dev/null +++ b/Article/Expe_auto/perf_outdoor03.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..13bbc2038df5435e41a77122c7ec49d9518937ce --- /dev/null +++ b/Article/Expe_auto/perf_outdoor04.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..6d475c93fe378cc43fe7428a01703127188c5377 --- /dev/null +++ b/Article/Expe_auto/perf_outdoor05.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..e84f583fea14383958229088a1fee30f21c158b7 --- /dev/null +++ b/Article/Expe_auto/perf_outdoor06.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..ace6ab181a990b84007a89e15e0a0b0b1086c0db --- /dev/null +++ b/Article/Expe_auto/perf_outdoor07.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..eb3cb8ba9d8e488d98a68bba07af14430bfffdf2 --- /dev/null +++ b/Article/Expe_auto/perf_outdoor08.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..f337357ede81efaa5ffa659ac16423a68b8c834d --- /dev/null +++ b/Article/Expe_auto/perf_outdoor09.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..3733e88c6ea237faa4e3005b4740255cfd2fdae3 --- /dev/null +++ b/Article/Expe_auto/perf_outdoor10.txt @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..058065687e348f1595e4426a7df011b774c13865 --- /dev/null +++ b/Article/Expe_auto/readme.txt @@ -0,0 +1,36 @@ +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/hardNew.png b/Article/Expe_hard/hardNew.png new file mode 100644 index 0000000000000000000000000000000000000000..157f10a70e7b3e1982a984a98e3c59ea41eea68a Binary files /dev/null and b/Article/Expe_hard/hardNew.png differ diff --git a/Article/Expe_hard/hardOld.png b/Article/Expe_hard/hardOld.png new file mode 100644 index 0000000000000000000000000000000000000000..aa041dd25274e368cacc32fc9a01996d9c70cd64 Binary files /dev/null and b/Article/Expe_hard/hardOld.png differ diff --git a/Article/Expe_hard/readme.txt b/Article/Expe_hard/readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..8199130d3496e40326469e3d2c77c6ce5641200f --- /dev/null +++ b/Article/Expe_hard/readme.txt @@ -0,0 +1,6 @@ +Seg ../parpaings.gif +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 +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 diff --git a/Article/Fig_method/edgeDir.readme b/Article/Fig_method/edgeDir.readme index edd70c5d8ee58d878328566c702586acac1d1029..917d0d59e3ff89897d0ff3e7c495a83e515f26a2 100644 --- a/Article/Fig_method/edgeDir.readme +++ b/Article/Fig_method/edgeDir.readme @@ -1,8 +1,12 @@ +1e tentative : +-------------- Images obtenues par le test testEdgeDir.txt suivi de la commande de detection multiple : Ctrl-M avec deux modalites pilotees par Ctrl-E Sur gimp selection de la zone (34,166)(444,314). +2e tentative : +-------------- Images obtenues par le test testBriques.txt sur l'image briques.gif. avec une consigne d'epaisseur finale reglee a 8 pixels (touche x). Les segments sont extraits en detection simple @@ -10,3 +14,24 @@ et les deux aretes sont sauvegardees separement et affichees. Trop de detections parasites en multi-detection. Attenuation du contraste a blevel = 50. Sur gimp selection de la zone (174,160)(-10,104). + +3e tentative : +-------------- +Images obtenues par le test testBriques.txt sur l'image briques.gif. +10 y : met le fond d'ecran a 50 +0 pour lancer le test : testBriques.txt -> test.txt +! pour un affichage sombre +Ctrl-u pour afficher le segment englobant +6 x pour regler l'epaisseur de controle a 9 +p pour capturer l'image : capture.png -> selectLine.png +Ctrl-m pour passer en mode multi-detection +Ctrl-e pour passer en selection de bords +4 X pour regler l'epaisseur de controle a 5 +p pour capturer l'image : capture.png -> selectEdges.png +Ctrl-m pour repasser en mode simple detection +2 x pour regler l'epaisseur de controle a 7 +a pour enregistrer le segment +e pour selectionner l'autre bord +a pour enregistrer le segment +q pour afficher les deux segments enregistres +Sur gimp selection de la zone (174,160)(20,108). diff --git a/Article/Fig_method/selectEdges_full.png b/Article/Fig_method/selectEdges_full.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1ec78124416f3e20a3df83eed53ab988363c20 Binary files /dev/null and b/Article/Fig_method/selectEdges_full.png differ diff --git a/Article/Fig_method/selectEdges_zoom.png b/Article/Fig_method/selectEdges_zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..20b631ef1cec567028d3f78624348cda6988fff8 Binary files /dev/null and b/Article/Fig_method/selectEdges_zoom.png differ diff --git a/Article/Fig_method/selectLine_full.png b/Article/Fig_method/selectLine_full.png new file mode 100644 index 0000000000000000000000000000000000000000..21f662114350b41723e629f59f59bda4efd367f0 Binary files /dev/null and b/Article/Fig_method/selectLine_full.png differ diff --git a/Article/Fig_method/selectLine_zoom.png b/Article/Fig_method/selectLine_zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..c52a5fe3ed957368388d97ed82841f4e03581226 Binary files /dev/null and b/Article/Fig_method/selectLine_zoom.png differ diff --git a/Article/expe.tex b/Article/expe.tex index e6f3cc94584846a2d4086060bca1cbe6ed44df83..25b1d56ef3b320e18e89fdcee02aff7e3c1572f6 100755 --- a/Article/expe.tex +++ b/Article/expe.tex @@ -70,8 +70,8 @@ $D$ the set of all the detected blurred segments.} \begin{tabular}{ c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}} \includegraphics[width=0.32\textwidth]{Fig_method/parpaings.png} & - \includegraphics[width=0.32\textwidth]{Fig_hard/hardOld.png} & - \includegraphics[width=0.32\textwidth]{Fig_hard/hardNew.png} + \includegraphics[width=0.32\textwidth]{Expe_hard/hardOld.png} & + \includegraphics[width=0.32\textwidth]{Expe_hard/hardNew.png} \begin{picture}(1,1) {\color{dwhite}{ \put(-286,4.5){\circle*{8}} diff --git a/Article/expeAuto.tex b/Article/expeAuto.tex index 9f5b3bb9691757fe507aaf1ff9c2cb52ff7ef523..4d48850e9633bd94d0580d0594c35581f44e331d 100755 --- a/Article/expeAuto.tex +++ b/Article/expeAuto.tex @@ -15,30 +15,30 @@ data base. %\center \begin{tabular}{ c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}} - \includegraphics[width=0.32\textwidth]{Fig_auto/buro.png} & - \includegraphics[width=0.32\textwidth]{Fig_auto/autoOld.png} & - \includegraphics[width=0.32\textwidth]{Fig_auto/autoNew.png} \\ - & \includegraphics[width=0.22\textwidth]{Fig_auto/dssDetailOld.png} & - \includegraphics[width=0.22\textwidth]{Fig_auto/dssDetailNew.png} + \includegraphics[width=0.32\textwidth]{Expe_auto/buro.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/dssDetailOld.png} & + \includegraphics[width=0.22\textwidth]{Expe_auto/dssDetailNew.png} \begin{picture}(1,1) {\color{red}{ - \put(-21.5,38){\framebox(18,8)} - \put(-12.5,38){\vector(-2,-1){25}} - \put(-135.5,38){\framebox(18,8)} - \put(-124.5,38){\vector(-2,-1){25}} + \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}} }} {\color{dwhite}{ - \put(-287,37.5){\circle*{8}} - \put(-172,37.5){\circle*{8}} - \put(-59,37.5){\circle*{8}} - \put(-186,5.5){\circle*{8}} - \put(-73,5.5){\circle*{8}} + \put(-291,32.5){\circle*{8}} + \put(-177,32.5){\circle*{8}} + \put(-63,32.5){\circle*{8}} + \put(-188,4.5){\circle*{8}} + \put(-75,4.5){\circle*{8}} }} - \put(-289.5,35){a} - \put(-174.5,35){b} - \put(-61.5,35){c} - \put(-189,3){d} - \put(-75.5,3){e} + \put(-293.5,30){a} + \put(-179.5,30){b} + \put(-65.5,30){c} + \put(-191,2){d} + \put(-77.5,2){e} \end{picture} \end{tabular} \caption{Automatic detection on standard images: @@ -49,7 +49,7 @@ data base. \end{figure} \begin{table} \centering -\input{Fig_auto/perfTable} +\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.} diff --git a/Article/method.tex b/Article/method.tex index 0cc3781680c897733b783d726535acb3a65d67f8..e9e5f8f3313422492bfdd600a2059e25befcb6eb 100755 --- a/Article/method.tex +++ b/Article/method.tex @@ -175,16 +175,16 @@ the two opposite edges of a thin straight object. \begin{figure}[h] \center \begin{tabular}{c@{\hspace{0.2cm}}c} - \includegraphics[width=0.38\textwidth]{Fig_method/briques1_zoom.png} & - \includegraphics[width=0.38\textwidth]{Fig_method/briques2_zoom.png} + \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(-240,-12.5){\circle*{8}} - \put(-102,-12.5){\circle*{8}} + \put(-220,-14.5){\circle*{8}} + \put(-74,-14.5){\circle*{8}} }} - \put(-242.5,-15){a} - \put(-104.5,-15){b} + \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 diff --git a/Code/Seg/BSTools/bsdetectionwidget.cpp b/Code/Seg/BSTools/bsdetectionwidget.cpp index b44ca6a22e7bd1b5c1f1a873d6d83839a2836a46..33d7e776fd5c364258cf41eb6fe03d48d918bb27 100755 --- a/Code/Seg/BSTools/bsdetectionwidget.cpp +++ b/Code/Seg/BSTools/bsdetectionwidget.cpp @@ -45,6 +45,7 @@ BSDetectionWidget::BSDetectionWidget (QWidget *parent) // Sets display parameters darkHighlightOn = false; + arlequinOn = true; selectionColor = Qt::red; bsColor = Qt::blue; bsHighColor = Qt::yellow; @@ -307,6 +308,12 @@ void BSDetectionWidget::switchHighlightColors () } +void BSDetectionWidget::switchArlequin () +{ + arlequinOn = ! arlequinOn; +} + + void BSDetectionWidget::mousePressEvent (QMouseEvent *event) { oldp1.set (p1); @@ -775,6 +782,11 @@ void BSDetectionWidget::keyPressEvent (QKeyEvent *event) displayDetectionResult (); break; + case Qt::Key_Equal : + switchArlequin (); + displayDetectionResult (); + break; + case Qt::Key_Asterisk : switchStats (); displayDetectionResult (); @@ -923,6 +935,39 @@ void BSDetectionWidget::drawBlurredSegment (QPainter &painter, } +void BSDetectionWidget::drawArlequinSegment (QPainter &painter, + BlurredSegment *bs) +{ + if (bs != NULL) + { + if (bsBoundsVisible) + { + vector<Pt2i> bnd; + DigitalStraightSegment *dss = bs->getSegment (); + if (dss != NULL) + { + dss->getBounds (bnd, 0, 0, width, height); + drawPoints (painter, bnd, boundHighColor); + } + } + if (bsPointsVisible) + { + bool nok = true; + int red, green, blue; + while (nok) + { + red = rand () % 256; + green = rand () % 256; + blue = rand () % 256; + nok = (darkHighlightOn && (red + green + blue) > 300) + || (! darkHighlightOn && (red + green + blue) < 300); + } + drawPoints (painter, bs->getAllPoints (), QColor (red, green, blue)); + } + } +} + + void BSDetectionWidget::incBlackLevel (int val) { blevel += val * 5; @@ -1003,6 +1048,7 @@ void BSDetectionWidget::displayDetectionResult () // cout << bss.size () << " blurred segments detected" << endl; // double bsw = 0.; // int bsc = 0; + if (arlequinOn && detector.getMaxDetections () == 0) srand (time (NULL)); vector<BlurredSegment *>::const_iterator it = bss.begin (); while (it != bss.end ()) { @@ -1013,8 +1059,11 @@ void BSDetectionWidget::displayDetectionResult () // if (dss == NULL) cout << "DSS null" << endl; // else bsw += dss->width () / (double) dss->period (); // } - drawBlurredSegment (painter, *it, detector.getMaxDetections () == 0 - || *it == bss.back ()); + if (arlequinOn && detector.getMaxDetections () == 0) + drawArlequinSegment (painter, *it); + else + drawBlurredSegment (painter, *it, detector.getMaxDetections () == 0 + || *it == bss.back ()); it++; } // cout << bsc << " effective blurred segments" << endl; @@ -1470,7 +1519,7 @@ QSize BSDetectionWidget::setRandomImage (int type) AbsRat biasVal (7, 5); bool dispEach = false; bool dispLast = false; - int nbruns = 1000; + int nbruns = 100; int nbIniPts[nbruns]; int oldTrials[nbruns]; int newTrials[nbruns]; diff --git a/Code/Seg/BSTools/bsdetectionwidget.h b/Code/Seg/BSTools/bsdetectionwidget.h index f9ba1152bed20d84236a9a4c3a2cff30f4f539d4..dc02ffefce37d57757502c06565852ae363136d8 100755 --- a/Code/Seg/BSTools/bsdetectionwidget.h +++ b/Code/Seg/BSTools/bsdetectionwidget.h @@ -130,6 +130,11 @@ void createMap (QString name, bool *tofind, bool *found, int iw, int ih); */ void switchHighlightColors (); + /** + * \brief Switches the random color display modality. + */ + void switchArlequin (); + /** * \brief Switches the extraction stats display on or off. */ @@ -227,6 +232,8 @@ private: /** Kind of highlight colors. */ bool darkHighlightOn; + /** Random color selection modality. */ + bool arlequinOn; /** Color of user selections. */ QColor selectionColor; /** Color of blurred segments. */ @@ -333,6 +340,13 @@ private: void drawBlurredSegment (QPainter &painter, BlurredSegment *bs, bool high = true); + /** + * \brief Draws a blurred segment with a random color. + * @param painter Drawing device. + * @param bs Reference to the blurred segment to be drawn. + */ + void drawArlequinSegment (QPainter &painter, BlurredSegment *bs); + /** * \brief Returns the background black level. */ diff --git a/Code/Seg/ImageTools/vmap.cpp b/Code/Seg/ImageTools/vmap.cpp index be16b2212514a6670f0b69252726d82d0cb0f203..eb88b0796c6a8d15dd38589459c8436de66f5184 100755 --- a/Code/Seg/ImageTools/vmap.cpp +++ b/Code/Seg/ImageTools/vmap.cpp @@ -15,7 +15,7 @@ const int VMap::TYPE_FULL_BLACK_HAT = 6; const int VMap::TYPE_FULL_MORPHO = 7; const int VMap::NEAR_SQ_ANGLE = 80; // 80% (roughly 25 degrees) -const int VMap::DEFAULT_GRADIENT_THRESHOLD = 30; +const int VMap::DEFAULT_GRADIENT_THRESHOLD = 33; const int VMap::DEFAULT_GRADIENT_RESOLUTION = 100; const int VMap::MAX_BOWL = 20; diff --git a/Methode/methode.tex b/Methode/methode.tex index 230285a9ca2bb1821fd0fa46979d9ce2db016132..ae1b29963ac0e9855d99c0ad98c1f041122fbe31 100755 --- a/Methode/methode.tex +++ b/Methode/methode.tex @@ -19,7 +19,7 @@ \begin{picture}(150,170)(0,0) \put(40,0){\framebox(70,10){FILTRAGE}} \put(75,20){\vector(0,-1){10}} -\put(40,20){\framebox(70,10){TEST DE CONNEXITE}} +\put(40,20){\framebox(70,10){TEST DE SORTIE}} \put(75,40){\vector(0,-1){10}} \thicklines \put(40,40){\framebox(70,10){\bf \large SUIVI FIN}} @@ -28,11 +28,11 @@ \put(75,60){\vector(0,-1){10}} \put(40,60){\framebox(70,10){RECENTRAGE}} \put(75,80){\vector(0,-1){10}} -\put(40,80){\framebox(70,10){TEST D'ORIENTATION}} +\put(40,80){\framebox(70,10){TESTS AVAL DU PRE-FILTRAGE}} \put(75,100){\vector(0,-1){10}} \put(40,100){\framebox(70,10){PRE-FILTRAGE}} \put(75,120){\vector(0,-1){10}} -\put(40,120){\framebox(70,10){TEST DE DENSITE}} +\put(40,120){\framebox(70,10){TESTS AMONT DU PRE-FILTRAGE}} \put(75,140){\vector(0,-1){10}} \thicklines \put(40,140){\framebox(70,10){\bf \large SUIVI RAPIDE}} @@ -102,20 +102,27 @@ dernier pixel ins\'er\'e (initialement 4 pixels, actuellement remont\'e \`a 10 pixels). Ce test est par d\'efaut d\'esactiv\'e. \item Aucun test angulaire. \item Tol\'erance aux interruptions : 5 pixels. +\item Seuil de gradient : 30. \end{itemize} \end{itemize} -\subsection*{Test de densit\'e} +\subsection*{Tests amont du pr\'e-filtrage} +\begin{enumerate} +\item Test de longueur : \begin{itemize} -\item Etat par d\'efaut : activ\'e. -\item Fonctionnement : -\begin{itemize} -\item V\'erifie que l'\'etendue du segment (\'ecart entre les barres des -points extr\^emes) est inf\'erieure \`a la moiti\'e du nombre de points -constituant le segment. +\item Toujours activ\'e +\item V\'erifie que le nombre de points du SF est sup\'erieur \`a +{\tt bsMinSize} +\item Valeur par d\'efaut : 3 (modifiable) \end{itemize} +\item Test de densit\'e : +\item V\'erifie que le nombre de points du SF est au moins 2 fois +l'\'etendue du segments ($\#BS > (1 + d (P_{left}P_{right})) / 2$) +\begin{itemize} +\item Activ\'e par d\'efaut (d\'esactivable) \end{itemize} +\end{enumerate} \subsection*{Pr\'e-filtrage} @@ -128,16 +135,23 @@ isol\'es \`a l'\'ecart du segment. \end{itemize} \end{itemize} -\subsection*{Test d'orientation} +\subsection*{Tests aval du pr\'efiltrage} +\begin{enumerate} +\item Test de longueur : \begin{itemize} -\item Etat par d\'efaut : activ\'e. -\item Fonctionnement : -\begin{itemize} -\item V\'erifie que l'orientation du segment n'est pas trop proche de -celle de la barre de balayage $P_1P_2$ ($30^o$). +\item Toujours activ\'e +\item V\'erifie que le nombre de points du SF est sup\'erieur \`a +{\tt bsMinSize} +\item Valeur par d\'efaut : 3 (modifiable) \end{itemize} +\item Test d'orientation +V\'erifie que l'orientation du segment n'est pas trop proche de +celle de la barre de balayage $P_1P_2$ ($angle (BS,P_1P_2) > 30^o$). +\begin{itemize} +\item Toujours activ\'e \end{itemize} +\end{enumerate} \subsection*{Recentrage} @@ -154,7 +168,11 @@ celle de la barre de balayage $P_1P_2$ ($30^o$). \item $\epsilon _c$ : Consigne d'\'epaisseur pour le segment flou. \item $V_{ref}$ : Direction de r\'ef\'erence pour le gradient. \end{itemize} -\item Modalit\'e par d\'efaut : asservissement de l'\'epaisseur activ\'e. +\item Modalit\'es par d\'efaut : +\begin{itemize} +\item alignement activ\'e (d\'esactivable). +\item asservissement de l'\'epaisseur d\'esactiv\'e (activable). +\end{itemize} \item Fonctionnement : \begin{itemize} \item Recalcule un point central, une direction de balayage et une @@ -162,10 +180,21 @@ celle de la barre de balayage $P_1P_2$ ($30^o$). \item La direction de r\'ef\'erence pour le gradient est mesur\'ee au point de d\'epart du segment flou initial. \item La nouvelle direction de balayage est le vecteur support du segment flou. +\item La largeur de balayage est deux fois l'\'epaisseur de consigne. +\item Avec alignement : +\begin{itemize} +\item Recalcule un point central \`a l'intersection de la m\'ediane du segment +flou et de la barre $P_1P_2$. +\end{itemize} +\item Sans alignement : +\begin{itemize} +\item Laisse comme point central le point de d\'epart du segment flou. +\end{itemize} \item Sans asservissement de l'\'epaisseur : \begin{itemize} \item le point de d\'epart est le point central du segment flou, -\item l'\'epaisseur de consigne est fix\'ee (5 pixels), +\item l'\'epaisseur de consigne est fix\'ee (valeur par d\'efaut : 3 pixels, +modifiable), \item la largeur de balayage est 4 fois l'\'epaisseur de consigne. \end{itemize} \item Avec asservissement de l'\'epaisseur : @@ -173,8 +202,7 @@ de d\'epart du segment flou initial. \item le point de d\'epart est l'intersection entre la barre de balayage initiale et la m\'ediane du segment, \item l'\'epaisseur de consigne est l'\'epaisseur du segment flou initial -avec un minimum de 8 pixels, -\item la largeur de balayage est l'\'epaisseur de consigne. +plus un pixel. \end{itemize} \end{itemize} \end{itemize} @@ -202,6 +230,7 @@ un segment flou \`a partir des sommets de gradients, correctement orient\'es d\'ecroissantes, trouv\'es dans la barre. \item Aucun test de voisinage. \item Tol\'erance aux interruptions : 5 pixels. +\item Seuil de gradient : 30. \item Amincissement progressif (d\'esactiv\'e par d\'efaut) : \`a partir de 20 balayages, la consigne d'\'epaisseur est r\'eduite de 2\% \`a chaque balayage jusqu'\`a atteindre une valeur minimale de 150\% de @@ -213,14 +242,45 @@ largeur minimale du segment flou, la consigne d'\'epaisseur est fix\'ee \end{itemize} \end{itemize} -\subsection*{Test de connexit\'e} +\subsection*{Tests de sortie} + +\begin{enumerate} +\item Test de longueur : +\begin{itemize} +\item Toujours activ\'e +\item V\'erifie que le nombre de points du SF est sup\'erieur \`a +{\tt bsMinSize} +\item Valeur par d\'efaut : 3 (modifiable) +\end{itemize} +\item Test de densit\'e : +\item V\'erifie que le nombre de points est sup\'erieur \`a 3 fois +l'\'epaisseur arithm\'etique du segment. +\begin{itemize} +\item D\'esactiv\'e par d\'efaut (activable) +\end{itemize} +\item Test de nettet\'e des petits segments : +\item V\'erifie que l'\'etendue du segment ($1 + d (P_{left}P_{right})$) +est sup\'erieure \`a 20 pixels ou bien que le nombre de points du segment +est sup\'erieur \`a 4/5 fois l'\'etendue (on accepte les petits segments +s'ils sont bien remplis). +\begin{itemize} +\item D\'esactiv\'e par d\'efaut (activable) +\end{itemize} +\item Test de remplissage : +\item V\'erifie qu'au moins la moiti\'e des points appartiennent \`a une +courbe connexe d'au moins {\tt ccMinSize} pixels. +\begin{itemize} +\item D\'esactiv\'e par d\'efaut (activable) +\item Valeur par d\'efaut de {\tt ccMinSize} : 5 (modifiable) +\end{itemize} +\end{enumerate} \begin{itemize} \item Etat par d\'efaut : activ\'e. \item Fonctionnement : \begin{itemize} \item V\'erifie qu'au moins la moiti\'e des pixels du segment flou forment -des composantes connexes de taille sup\'erieure \`a 5 pixels. +des composantes 8-connexes de taille sup\'erieure \`a 5 pixels. \end{itemize} \end{itemize} @@ -235,14 +295,4 @@ isol\'es \`a l'\'ecart du segment. \end{itemize} \end{itemize} -\subsection*{Epaisseurs consid\'er\'ees} - -Les \'epaisseurs de segments d\'efinies sont la plus petite valeur de -l'\'epaisseur verticale ou de l'\'epaisseur horizontale. -Les droites discr\`etes \'etant d\'efinies par -$c \leq ax + by < c + \nu$, cette \'epaisseur se d\'efinit par -$\epsilon = \nu / max (|a|, |b|)$. -C'est aussi la plus petite valeur des \'epaisseurs des paires antipodales. -A ne pas confondre avec la largeur des barres de balayage ({\it scans}). - \end{document}