Le filtre Gabor peut-il être utilisé pour détecter les bosses dans les voitures?

16

Je fais des recherches sur les filtres Gabor pour détecter les bosses dans les voitures. Je sais que les filtres Gabor ont été largement utilisés pour la reconnaissance des formes, la reconnaissance des empreintes digitales, etc.

J'ai une image.

Image brute

En utilisant certains code du site MathWorks File Exchange, j'ai obtenu la sortie suivante.

Image traitée

ce qui n'est pas en quelque sorte la sortie que l'on attend. Ce n'est pas un bon résultat.

Le mon script est le suivant:

I = imread('dent.jpg');
I = rgb2gray(I);
[G, gabout] = gaborfilter1(I, 2, 4, 16, pi/2);
figure
imshow(uint8(gabout));

EDIT: application d'un code différent à l'image suivante:

image d'entrée

Image de sortie après différentes orientations du filtre gabor:

entrez la description de l'image ici

comment puis-je isoler ce DENT qui a été détecté correctement?

vini
la source
1
I = imread ('dent.jpg'); I = rgb2gray (I); [G, gabout] = gaborfilter1 (I, 2,4,16, pi / 2); figure, imshow (uint8 (gabout)); Ont utilisé les paramètres suivants
vini
Que demandez-vous?
Andrey Rubshtein
2
Qu'est-ce que le filtre Gabor vous fait penser qu'il est bien adapté à ce problème?
Nzbuu
Son possible par traitement d'image, le style est toujours uniforme et la bosselure n'est pas uniforme, il y aura peu de chance une bosselure qui a un bord non uniforme. Il peut s'agir d'une analyse du modèle du bord de la dent.

Réponses:

21

C'est un problème extrêmement difficile. Je faisais partie d'une équipe qui y travaillait depuis plusieurs années, et ayant développé et pris en charge d'autres applications de ce type pendant longtemps, je peux dire que la détection des bosses est un problème particulièrement délicat et beaucoup plus difficile qu'il n'y paraît au premier abord.

Faire fonctionner un algorithme dans des conditions de laboratoire ou sur des images connues est une chose; développer un système précis et robuste pour des images "naturelles" telles que des voitures vues sur un parking nécessiterait probablement une équipe travaillant pendant plusieurs années. En plus du problème central de la création de l'algorithme, il existe de nombreuses autres difficultés d'ingénierie.

L'exemple de code que vous avez testé n'est pas un mauvais début. Si vous pouviez trouver les bords autour du côté droit sombre de la bosselure, vous pourriez comparer la carte des bords de la voiture avec le ding à une carte des bords d'une bonne voiture connue imagée sous le même angle avec le même éclairage. Le contrôle de l'éclairage vous aidera beaucoup.

Les problèmes à considérer sont les suivants:

  1. Éclairage (beaucoup plus difficile qu'il n'y paraît à première vue)
  2. Surface 3D attendue du panneau extérieur assemblé (par exemple à partir de données CAO)
  3. Critères caractérisant une bosselure: surface, profondeur, profil, etc.
  4. Critères pour les faux négatifs et les faux positifs
  5. Moyens pour enregistrer les données de bosses et / ou cartographier les bosses sur un modèle de voiture (ou disposition papillon)
  6. Méthodologie et appareil pour mesurer les «vraies» caractéristiques de la dent: profondeur, surface, etc.
  7. Vaste base de données de bosses provenant d'un échantillonnage aléatoire de véhicules
  8. Gérer différentes couleurs et finitions de peinture

1. Éclairage Comme Martin B l'a noté correctement ci-dessus, un éclairage correct est essentiel pour ce problème. Même avec un bon éclairage structuré, vous aurez beaucoup de difficulté à détecter les petites bosses près des lignes caractéristiques, les écarts entre les panneaux, les poignées, etc.

L'entrée Wikipedia pour l'éclairage structuré est un peu mince, mais c'est un début pour comprendre le principe: http://en.wikipedia.org/wiki/Structured_light

