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.
En utilisant certains code du site MathWorks File Exchange, j'ai obtenu la sortie suivante.
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 de sortie après différentes orientations du filtre gabor:
comment puis-je isoler ce DENT qui a été détecté correctement?
Réponses:
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 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.
la source
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:
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
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?
la source