Géométrie Discrète - CM séance 04
4. Droites et plans discrets (suite)
4.4 Intersections de droites
Soit 2 droites 8-connexes \(D_1\) et \(D_2\), et \(S\) leur intersection.
Contrairement au cas de droites continues, \(S\) peut être
- vide lorsque les droites continues sont sécantes ;
- constitué de plusieurs points, éventuellement non connectés.
On peut voir empiriquement que \(S\) "grossi" et "s'allonge" lorsque l'angle entre les 2 droites est fin.
- Rappels :
- équation droite discrète 8-connexe : \(0 \leq ax + by +c < \max(|a|,|b|)\)
normale = \(\overrightarrow{(a,b)}\) ; vecteur directeur = \(\overrightarrow{(b,-a)}\) ; pente = \(-a/b\) .
Étude des cas d'intersection en fonction des 8 octants :
b^
| 0 <= a <= b : -1 <= pente <= 0
|
\ | /
\ | / 0 <= b <= a : pente <= -1
\|/
-------O-------> a
/|\
/ | \ 0 <= -b <= a : pente >= 1
/ | \
|
| 0 <= a <= -b : 0 <= pente <= 1
Remarque : en réalité il n'y a que 4 cas : si \(a < 0\), on a
\(0 \leq ax +by +c < \max(|a|,|b|)\)
\(\Leftrightarrow \; -\max(|a|,|b|) \leq ax +by +c -\max(|a|,|b|) < 0\)
\(\Leftrightarrow \; \max(|a|,|b|) \geq -ax -by -c+\max(|a|,|b|) > 0\)
\(\Leftrightarrow \; \max(|a|,|b|) > -ax -by -c+\max(|a|,|b|)-1 \geq 0\)
\(\Leftrightarrow \; 0 \leq -ax -by +c' < \max(|a|,|b|)\;\)
où \(\;c' = \max(|a|,|b|)-c-1\) .
On peut donc se ramener d'un octant \(a,b\) situé à gauche (\(a \leq 0\)) à l'octant central-symétrique \((-a,-b)\) situé à droite (\(-a \geq 0\)).
Rappel : décomposition en fractions continues :
Toute fraction peut se décomposer sous la forme
On note : \(a/b = [q_0, q_1, ... q_n]\).
Exemple :
151 / 34 = 4 + 15/34
34 / 15 = 2 + 4/15
15 / 4 = 3 + 3/4
4 / 3 = 1 + 1/3
Donc \(151/34 = 4+1/(2+1/(3+1/(1+1/3))) = [4,2,3,1,3]\).
- Théorème [Reveillès 1991 p.156] pour les droites 8-connexes :
- Soit \(D_1\) de pente \(a/b\), \(D_2\) de pente \(a'/b'\), tels que \(0 < a'/b' < a/b \leq 1\) (donc dans le même octant), \(\text{pgcd}(a,b) = \text{pgcd}(a',b') = 1\), et de restes \(c_1 = c'_1 = 0\) ; leurs équations sont donc : \(D_1 : 0 \leq ax - by < b\) ; \(D_2 : 0 \leq a'x -b'y < b'\) .
- Soit \([q_0, q_1, \ldots, q_n] = a/b\) ;
- alors \(S = D_1 \cap D_2\) est 8-connexe ssi l'une des inégalités est satisfaite :
Remarques :
- \(q_0\) = 0 car \(a/b < 1\) ;
- le théorème ne dépend que de \(q_1\) et \(q_2\), pas des termes suivants.
Théorème [Isabelle Sivignon 2004] :
- Si \(D_1\) et \(D_2\) appartiennent au même octant, alors on peut se ramener au théorème de Reveillès ci-dessus ;
- si \(D_1\) et \(D_2\) appartiennent à 2 octants voisins, alors \(S\) est soit vide, soit 8-connexe ;
- sinon \(S\) est soit vide, soit est 1 seul pixel.
Notation : on écrit \(a | b\) ("\(a\) divise \(b\)") si \(b \text{ mod } a = 0\).
\(\Leftrightarrow \exists k \in \Bbb{Z}\) tel que \(k\,a = b\) .
- Théorème pour les droites épaisses [Reveillès 1991 p.135] :
- \(D_1\) : \(0 \leq ax + by +c < \omega\)
\(D_2\) : \(0 \leq dx + ey +f < \psi\)
soit \(\Delta = a\,e - d\,b\) le déterminant ;
si \(\Delta | \omega\) et \(\Delta | \psi\), alors \(S\) pave le plan.
5. Transformations de distances
5.1 Distance discrète
Définition : une distance discrète sur \(\Bbb{Z}^n\) est une application \(d : \Bbb{Z}^n \times \Bbb{Z}^n \longrightarrow \Bbb{N}\) vérifiant : \(\forall A,B,C \in \Bbb{Z}^n\),
- positive : \(d(A,B) \geq 0\)
- définie : \(d(A,B) = 0 \Leftrightarrow A = B\)
- symétrique : \(d(A,B) = d(B,A)\)
- inégalité triangulaire : \(d(A,B) \leq d(A,C) + d(C,B)\)
Distances usuelles pour \((x_1, ...,x_n) \in \Bbb{R}^n\) : distances de Minkowski, induites par les normes \(\ell_p\) avec \(d_p(A,B) = \ell_p(\overrightarrow{AB})= \ell_p(B-A)\) :
\(\quad \ell_1 = \sum_{i=1 \ldots n} |x_i|\)
\(\quad \ell_2 = \sqrt{ \sum_{i=1 \ldots n} |x_i|^2 }\) (distance euclidienne)
\(\quad \ell_\infty = \sup_{i=1 \ldots n} |x_i|\)
- Exemple pour \(\Bbb{Z}^2\) dans la littérature :
- \(d_4(P,Q) = |xp - xq| + |yp - yq| = \ell_1(Q-P)\)
\(d_8(P,Q) = \max( |xp - xq| , |yp - yq| ) = \ell_\infty(Q-P)\)
Pourquoi ces noms ?
Définition d'une boule : \(B_d(P,r) = \big\{ Q : d(P,Q) \leq r \big\}\)
1 1 1 1
B_d_4(O,1) = 1 O 1 B_d_8(O,1) = 1 O 1
1 1 1 1
Boules \(d_4\) et \(d_8\) \(\Leftrightarrow\) voisinages \(N_4\) et \(N_8\).
Remarque : distance euclidienne, induite par la norme \(\ell_2\) : \(d_E(P,Q) = \sqrt{ |xp - xq|^2 + |yp - yq|^2 }\)
- valeurs dans \(\Bbb{R}\), pas dans \(\Bbb{N}\)
- \(d_E^2\) : valeurs dans \(\Bbb{N}\), mais :
d_E²( (0,0),(0,2) ) > d_E²( (0,0),(0,1) ) + d_E²( (0,1),(0,2) )
= 4 = 1 = 1
- Distance à un ensemble :
- soit \(d : \Bbb{Z}^n \times \Bbb{Z}^n \rightarrow \Bbb{N}\) une distance,
\(X \subset \Bbb{Z}^n\) un sous-ensemble non vide,
\(P \in \Bbb{Z}^n\) un point, alors
\(d(P,X) = \inf \left\{ d(P,Q) \,:\, Q \in X \right\}\) .
Remarque : \(P \in X \;\Rightarrow\; d(P,X) = 0\)
- Distance entre ensembles :
- soit \(d : \Bbb{Z}^n \times \Bbb{Z}^n \rightarrow \Bbb{N}\) une distance,
soit \(A, B \subset \Bbb{Z}^n\) des sous-ensembles non vides. - Distance de Hausdorff : \(d_H(A,B) = \max \big\{ \sup_{a \in A} d(a,B)\,,\; sup_{b \in B}\,d(b,A) \big\}\)
Autres distances entre ensembles pour la mesure de similarités : par ex. distance de Asplünd [1960].
5.2 Transformation de distance
- Définition :
- Soit \(I\) une image binaire,
\(X = \{ \,P \in I \,:\, I[P] > 0 \,\}\) = ensemble points forme,
\(\bar{X} = I \setminus X = \{ \,p \in I \,:\, I[P] = 0 \,\}\) = le fond, ou complémentaire - Soit \(d\) une distance discrète.
La transformation de distance \(DT_d(I)\) consiste à étiqueter chaque point objet à sa distance au complémentaire :
\(J\) est appelée l'image des distances (distance map).
5.2.1 Première approche par pelage
On construit l'image des contours successifs pour une connexité \((n, n')\) :
- à une étape \(k\), on considère :
- la forme \(X_k = \{ \text{points} \geq k \}\)
le complémentaire \(\bar{X}_k = \{ \text{points} < k \}\)
Algorithme :
- Initialisation :
\(X_1 = \{ \text{fond à 0, forme à } \infty \}\) (en prenant par exemple \(\infty\) =INT_MAX
dans<climits>
) - Étape \(k\) :
on abaisse à \(k\) les points du contour de \(X_k\) (ie. on marque à \(k\) les points \(> k\) qui ont au moins un \(n'\)-voisin \(< k\)). - Fin : quand \(X_k\) est vide.
Exemple : (taille 9x7, 0 tout autour)
+---+---+ +---+---+
. . | | | . . . . . . . | | | . . . . .
+---+---+---+---+---+---+ +---+---+---+---+---+---+
. | | | | | | | . . . | | | | | | | . .
+---+---+---+---+---+---+ +---+---+---+---+---+---+
. | | | | | | | . . . | | | | | | | . .
+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+
| | | | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+
| | | | | | | | . . | | | | | | | | . .
+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+
| | | | | | | | . . | | | | | | | | . .
+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+
| | . . | | | | . . . | | . . | | | | . . .
+---+ +---+---+---+ +---+ +---+---+---+
- Chaque point est à la distance \(k\) du fond → Image des contours = DT :
- n=8, n'=4 → \(d_4\)
n=4, n'=8 → \(d_8\) - Très inefficace :
- le nombre de passages dépend de l'épaisseur de la forme.
Exemple image 800x600 → jusqu'à 300 passages !
5.2.2 Détection de points caractéristiques : maximums locaux
Sur chaque contour \(k\), on marque les points qui n'ont pas de \(n'\)-voisin \(> k\).
- Algorithme :
- en 1 seul passage, recopie des max locaux dans le \(n'\)-voisinage dans une seconde image.
5.2.3 Transformation de distance inverse par pelage : RDT
L'ensemble des max locaux suffit pour retrouver la forme.
-
On cherche la valeur max dans l'image
-
pour \(k\) de max-1 à 1 :
on balaye l'image,
en marquant à \(k\) les points \(< k\) qui ont un \(n'\)-voisin \(> k\).
Chaque point de l'image résultante est à distance < de la valeur d'au moins un point de départ → image des distances inverse, RDT.
Très inefficace : le nombre de passages dépend de l'épaisseur de la forme.
Conclusion :
graph LR
A[Forme] -->|DT| B[max locaux]
B --> |RDT| C[Forme]