Des bandes claires peuvent être utilisées pour détecter les entrants (bosses) et les extérieurs (boutons). Pour voir un ding, vous aurez besoin d'un mouvement relatif entre la source de lumière et la voiture. Soit la lumière + la caméra se déplacent ensemble par rapport à la voiture, soit la voiture passe devant la lumière + la caméra.

Bien que les entrants et les extérieurs aient des aspects caractéristiques lorsqu'ils sont vus au bord d'une bande claire, la détectabilité d'un bossage donné dépend de la taille et de la profondeur de la dent par rapport à la largeur de la bande claire. La courbure d'une voiture est complexe, il est donc assez difficile de présenter une bande lumineuse cohérente à un appareil photo. Lorsque la bande lumineuse se déplace sur la carrosserie de la voiture, la courbure et même l'intensité de la bande lumineuse varient.

Une solution partielle consiste à garantir que la caméra et la bande lumineuse toujours à un angle cohérent par rapport à la normale (la perpendiculaire 3D) de la partie de la surface inspectée. En pratique, un robot devrait déplacer la caméra avec précision par rapport à la surface du corps. Déplacer le robot avec précision nécessite une connaissance de la pose (position et angles 3D) de la carrosserie, ce qui est un problème désagréable en soi.

Pour toute inspection des applications automobiles, vous devez contrôler complètement l'éclairage. Cela signifie non seulement de placer des lumières de votre choix à des endroits connus, mais également de bloquer toutes les autres lumières. Cela signifiera une enceinte assez grande. Étant donné que les panneaux de la voiture sont incurvés vers l'extérieur (presque comme une surface sphérique), ils réfléchissent la lumière des sources tout autour d'eux. Pour simplifier grandement ce problème, vous pouvez utiliser une barre fluorescente haute fréquence à l'intérieur d'une enceinte enveloppée de velours noir. Très souvent, il est nécessaire d'aller à des extrêmes comme celui-ci pour les applications d'inspection.

2. Surface 3D La surface extérieure d'une voiture est composée de courbes complexes. Afin de savoir si un endroit suspect est un ding, vous devez comparer cet endroit aux caractéristiques connues de la voiture. Cela signifie que vous devez faire correspondre l'image 2D d'une caméra à un modèle 3D vu sous un certain angle. Ce n'est pas un problème résolu rapidement, et il est assez difficile de bien faire que certaines entreprises s'y spécialisent.

3. Caractérisation des défauts Pour la recherche universitaire ou les tests en laboratoire, il peut être suffisant de développer un algorithme qui promet ou améliore une méthode existante. Pour résoudre correctement ce problème pour une utilisation commerciale ou industrielle réelle, vous devez disposer d'une spécification très détaillée pour la taille des bosses que vous souhaitez détecter.

Lorsque nous avons abordé ce problème, il n'existait aucune norme industrielle ou nationale raisonnable pour les bosses (déformations 3D). Autrement dit, il n'y avait pas de technique convenue pour caractériser une bosse par sa surface, sa profondeur et sa forme. Nous venons d'avoir des échantillons qui, selon les experts de l'industrie, étaient mauvais, pas trop mauvais et marginaux en termes de gravité. La définition de la «profondeur» d'un ding est également délicate, car un ding est une indentation 3D dans (généralement) une surface 3D incurvée vers l'extérieur.

Les gros coups sont plus faciles à détecter, mais ils sont également moins courants. Un travailleur automobile expérimenté peut scanner rapidement une carrosserie de voiture - beaucoup plus rapidement qu'un observateur non formé - et trouver rapidement des bosses peu profondes de la taille de votre petit doigt. Pour justifier le coût d'un système automatisé, vous devrez probablement correspondre à la capacité d'un observateur expérimenté.

4. Critères pour les erreurs de détection Au début, vous devez définir des critères pour les faux négatifs et les faux positifs acceptables. Même si vous étudiez simplement ce problème en tant que projet de R & D et n'avez pas l'intention de développer un produit, essayez de définir vos critères de détection.

