\section{qHPR - Hidden Point Removal}
\index{qHPR, filtrage de points}
\label{subsection:qHPR}

\par
La fonction \textbf{H}idden \textbf{P}oints \textbf{R}emoval tente, comme son nom
l'indique, de filtrer le nuage de points sélectionné de sorte à ne conserver que les
points \emph{visibles} (correspondant à la surface implicite effectivement visible depuis
le point de vue courant\index{point de vue}). Les points considérés comme étant masqués
sont alors cachés. Le résultat dépend donc fortement du point de vue.\\

\begin{figure}[!htb]
\begin{center}
\includegraphics[width=0.5\textwidth]{Partie3_Fonctions/HPRExample.jpg}
\caption{\label{fig:PCVExample}Nuage de point complet (en haut) et nuage de point filtré avec la technique "HPR" (en bas)}
\end{center}
\end{figure}

\par
La notion de visibilité pour les points d'un nuage est relativement complexe à estimer.
En effet il est très peu probable qu'un point soit réellement masqué par
d'autres points dans un nuage, puisque celà nécessiterait un alignement parfait entre paires
de points ou une densité du nuage telle que les points soient quasiment en contact. Cette fonction
approxime donc la notion de visibilité via un calcul d'enveloppe convexe. Elle se base sur l'article
\emph{Direct Visibility of Point Sets} de Katz, Tal et Basri, SIGGRAPH 2007.
\\
\par
Pour calculer les occlusions par HPR, il est nécessaire que le contexte graphique du nuage soit en
projection perspective (cf. section \ref{subsection:centeredPerspective}). Si ce n'est pas le cas,
un message d'erreur prévient l'utilisateur lui demandant d'activer la projection perspective\index{projection!pour visualisation}.
L'utilisateur doit ensuite choisir le niveau d'octree utilisé par la fonction (figure \ref{fig:HPRLevelChoice}).
Le niveau d'octree\index{octree} permet d'accélerer le calcul de l'enveloppe convexe (structure assez lourde)
en réduisant le nombre de points utilisés (par sous-échantillonnage). Plus le niveau est élevé, et plus
le calcul d'occlusion sera fin, mais plus le traitement sera long.
\\

\begin{figure}[!htb]
\begin{center}
\includegraphics[width=0.3\textwidth]{Partie3_Fonctions/HPRLevelChoice}
\caption{\label{fig:HPRLevelChoice}Interface de choix de niveau d'octree}
\end{center}
\end{figure}

\par
Une fois le filtrage effectué, celui-ci n'est valide que pour la position de caméra courante (et des positions très
proches dans une certaine mensure). Il faut relancer l'outil pour mettre à jour le filtrage selon tout nouveau point
de vue.\\
\par
\textcolor[rgb]{1.00,0.00,0.00}{Attention, les points cachés par cette méthodes ne peuvent pas être ré-affichés
via une méthode ad-hoc (pour l'instant). Il faut en attendant utiliser un artifice : activer l'outil de segmentation
manuelle sur le nuage (l'icône des "ciseaux" - section~\ref{subsection:graphicalSegmentation}) qui réinitialise
l'information de visibilité par point) puis quitter ce mode.}
