1

J'ai une grande pile d'images montrant une barre avec des blobs foncés, dont la position change avec le temps (voir la figure, b). Pour détecter les blobs, j'utilise maintenant un seuil d'intensité (c sur la figure, où toutes les valeurs d'intensité inférieures au seuil sont réglées sur 1) puis je recherche des blobs dans l'image binaire en utilisant le code Matlab ci-dessous. Comme vous le voyez, l'image binaire est assez bruyante, ce qui complique le processus de détection des blobs. Avez-vous des suggestions sur la façon d'améliorer la détection de forme, y compris peut-être un algorithme d'apprentissage automatique? Merci!Détection de blobs à l'aide de l'apprentissage automatique?

code:

se = strel('disk',1); 
se_1 = strel('disk',3); 
pw2 = imclose(IM,se); 
pw3 = imopen(pw2,se_1); 
pw4 = imfill(pw3, 'holes'); 

% Consider only the blobs with more than threshold pixels 
[L,num] = bwlabel(pw4); 
counts = sum(bsxfun(@eq,L(:),1:num)); 
number_valid_counts = length(find(counts>threshold)); 

enter image description here

+0

Donc, fondamentalement, vous voulez juste extraire le blob de la figure B? ou le blob (à partir de la figure b) mius la barre (sur la figure c)? –

Répondre

1

Cela pourrait aider.

  1. Extrayez les caractéristiques de texture de la limite des blobs que vous voulez extraire. Cela peut être fait en utilisant Local binary patterns. Il y a beaucoup d'autres caractéristiques de texture, vous pouvez obtenir un aperçu détaillé here. Puis, utilisez-les pour former un classificateur binaire.

+0

Merci! Je vais essayer et vous faire savoir si cela fonctionne ;-) –

1

Il semble que les données sont comme impulsions dans le côté inférieur de l'image, je propose d'obtenir des images et à trancher des lignes verticales de pixels perpendiculaire à la direction d'impulsions, chaque fois fait une ligne de valeurs, un peu au-dessus et plus bas le pouls, la largeur de la bande est un pixel, et sa hauteur est un peu plus grande que l'image d'impulsion pour prendre certaines des valeurs de lumière inférieures et supérieures à l'impulsion, vous pouvez partir du pixel 420-490, chaque fois que vous enregistrez 70 valeurs de gris, celles-ci forment le vecteur de caractéristiques, prenez aussi des lignes des zones non blob pour les enregistrer pour la classe 2, faites cela sur plusieurs images et lignes de chaque image.

maintenant vous obtenez vos données d'entraînement, vous pouvez utiliser un algorithme d'apprentissage automatique pour former l'ordinateur pour des impulsions et des impulsions non,

dans l'étape de test, vous numérisez l'image de lecture à chaque fois 70 pixels verticalement et les tester par rapport au modèle entraîné, créez une nouvelle image noire si elle appartient à la classe "bolob" dessinez une ligne verticale blanche à partir de peu en dessous du pixel testé, sinon ne dessinez rien sur l'image de sortie. À la fin de la numérisation de l'image: vérifiez s'il y a une ligne blanche isolée que vous pouvez supprimer en la considérant comme fausse acceptée. Si vous trouvez une ligne sombre dans un groupe de lignes blanches, convertissez-la en blanc, en tenant compte du faux rejet.

vous pouvez utiliser mon classificateur: https://www.researchgate.net/publication/265168466_Solving_the_Problem_of_the_K_Parameter_in_the_KNN_Classifier_Using_an_Ensemble_Learning_Approach

si vous décidez que je vous enverrai Coed de le faire. la métrique de distance est un problème, car les valeurs varient entre 0 et 255, donc les valeurs de lumière domineront la distance, pour résoudre ce problème, vous pouvez utiliser la mesure de distance Hassanat à: https://www.researchgate.net/publication/264995324_Dimensionality_Invariant_Similarity_Measure

car il est invariant de mettre à l'échelle dans les données , car chaque caractéristique ne génère plus de valeur entre 0 et 1, donc les valeurs les plus élevées ne dominent pas la distance finale.

Bonne chance

+0

Bienvenue dans StackOverflow.C'est génial que vous aimeriez contribuer. Cependant, votre réponse ne répond pas vraiment à la question. Vous dites que «vous pouvez utiliser n'importe quel algorithme d'apprentissage automatique», ce qui n'est pas vraiment utile. Aussi, si vous savez quelque chose qui pourrait fonctionner (ce qui pourrait être votre propre algorithme), incluez un exemple minimal de la façon dont cela fonctionnerait. N'oubliez pas d'inclure les images d'entrée et de sortie afin que d'autres puissent reproduire votre résultat. Publier un lien vers votre propre article n'aide pas les futurs lecteurs car ce lien peut devenir invalide. – kkuilla

Questions connexes