faux négatif: dent présente, mais non détectée faux positif: zone non tachetée identifiée comme dent

Il y a généralement un compromis: augmenter la sensibilité et vous trouverez plus de dings (diminuer les faux négatifs), mais vous trouverez également plus de dings qui ne sont pas là (augmenter les faux positifs). Il est assez facile de se convaincre qu'un algorithme fonctionne mieux qu'il ne le fait réellement: notre biais naturel est de remarquer les défauts détectés par l'algorithme et d'expliquer ceux qu'il n'a pas détectés. Effectuez des tests aveugles et automatisés. Si possible, demandez à quelqu'un d'autre de mesurer les coups et d'attribuer la gravité afin que vous ne sachiez pas quelles sont les vraies mesures.

5. Enregistrer les données et / ou les cartographier Une bosse est caractérisée par sa gravité et son emplacement sur la carrosserie de la voiture. Pour connaître son emplacement, vous devez résoudre le problème de correspondance 2D-3D mentionné ci-dessus.

6. Déterminer la "vraie" forme des bosses Les dents sont difficiles à mesurer. Une bosselure nette et une bosselure arrondie de la même surface et de la même profondeur seront différentes. La mesure des bosses par des moyens mécaniques conduit à des jugements subjectifs, et il est également assez fastidieux d'utiliser des jauges de profondeur, des règles, etc., lorsque vous devrez probablement mesurer des dizaines sinon plus.

C'est l'un des problèmes d'ingénierie les plus difficiles à résoudre pour tout projet de détection de défauts dans la fabrication: comment mesurer et caractériser un défaut? s'il existe une norme à cet effet, la norme est-elle bien corrélée à quelque chose que le système d'inspection mesure? si le système d'inspection ne trouve pas de ding qu'il "aurait dû" trouver, qui est à blâmer?

Cela dit, si un système d'inspection fonctionne suffisamment bien pour un échantillon de défauts connus, les utilisateurs peuvent finir par lui faire confiance et le système lui-même devient la norme pour définir la gravité des défauts.

7. Base de données complète de bosses Idéalement, vous auriez des centaines, voire des milliers, d'échantillons d'images de bosses de différentes gravités à différents endroits sur des véhicules de fabricants difficiles. Si vous souhaitez trouver des bosses causées par des accidents pendant le processus d'assemblage, la collecte de ce type de données peut prendre du temps. Les bosses causées pendant le processus d'assemblage ne sont pas courantes.

Si vous êtes uniquement intéressé à trouver des bosses causées par des accidents ou des dommages environnementaux, alors c'est autre chose. Les types de bosses seront différents de ceux causés par des chocs accidentels à l'intérieur d'une usine d'assemblage automobile.

8. Traitement de différentes couleurs de peinture Il est vrai que les détecteurs de bord peuvent être raisonnablement robustes pour détecter les bords dans des images de niveaux de contraste différents, mais il peut être assez décourageant de voir ce que "différents niveaux de contraste" signifient réellement pour différentes peintures et finitions automobiles . Une bande claire qui a fière allure sur une voiture noire brillante pourrait être à peine détectable sur une voiture blanche avec de la vieille peinture.

La plupart des caméras ont une plage dynamique relativement limitée, il est donc difficile d'obtenir un bon contraste à la fois pour les surfaces brillantes noires et les surfaces ternes blanches. Il est fort probable que vous deviez contrôler automatiquement l'intensité lumineuse. C'est difficile aussi.

