Rapport itération 3 - fin

This commit is contained in:
Tri-Thien Truong
2020-02-12 15:55:32 +01:00
parent 783fdc2ce2
commit 1bf468f46e
4 changed files with 202 additions and 39 deletions
@@ -138,13 +138,6 @@ Le premier point était important par le fait que l'utilisateur final voudra une
Le second point concernait plus l'utilisation du plugin par l'entreprise de façon générale, par rapport à leur fonctionnement. En effet, en situation réelle, l'entreprise possède plusieurs nuages de points d'un même lieu, avec des scans venant de stations positionnées à différents endroits. Le multi-scans permettra donc de faciliter le filtrage, puisque l'on veut dans la plupart des cas, filtrer tous les nuages du points correspondant à un lieu.
\section{Risques éliminés durant l'itération}
Durant cette itération, nous avons pu éliminer certains risques. En effet, le fait d'utiliser uniquement les outils de CloudCompare nous permet d'éviter d'être dépendant de la bibliothèque PCL. \newline
Bien sûr, il sera peut-être possible dans le futur, que nous aurions besoin d'utiliser cette bibliothèque pour certaines fonctions (par exemple, l'algorithme permettant de supprimer les points isolés). Mais pour l'instant, traiter les nuages de points avec le code que nous fournis CloudCompare nous suffit, et nous apporte un gain de temps non négligeable. \newline
Nous avions aussi des interrogations par rapport à notre méthode d'implémentation de notre plugin. En effet, le fait d'avoir notre propre plugin est une amélioration très importante quant à notre projet, puisque nous avons uniquement des fichiers qui servent au fonctionnement de notre plugin. L'implémentation est donc beaucoup plus aisée.
\begin{figure}[!hbtp]
\caption{\label{} Nouvelle interface filtrage RGB}
\includegraphics[width=0.65\textwidth]{./img/new_ui.png}
@@ -152,6 +145,13 @@ Nous avions aussi des interrogations par rapport à notre méthode d'implémenta
Nous pouvons observer le point picking représenté par un bouton à gauche des champs RGB. Il est donc maintenant possible de saisir manuellement les valeurs, ou de cliquer sur le nouveau bouton, qui active le mode point picking de CloudCompare. L'utilisateur peut donc ensuite cliquer sur un point du nuage. Après son clic, s'il a bien cliqué sur un point, les champs RGB se remplissent automatiquement avec les valeurs RGB du point correspondant. Il peut toujours noter sa marge d'erreur, pour définir sa plage de points, et valider avec le bouton OK.
\section{Risques éliminés durant l'itération}
Durant cette itération, nous avons pu éliminer certains risques. En effet, le fait d'utiliser uniquement les outils de CloudCompare nous permet d'éviter d'être dépendant de la bibliothèque PCL. \newline
Bien sûr, il sera peut-être possible dans le futur, que nous aurions besoin d'utiliser cette bibliothèque pour certaines fonctions (par exemple, l'algorithme permettant de supprimer les points isolés). Mais pour l'instant, traiter les nuages de points avec le code que nous fournis CloudCompare nous suffit, et nous apporte un gain de temps non négligeable. \newline
Nous avions aussi des interrogations par rapport à notre méthode d'implémentation de notre plugin. En effet, le fait d'avoir notre propre plugin est une amélioration très importante quant à notre projet, puisque nous avons uniquement des fichiers qui servent au fonctionnement de notre plugin. L'implémentation est donc beaucoup plus aisée.
\section{Feedback}
Suite à notre présentation du sprint review, nous avons pu avoir des retours client. Tout d'abord, des retours sur l'interface utilisateur, bien qu'améliorée, elle reste perfectible. Le système de marge d'erreur est à revoir, il est en effet peu parlant pour un utilisateur et peu pertinent suivant les cas d'utilisations. Si les valeurs sont faibles, "la marge" en sera impactée et réduite. Au lieu, d'avoir cette marge, il serait mieux de choisir/sélectionner deux points dans le nuage, l'un serait la borne "basse" et l'autre la borne "haute". On choisirait ainsi, l'espace de couleur qu'on choisit de segmenter.
@@ -172,62 +172,61 @@ Nous avons gardé les mêmes méthodes de travail, en essayant de se répartir l
\section{Objectifs de la prochaine itération}
Durant cette itération, nous avons pu grandement mettre en ordre notre projet. Nous avons donc maintenant notre propre plugin. Il faut maintenant terminer ce qui était en cours, prendre en compte les retours du client, et continuer les tâches prévues du cahier des charges.
Les tâches prévues sont donc les suivantes :
Durant cette itération, nous avons pu grandement mettre en ordre notre projet. Nous avons donc maintenant notre propre plugin. Il faut maintenant terminer ce qui était en cours, prendre en compte les retours du client, et continuer les tâches prévues du cahier des charges. Les tâches prévues sont donc les suivantes :
\begin{itemize}
\item Intégration de fausses couleurs
\item Revoir la marge d'erreur du filtrage RGB
\item Terminer la nouvelle méthode de segmentation
\item
\item Toon mapping \newline
\end{itemize}
\begin{comment}
Pour la prochaine itération, il nous faudra prévoir la préparation pour notre deuxième soutenance, qui présentera nos premières solutions sur ce projet. Nous aurons une semaine de vacances, qui nous serviront justement à avancer sur le Ptrans.
\begin{figure}[!hbtp]
\caption{\label{} Diagramme de Gantt détaillé - Sprint 4}
\includegraphics[width=1\textwidth]{./img/sprint_iteration_4_tableau.PNG}
\raisebox{-1\height}
{\includegraphics[width=1\textwidth]{./img/sprint_iteration_4_diagramme.PNG}}
\end{figure}
\section{Résumé}
\subsection{Tâches principales réalisées dans l'itération}
\noindent\begin{tabu} to \textwidth {p{0.18\textwidth}X[c2]X[c]X[c4]}\toprule
\thead{Tâche}&\thead{Responsable}&\thead{Statut}&\thead{Commentaire}\\\toprule
Plugin pour CloudCompare
& Mathieu
Refactoring du code / exportation sur un nouveau Plugin
& Ronan, Mathieu, Tri-Thien
& Achevé
& Plugin CloudCompare possible, ou développer une interface à la main. Le choix est de faire un plugin CloudCompare.\\\midrule
Bibliothèques pour le traitement de nuages de points
& Ronan, Tri-Thien
& Achevé
& PCL semble la bibliothèque principale à utiliser, par sa simplicité et toutes les fonctionnalités qu'elle peut nous fournir.\\\midrule
Choix du langage
& Fin de QPCL, plugin à part et indépendant.\\\midrule
Amélioration de la sélection de points dans le nuage
& Ronan
& En cours
& Continuer l'algo pour avoir une meilleure sélection des points.\\\midrule
Amélioration du filtrage RGB
& Tri-Thien
& Achevé
& C++ ou Python. Le choix est le C++ pour faciliter l'implémentation du code avec CloudCompare. \\\midrule
Architecture du code source
& Ronan, Tri-Thien, Mathieu
& Achevé
& Organisation avec un package pour le plugin CloudCompare, et un autre pour nos algorithmes.\\\midrule
Espaces colorimétriques
& Modification entre 2 points à 1 point \\\midrule
Conversion LAB
& Mathieu
& Achevé
& Le format RGB est le plus répandu, mais l'option du CIELab semble être intéressant.\\\midrule
Algorithmes de segmentation
& Ronan, Tri-Thien, Mathieu
& Comparaison de performances avec RGB\\\midrule
Point picking
& Tri-Thien
& Achevé
& Méthode pour segmenter selon une couleur (et un seuil d'erreur). Autre alternative : classification des points et régions puis raffinement\\\midrule
Recherche sur les méthodes de fausses couleurs
& Amélioration de l'interface pour cliquer sur un point, au lieu d'écrire manuellement les valeurs.\\\midrule
Multi-scans
& Ronan
& Achevé
& Correspondre une valeur en intensité en RGB (ou autre). Création d'une palette de couleurs.\\\bottomrule \\
& Sélection de plusieurs scans pour tous les filtrer en même temps.\\\bottomrule \\
\end{tabu}
\subsection{Tâches principales à réaliser pour la prochaine itération}
\begin{itemize}
\item Plugin CloudCompare
\item Développer la sélection de points selon une couleur définie
\item Développer une solution pour extraire des points dans le nuage
\item Mettre le code en commun.
\item Intégration de fausses couleurs
\item Revoir la marge d'erreur du filtrage RGB
\item Terminer la nouvelle méthode de segmentation
\item Toon mapping
\end{itemize}
\end{comment}
\begin{thebibliography}{3}
\bibitem{B01} Qingming Zhan, Yubin Liang, Yinghui Xiao, \textit{Color-based segmentation of point clouds}, 2009
@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?><project name="Ptrans" company="" webLink="http://" view-date="2020-02-10" view-index="0" gantt-divider-location="565" resource-divider-location="300" version="2.8.10" locale="fr">
<description/>
<view zooming-state="default:4" id="gantt-chart">
<field id="tpd3" name="Nom" width="265" order="0"/>
<field id="tpd13" name="Ressources" width="147" order="1"/>
<field id="tpd4" name="Date de début" width="82" order="2"/>
<field id="tpd5" name="Date de fin" width="67" order="3"/>
<option id="taskLabelUp" value=""/>
<option id="color.recent"><![CDATA[#ff0000 #ff9900 #ff3300 #00cc00 #00cc33 #00ffff #999999 #666666]]></option>
</view>
<view id="resource-table">
<field id="0" name="Nom" width="210" order="0"/>
<field id="1" name="Rôle par défaut" width="86" order="1"/>
</view>
<!-- -->
<calendars base-id="france">
<day-types>
<day-type id="0"/>
<day-type id="1"/>
<default-week id="1" name="default" sun="0" mon="0" tue="0" wed="0" thu="0" fri="0" sat="0"/>
<only-show-weekends value="true"/>
<overriden-day-types/>
<days/>
</day-types>
<date year="" month="1" date="1" type="HOLIDAY"><![CDATA[New Year's Day]]></date>
<date year="" month="5" date="1" type="HOLIDAY"><![CDATA[Labour Day]]></date>
<date year="" month="5" date="8" type="HOLIDAY"><![CDATA[V-E Day]]></date>
<date year="" month="7" date="14" type="HOLIDAY"><![CDATA[Bastille Day]]></date>
<date year="" month="8" date="15" type="HOLIDAY"><![CDATA[Assumption Day]]></date>
<date year="" month="11" date="1" type="HOLIDAY"><![CDATA[All Saints Day]]></date>
<date year="" month="11" date="11" type="HOLIDAY"><![CDATA[Armistice Day]]></date>
<date year="" month="12" date="25" type="HOLIDAY"><![CDATA[Christmas Day]]></date>
<date year="2008" month="5" date="12" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2009" month="6" date="1" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2009" month="7" date="13" type="NEUTRAL"><![CDATA[Bastille Day]]></date>
<date year="2010" month="4" date="5" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2010" month="5" date="13" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2010" month="5" date="24" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2011" month="4" date="25" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2011" month="5" date="29" type="NEUTRAL"><![CDATA[Mothers Day]]></date>
<date year="2011" month="6" date="2" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2011" month="6" date="13" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2011" month="6" date="19" type="NEUTRAL"><![CDATA[Fathers Day]]></date>
<date year="2012" month="1" date="2" type="HOLIDAY"><![CDATA[New Years Day (in lieu)]]></date>
<date year="2012" month="4" date="9" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2012" month="5" date="17" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2012" month="5" date="28" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2012" month="6" date="3" type="NEUTRAL"><![CDATA[Mothers Day]]></date>
<date year="2012" month="6" date="17" type="NEUTRAL"><![CDATA[Fathers Day]]></date>
<date year="2012" month="11" date="12" type="HOLIDAY"><![CDATA[Armistice Day (in Lieu)]]></date>
<date year="2012" month="12" date="25" type="HOLIDAY"><![CDATA[Christmas Day]]></date>
<date year="2013" month="4" date="1" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2013" month="5" date="9" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2013" month="5" date="20" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2013" month="5" date="26" type="NEUTRAL"><![CDATA[Mothers Day]]></date>
<date year="2013" month="6" date="16" type="NEUTRAL"><![CDATA[Fathers Day]]></date>
<date year="2014" month="4" date="21" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2014" month="5" date="25" type="NEUTRAL"><![CDATA[Mothers Day]]></date>
<date year="2014" month="5" date="29" type="NEUTRAL"><![CDATA[Ascension Day]]></date>
<date year="2014" month="6" date="9" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2014" month="6" date="15" type="HOLIDAY"><![CDATA[Fathers Day]]></date>
<date year="2015" month="4" date="6" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2015" month="5" date="14" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2015" month="5" date="24" type="NEUTRAL"><![CDATA[Mothers Day]]></date>
<date year="2015" month="5" date="25" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2015" month="6" date="21" type="NEUTRAL"><![CDATA[Fathers Day]]></date>
<date year="2016" month="3" date="28" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2016" month="5" date="5" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2016" month="5" date="16" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2016" month="5" date="29" type="NEUTRAL"><![CDATA[Mothers Day]]></date>
<date year="2016" month="6" date="19" type="NEUTRAL"><![CDATA[Fathers Day]]></date>
<date year="2016" month="12" date="26" type="HOLIDAY"><![CDATA[Christmas Day (observed)]]></date>
<date year="2017" month="4" date="17" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2017" month="5" date="25" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2017" month="5" date="28" type="NEUTRAL"><![CDATA[Mother's Day]]></date>
<date year="2017" month="6" date="5" type="HOLIDAY"><![CDATA[Whitmonday]]></date>
<date year="2017" month="6" date="18" type="NEUTRAL"><![CDATA[Father's Day]]></date>
<date year="2018" month="4" date="2" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2018" month="5" date="10" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2018" month="5" date="21" type="HOLIDAY"><![CDATA[Whit Monday]]></date>
<date year="2018" month="5" date="27" type="NEUTRAL"><![CDATA[Mother's Day]]></date>
<date year="2018" month="6" date="17" type="NEUTRAL"><![CDATA[Father's Day]]></date>
<date year="2019" month="4" date="22" type="HOLIDAY"><![CDATA[Easter Monday]]></date>
<date year="2019" month="5" date="30" type="HOLIDAY"><![CDATA[Ascension Day]]></date>
<date year="2019" month="6" date="10" type="HOLIDAY"><![CDATA[Whit Monday]]></date>
<date year="2019" month="5" date="26" type="NEUTRAL"><![CDATA[Mother's Day]]></date>
<date year="2019" month="6" date="16" type="NEUTRAL"><![CDATA[Father's Day]]></date>
<date year="2019" month="12" date="24" type="HOLIDAY"><![CDATA[Vacances sur 24/12/19 00:00]]></date>
<date year="2019" month="12" date="26" type="HOLIDAY"><![CDATA[Vacances sur 26/12/19 00:00]]></date>
<date year="2019" month="12" date="27" type="HOLIDAY"><![CDATA[Vacances sur 27/12/19 00:00]]></date>
<date year="2019" month="12" date="28" type="HOLIDAY"><![CDATA[Vacances sur 28/12/19 00:00]]></date>
<date year="2019" month="12" date="29" type="HOLIDAY"><![CDATA[Vacances sur 29/12/19 00:00]]></date>
<date year="2019" month="12" date="30" type="HOLIDAY"><![CDATA[Vacances sur 30/12/19 00:00]]></date>
<date year="2019" month="12" date="31" type="HOLIDAY"><![CDATA[Vacances sur 31/12/19 00:00]]></date>
<date year="2020" month="1" date="2" type="HOLIDAY"><![CDATA[Vacances sur 02/01/20 00:00]]></date>
<date year="2020" month="1" date="3" type="HOLIDAY"><![CDATA[Vacances sur 03/01/20 00:00]]></date>
</calendars>
<tasks empty-milestones="true">
<taskproperties>
<taskproperty id="tpd0" name="type" type="default" valuetype="icon"/>
<taskproperty id="tpd1" name="priority" type="default" valuetype="icon"/>
<taskproperty id="tpd2" name="info" type="default" valuetype="icon"/>
<taskproperty id="tpd3" name="name" type="default" valuetype="text"/>
<taskproperty id="tpd4" name="begindate" type="default" valuetype="date"/>
<taskproperty id="tpd5" name="enddate" type="default" valuetype="date"/>
<taskproperty id="tpd6" name="duration" type="default" valuetype="int"/>
<taskproperty id="tpd7" name="completion" type="default" valuetype="int"/>
<taskproperty id="tpd8" name="coordinator" type="default" valuetype="text"/>
<taskproperty id="tpd9" name="predecessorsr" type="default" valuetype="text"/>
</taskproperties>
<task id="11" name="Sprint 4" color="#8cb6ce" meeting="false" start="2020-02-14" duration="25" complete="0" thirdDate="2019-10-07" thirdDate-constraint="0" expand="true">
<task id="55" name="Intégration de fausses couleurs" color="#8cb6ce" meeting="false" start="2020-02-14" duration="11" complete="0" thirdDate="2019-09-02" thirdDate-constraint="0" expand="true">
<task id="287" name="Documentation sur CC" color="#8cb6ce" meeting="false" start="2020-02-14" duration="5" complete="0" thirdDate="2019-07-01" thirdDate-constraint="0" expand="true">
<depend id="334" type="2" difference="0" hardness="Strong"/>
</task>
<task id="334" name="Implémentation sur plugin" color="#8cb6ce" meeting="false" start="2020-02-19" duration="6" complete="0" thirdDate="2019-04-01" thirdDate-constraint="0" expand="true"/>
</task>
<task id="346" name="Revoir la marge d'erreur filtrage RGB" color="#8cb6ce" meeting="false" start="2020-02-25" duration="7" complete="0" thirdDate="2019-11-22" thirdDate-constraint="0" expand="true">
<task id="359" name="Réflexion sur son utilisation" color="#8cb6ce" meeting="false" start="2020-02-25" duration="4" complete="0" thirdDate="2019-12-17" thirdDate-constraint="0" expand="true">
<depend id="394" type="2" difference="0" hardness="Strong"/>
</task>
<task id="394" name="Implémentation" color="#8cb6ce" meeting="false" start="2020-02-29" duration="3" complete="0" thirdDate="2019-12-17" thirdDate-constraint="0" expand="true"/>
</task>
<task id="46" name="Terminer nouvelle méthode de segmentation" color="#8cb6ce" meeting="false" start="2020-02-14" duration="18" complete="0" thirdDate="2019-09-02" thirdDate-constraint="0" expand="true">
<task id="383" name="Finaliser l'algo" color="#8cb6ce" meeting="false" start="2020-02-14" duration="10" complete="0" thirdDate="2019-12-17" thirdDate-constraint="0" expand="true">
<depend id="384" type="2" difference="0" hardness="Strong"/>
</task>
<task id="384" name="Tests de performance" color="#8cb6ce" meeting="false" start="2020-02-24" duration="8" complete="0" thirdDate="2019-12-17" thirdDate-constraint="0" expand="true"/>
</task>
<task id="402" name="Toon mapping" color="#8cb6ce" meeting="false" start="2020-02-14" duration="18" complete="0" thirdDate="2020-02-13" thirdDate-constraint="0" expand="true">
<task id="44" name="Réflexion sur le principe" color="#8cb6ce" meeting="false" start="2020-02-14" duration="7" complete="0" thirdDate="2019-09-02" thirdDate-constraint="0" expand="true">
<depend id="406" type="2" difference="0" hardness="Strong"/>
</task>
<task id="406" name="Implémentation" color="#8cb6ce" meeting="false" start="2020-02-21" duration="11" complete="0" thirdDate="2020-02-28" thirdDate-constraint="0" expand="true"/>
</task>
<task id="420" name="Préparation rapport" color="#8cb6ce" meeting="false" start="2020-03-03" duration="7" complete="0" thirdDate="2020-02-25" thirdDate-constraint="0" expand="true">
<depend id="242" type="2" difference="0" hardness="Strong"/>
</task>
<task id="242" name="Rendu rapport sprint 4" color="#ff9900" meeting="true" start="2020-03-10" duration="0" complete="0" thirdDate="2019-11-19" thirdDate-constraint="0" expand="true"/>
<task id="430" name="Préparation soutenance" color="#8cb6ce" meeting="false" start="2020-02-24" duration="7" complete="0" thirdDate="2020-02-25" thirdDate-constraint="0" expand="true"/>
<task id="368" name="Soutenance 2 : Premières solutions" color="#ff0000" meeting="true" start="2020-03-06" duration="0" complete="0" thirdDate="2019-11-19" thirdDate-constraint="0" expand="true"/>
</task>
</tasks>
<resources>
<resource id="0" name="Tri-Thien" function="Default:0" contacts="" phone=""/>
<resource id="1" name="Mathieu" function="Default:0" contacts="" phone=""/>
<resource id="2" name="Ronan" function="Default:0" contacts="" phone=""/>
</resources>
<allocations>
<allocation task-id="346" resource-id="0" function="Default:0" responsible="true" load="100.0"/>
<allocation task-id="55" resource-id="0" function="Default:0" responsible="true" load="100.0"/>
<allocation task-id="430" resource-id="0" function="Default:0" responsible="true" load="100.0"/>
<allocation task-id="420" resource-id="0" function="Default:0" responsible="true" load="100.0"/>
<allocation task-id="402" resource-id="1" function="Default:0" responsible="true" load="100.0"/>
<allocation task-id="430" resource-id="1" function="Default:0" responsible="false" load="100.0"/>
<allocation task-id="420" resource-id="1" function="Default:0" responsible="false" load="100.0"/>
<allocation task-id="46" resource-id="2" function="Default:0" responsible="true" load="100.0"/>
<allocation task-id="430" resource-id="2" function="Default:0" responsible="false" load="100.0"/>
<allocation task-id="420" resource-id="2" function="Default:0" responsible="false" load="100.0"/>
</allocations>
<vacations/>
<previous/>
<roles roleset-name="Default"/>
</project>
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB