Après 2 ou 3 jours de recherche, je n'ai toujours pas trouvé de solution à mon problème.MATLAB- souris segmentation dans les images en niveaux de gris, qui est invariante aux ombres
Je veux créer une segmentation de la souris sans l'ombre. Le problème est que si je réussis à enlever l'ombre, j'enlève aussi la queue et les pieds ce qui est un problème. L'ombre vient du mur de l'arène dans laquelle se trouve la souris. Je veux supprimer l'ombre d'une image en niveaux de gris, mais je n'ai aucune idée de comment le faire. J'ai d'abord enlevé l'arrière-plan de l'image et j'obtiens l'image suivante.
edit1: Merci pour la réponse, il fonctionne bien quand l'ombre ne touche pas la souris. Voilà ce que je reçois autrement:
de cette image originale:
J'extrais chaque image à partir d'un fichier TIF et appliquez votre code pour chaque image. Voici le code que j'utilise:
for k=1:1000
%reads image
I = imread('souris3.tif',k);
%first stage: perform thesholding and fill holes
seg = I >20000;
seg = imfill(seg,'holes');
%fixes the missing tail problem
%extract edges, and add them to the segmentation.
edges = edge(I);
seg = seg | edges;
%fill holes (again)
seg = imfill(seg,'holes');
%find all the connected components
CC = bwconncomp(seg,8);
%keeps only the biggest CC
numPixels = cellfun(@numel,CC.PixelIdxList);
[biggest,idx] = max(numPixels);
seg = zeros(size(edges));
seg(CC.PixelIdxList{idx}) = 1;
imshow(seg);
end
Je choisis 20000 pour l'étape avec la commande impixelinfo
parce que l'image est en uint16
et c'est la valeur moyenne de la souris.
C'est le lien si vous voulez avoir le fichier TIF:
Merci d'aider.
Merci! Cela fonctionne bien quand l'ombre ne touche pas la souris. Je n'ai pas une seule image mais plusieurs et parfois l'ombre apparaît à nouveau. –
Vous pouvez télécharger le fichier tif avec le lien –
Merci! Si je trouve d'autres problèmes, je viendrai à vous bientôt –