Repenser
la source
n'y a-t-il pas de base de données d'images que je pourrais obtenir sur les bosses? et une réponse brillante que je n'ai jamais connue autant ...
vini
2
Je ne suis pas sûr qu'il existe une telle base de données car la plupart des informations sont propriétaires. Les constructeurs automobiles ne voudraient pas nécessairement diffuser au monde la taille et les types de défauts qu'ils voient dans la fabrication. Cela dit, sans un système de mesure robuste, les statistiques peuvent être basées sur une inspection visuelle humaine dans l'usine, qui peut être basée sur un échantillonnage, ou sur des rapports de dommages des concessionnaires automobiles. Une voiture qui a été cabossée avant d'arriver chez un concessionnaire peut devenir invendue, ce qui signifie une perte d'argent et un gaspillage de ressources.
Repenser le
1
Les ateliers de réparation de bosses utilisent des bandes claires, bien que leur configuration soit plus adaptée à l'inspection humaine qu'à l'inspection automatisée: exceldent.wordpress.com/tag/door-ding-repair ncfixadent.com/services/paintless-dent-repair-pdr Pour un système automatisé , vous voulez bloquer toute lumière étrangère, y compris les reflets du boîtier d'éclairage lui-même. De plus, il est nécessaire de régler la mise au point de la caméra de manière à trouver un équilibre entre le maintien de la mise au point de la source de lumière afin que les bords soient nets et la mise au point de la surface du véhicule pour voir les caractéristiques du véhicule.
Repenser le
Hey rethunk en ce moment je suis en train de formuler une solution pour la même chose est-il de toute façon d'obtenir des photos de bosses et de rayures de voiture, etc. qui pourraient aider dans mes recherches, s'il vous plaît, aidez-moi!
vini
1
Il peut être difficile de rassembler des photos de bosses et de rayures. Il faudra probablement un peu de travail pour les jambes. Il n'y a pas beaucoup de photos appropriées en ligne. Vous pouvez appeler un atelier de réparation automobile et demander si vous pouvez prendre des photos des véhicules dont ils disposent; en retour, vous pourriez faire la boutique dans vos rapports. Demandez à vos amis et collègues si vous pouvez prendre des photos de leurs voitures - apportez une lampe fluorescente portative pour l'éclairage. Un téléphone Acamera serait bien. Le mieux serait d'obtenir des panneaux bosselés et non dentelés dans un dépotoir. Il est préférable d'avoir vos propres échantillons dès le début afin de pouvoir modifier l'éclairage, etc.
Repenser le
9

Un filtre Gabor n'est que la première des nombreuses étapes que vous utiliseriez pour une telle tâche de détection de défaut. Notez également que vous n'avez utilisé qu'une orientation et une échelle spécifiques du filtre Gabor - vous utiliseriez généralement toute une gamme d'orientations et d'échelles.

Un aperçu très sommaire d'une approche simple de détection de défauts utilisant des filtres Gabor pourrait être le suivant:

  • Appliquer le filtre Gabor à différentes orientations et échelles
  • Appliquer un classificateur (formé sur les données de formation appropriées) pour classer chaque pixel comme "défectueux" ou "non défectueux"
  • Agréger les détections des pixels voisins pour vous assurer que chaque défaut n'est détecté qu'une seule fois et pour éliminer les détections parasites

Un point qui ne figure pas sur cette liste mais qui est généralement très important est l'acquisition d'images. La façon dont vous éclairez votre objet et placez vos caméras a une énorme influence sur la facilité avec laquelle il sera facile de détecter les défauts dans les images résultantes. Votre échantillon d'image semble utiliser l'éclairage environnemental qui se trouvait à l'époque - ce n'est probablement pas optimal.

Comme je l'ai dit, ce n'est qu'un aperçu très approximatif. L'inspection automatique est un domaine vaste et nécessite beaucoup d'expertise pour bien le faire.


la source
0

Non, ça ne peut pas. Le traitement d'image n'est pas magique, vous devez fournir plus d'informations. Sans une idée de l'apparence de la voiture, comment l'ordinateur est-il censé distinguer une bosselure du style de carrosserie prévu?

so12311
la source
1
je sais que ce n'est pas magique et les images que j'ai obtenues de google..c'est pourquoi je voulais une entrée sur la façon dont j'aborderais ce problème ... simplement utiliser ce filtre n'est pas suffisant ...
vini
Je veux voter cela, mais ce n'est pas une vraie réponse. Ce devrait être un commentaire.
endolith