Contour de détection dans MATLAB
Je suis en train d'essayer de comprendre ce code:
d=edge(d,'canny',.6);
figure,
imshow(d,[])
ds = bwareaopen(d,40);
figure,
imshow(ds,[])
iout = d1;
BW=ds;
iout(:,:,1) = iout;
iout(:,:,2) = iout(:,:,1);
iout(:,:,3) = iout(:,:,1);
iout(:,:,2) = min(iout(:,:,2) + BW, 1.0);
iout(:,:,3) = min(iout(:,:,3) + BW, 1.0);
Je comprends que d
est l'image et prudente détecteur est appliquée et 40 pixels sont négligés. L'image est en niveaux de gris et le contour est ajouté à l'image.
Pouvez-vous expliquer les lignes suivantes? Quel est le principe de/algorithme est utilisé ici? J'ai du mal surtout avec le contour de la phase de détection du code.
OriginalL'auteur user1234 | 2011-05-02
Vous devez vous connecter pour publier un commentaire.
En supposant que la variable
d1
magasins de ce qui est susceptible d'une double précision de la représentation (les valeurs entre 0 et 1) de l'original niveaux de gris de l'intensité de l'image qui est opéré, puis les 5 dernières lignes de transformer cette image en niveaux de gris dans une 3-D image RVBiout
qui regarde le même que l'original de l'image en niveaux de gris, sauf que les courbes de niveau seront placées sur l'image en cyan.Voici un exemple, en utilisant l'image
'cameraman.tif'
qui est inclus avec le logiciel MATLAB Boîte À Outils De Traitement D'Image:Et c'est ici la figure le code ci-dessus crée:
Comment il fonctionne...
La création de l'image
iout
n'a rien à voir avec le bord de l'algorithme de détection. C'est tout simplement un moyen facile de affichage les bords trouvé dans les étapes précédentes. 2-D de l'intensité des niveaux de gris de l'image ne peut pas afficher la couleur, donc si vous voulez ajouter de la couleur des lignes de contour sur l'image, vous devez d'abord le convertir en un format qui vous permettra d'afficher la couleur: soit un image indexée (qui est un peu plus difficile à gérer, dans mon expérience) ou un 3-D RVB de l'image (la troisième dimension représente le rouge, le vert et le bleu des composants de la couleur de chaque pixel).De la réplication de l'image en niveaux de gris 3 fois dans la troisième dimension nous donne un 3-D RVB de l'image qui, initialement, contient encore des couleurs grises (quantités égales de rouge, de vert et de bleu par pixel). Cependant, en modifiant certains pixels de chaque plan de couleur, nous pouvons ajouter de la couleur à l'image. En ajoutant la logique de bord masque
BW
(celles où les bords sont et des zéros ailleurs) à la couleur verte et bleue des avions, les pixels où les contours ont été trouvées apparaît cyan. L'appel à la fonctionmin
garantit que le résultat de l'ajout des images jamais des causes d'une couleur de pixel de valeur à dépasser la valeur1.0
, qui est la valeur maximale d'un élément doit avoir pour un double-précision 3-D RVB de l'image.Il convient également de noter que le code pour la création de la 3-D RVB de l'image peut être simplifié à l'suivantes:
wat, l'utilisation de la prise de valeur min?wat est son but?
J'ai ajouté plus de détails pour mon pour répondre à vos questions.
belle explication.merci beaucoup
J'ai un problème un peu différent. Voir, ici, nous avons tracé
edges
détecté par le savant détecteur de bord sur le haut de l'image à laquelle ces bords appartiennent. Ainsi, si dire laimage
est de taille300x300
, la variabled
, qui contient détecté bords est aussi unlogical
tableau de[300x300]
. Ce que je fais c'est que je viens de trouver les contours de la même[300x300]
image. Maintenant, la résultante de la matrice est de taille[2x7477]
. Comment puis-je tracer ces contours retour à laimage
d'où elles ont été extraites? (Vous pouvez voir la[300x300]
de l'image dont je parle [ici] (imgur.com/C54VGIl))OriginalL'auteur gnovice