Lien de la note Hackmd
Filtrage
- Domaines spatial et frequentiel
- Lissage, elimination du bruit
- Detection de bords/coins
Quelques filtres classiques
- On s’appuie souvent sur le produit de convolution
- Matrice avec des coefficients
- On va recalculer la valeur d’un pixel en fonction de son voisinage
- Combinaison lineaire de tous les pixels voisins
Lissage, debruitage
Comment eliminer le bruit dans une image ?
- Filtre moyenneur
- Objectif: lisser l’image
- Donne une impression de flou
- Fonctionnement: on remplace la valeur d’un pixel par la moyenne des valeurs des pixels du voisinage
- Noyau de convolution:
- Objectif: lisser l’image
Comment choisir la taille/forme du voisinage ? On reste generalement sur des voisinages carres par soucis de performance
Resultats:
Si on continue et qu’on augmente la taille du masque: Le lissage est un peu trop fort et on perd des details.
Implementation
- Comment implementer un tel filtre ?
- Double boucle
- Que faire sur la bordure
- On ne traite pas les bords
- Recalculer sur la bordure avec des coeffs differents
- Dupliquer les dernieres et premieres lignes/colonne
- Image periodique: chercher les valeurs sur une autre periode
- il n’y a pas de bonnes reponses
Amelioration?
- Au lieu de faire contribuer tous les pixels egalement, on peut privilegier les pixels proches du centre
- Filtre Gaussien
Filtre Gaussien
- Objectif: lisser l’image
- Fonctionnement: on remplace la valeur d’un pixel par la moyenne ponderee des valeurs des pixels du voisinage
- Noyau de convolution: gaussienne
- Parametre/Taille du noyau ?
Resultat
Comparaison ave le filtre moyenneur
- Avantages/inconvenients ?
- moins l’impression de flou
- bonne amelioration
Filtre Median
- Objectif: debruitage
- Fonctionnement: trier l’ensemble des valeurs des intensites des pixels sur un voisinage puis remplacer la valeur du pixel considere par la valeur mediane sur le voisinage
Resultat
- Supprime facilement le bruit impulsionnel
- Preserve l’information de contour
- Est un peu lourd (tri)
Je suis pas du tout narcissique
On a completement enleve le bruit “poivre et sel” de la 2 image
Lissage
- Lissage (gaussien, moyenne…)
- Degrade les frontieres
- Solutions ?
- Faire contribuer principalement les pixels qui ont une couleur proche de la couleur du pixel considere ou ponderer leur apport en fonction de leur couleur
- Filtre de Nagao
- …
Gaussien selectif: seuil pour faire contribuer les pixel (si c’est inferieur, on les fait contribuer, sinon on les oublie).
- Permet de preserver les contours
Seuil a fixer
- S’il est trop tolerant: tend vers le gaussien normal
- Pas assez tolerant: reste sur l’image originale
Nagao
- Filtre de Nagao
- Tenir compte des regions?
- Faire un median mais dans la region de variance faible
Au lieu de prendre un masque centre sur le pixel, on va regarder sur differents voisinages
On calcule la variance a chaque zones rouges
- On calcule la moyenne sur le voisinage avec la variance la plus faible
- On ne veut pas faire une moyenne a cheval sur un contour
Resultats
Nagao: on a fortement lisse l’image mais on a garde les contours
Detection de bords
- Comment se caracterise un contour ?
- Comment trouver les contours ?
- Pourquoi trouver les contours ?
Definir la notion de bord/contour
- Transition brutale (echelon)
- En “escalier”
- Dans la vraie vie, jamais aussi brutale
- Quelle operation realiser pour detecter ce type de motif?
Calcul de la derivee ?
Si l’accroissement est plus fort en que en , on calcul le coefficient directeur. Quand la porte est tres fort, on a un contour.
Vecteur directeur en tout point de la courbe
Calcul de la derivee
En continu on a et on veut calculer ca correctement en dirscret.
- recherche de maxima locaux ?
Calcul de la derivee en 1 point x
- En continu:
- En discret on a du mal a aller vers 0
- En discret on a
- Dans notre cas (discret)
- ou
- Masques: ,
- Attention signal 2D
Roberts
- Filtre de Roberts
Contours pas forcement nets
Sobel, Prewitt
Filtres beaucoup plus communs. Sobel:
Pourquoi ces coefficients ?
On inclut le lissage
La difference:
- lisser par un filtre moyenneur / Sobel
- lisser par un filtre Gaussien / Prewitt
Resultats
On peut combiner les derivees:
- calculer amplitude du gradient
- calculer l’angle
Informations sur l’orientation du gradient
Comment recuperer les contours a partir de l’image du gradient ?
- Le vecteur gradient est orthogonal aux lignes de niveaux
- plus sa norme est grande plus la transition est forte
- On cherche une transition maximale
Differentes strategies pour recuperrer les contours:
- Seuillage
- Seuillage par hysteresis
- On cherche un seuil pour un profil
- On garde tout au dessus du seuil et on jette tout en dessous
- On inclut le motif a droite qu’on ne veut pas garder
- Pour regler ce probleme on utilise 2 seuils
- un seuil haut
- un seuil bas
- On a une 1 binarisation avec le seuil haut
- On perd de l’info
- On enleve le motif qu’on veut pas
- Le seuil tolerant garde beaucoup plus d’infos
- Hysteresis: on garde tous les resultats des seuils tolerant qui ont un contact avec le seuil haut
- Recherche de lignes de crete
Probleme:
- Contour ferme/contour ouvert ?
Kirsch, Robinson
Kirsch and Robinson Compass Masks (Filtres de compas):
On fait “tourner” le filtre.
“Sobel que l’on fait tourner”
L’amplitude est donnee par la plus forte reponse.
L’orientation est deduite du masque qui a donne la plus forte reponse.
Frei-Chen
Permet de trouver les gradients et d’autres motifs (lignes croises, point, etc.)
Edge | Line | |
---|---|---|
1. | 5. | 9. |
2. | 6. | |
3. | 7. | |
4. | 8. |
9 masquent qui forment une base
- Chaque sous-famille est capable de detecter un motif localement
La detectection se fait seulement avec:
Plus est grand, moins la bordure est marquee ( est entre 0 et ).
Avantages:
- Plus robuste a differents niveaux d’illumination
- Plus robuste car elimine les motifs lignes, points, etc. de la detection
- Peut etre utilise pour detecter les lignes en utilisant les masques 5 a 8 a la place des masques 1 a 4
Le laplacien
Utilisation de la derivee seconde
- Un point de contour est un passage a zero de la derivee seconde
Un point de contour n’est rien d’autre qu’un passage de la derivee seconde par 0.
Calcul du laplacien
Si on veut detecter les contours, il faut chercher les passage par 0 du resultat:
On a somme le masque horizontal et vertical
Les contours sont reperes par un changement de signe
On va plutot chercher un changement de signe (de forte amplitude)
Si il faut un des ou et inversement si
- La calcul des derivees est approche au moyen de filtres
- Simple et rapide
- Inconvenients: approximation, sensibilite au bruit, en particulier le Laplacien necessite de lisser le signal avant ou lors de la derivation
- Impact du lissage
- Robustess au bruit
- Delocalisation des points de contour
- Le Laplacien est sensible au bruit sur-segmentation
Evaluation de la qualite de detection de contours:
- Bonne detection
- Bonne localisation
- Reponse unique
Cf filtre de Canny/Deriche
Detection de points d’interet
- Detection de coins
- Comment se caracterise un coin ?
- Comment trouver les coins ?
- Pourquoi trouver les coins ?
Coin = gradient fort dans 2 directions
Moravec
Pour chaque point:
- On fait la somme des differences des intensites entre un voisinage centre sur le point et le voisinage decale
- On reitere le calcul avec des decalages dans toutes les directions
- Pour chaque point, on garde, parmi tous les decalages le resultat de qui a donne la plus faible valeur
Moravec:
- Calcul d’un critere sur toute l’image
- On calcul un critere pour chaque point
Un coin est un maximum local de
Desavantages:
- Sensible au bruit (des petites imperfections peuvent etre prises pour des coins)
- Contours de certaines directions peuvent etre pris pour des coins (anisotrope car on considere que quelques directions)
Harris
Revision du critere pour etre plus robuste
Critere:
Ce qui donne:
- Avec une gaussienne
Nouveau critere H
- trace
- les deux valeurs propres
- et
- contour
- ras
- coin
- grand diminue et le detecteur est moins sensible
- petit diminue et le detecteur est plus sensible
Achard, Bigorgne, Devars
- Detection basee sur le produit vectoriel
- Pres d’un coin, la norme du produit vectoriel entre 2 vecteur gradient est grande
- Dans une zone homogene elle est faible
- La norme des vecteurs gradients est petite
- Sur un contour elle est faibke aussi
- L’angle frome entre 2 vecteurs gradients proches est petit
Pour chaque point , avec un voisinage , on determine un critere :
Resultats
Amelioration de la nettete
Laplacien
- Retour sur la derivee seconde (Laplacien)
Renforcement de la nettete
: Ce qu’on ainerai c’est combine et pour ecarter les amplitudes des extremums avant et apres
On prend et lui on lui retranche fois la derivee seconde pour accroitre le contraste locale
Rajouter au centre c’est comme rajouter l’image complete
Resultats
- Augmente la nettete
- Renforce le bruit
C’est l’inverse de ce qu’on a fait au debut
Conclusion
Tout ce qu’on a fait jusqu’a present est faux car on a pas pris en compte la correction gamma.