Je veux tracer une ligne d'un point bien défini à un autre, puis la transformer en une matrice d'image pour utiliser un filtre gaussien pour le lissage. Pour cela, j'utilise les fonctions Mes questions sont les suivantes: p> Voici un échantillon de code minimal: p> [update] strong> p> marque haute performance Idée avec ligne code> et
getFrame code> pour tracer une ligne et capturer la fenêtre Figure dans une image, mais
getframe code> est très lent et non lent et non très fiable. J'ai remarqué que cela ne capture rien lorsque l'ordinateur est verrouillé et j'ai obtenu une erreur code> de mémoire code> après 170 exécutions.
getframe code> que je peux utiliser? Li>
linspace code> est très prometteuse, mais comment accéder aux coordonnées matricielles calculées avec
linspace code>? J'ai essayé le code suivant, mais cela ne fonctionne pas comme je pense que cela devrait. Je suppose que c'est une chose très simple et basique matlab, mais je ne peux tout simplement pas envelopper ma tête autour de lui: p>
4 Réponses :
quelque chose comme ceci: p>
[LINSPACE (30 200, NUMSTEPS); LINSPACE (35,60, NUMSTEPS)] P>
Est-ce que cela fonctionne pour vous? P>
marque p>
Linspace a l'air très prometteuse, mais comment accéder aux coordonnées de la matrice est-elle calculée avec Linspace? J'ai essayé les derniers 30 minutes, mais le code suivant ne fonctionne pas, car je pense que cela devrait .. (Scnr) Je suppose, c'est une chose très simple et basique matlab, mais je ne peux tout simplement pas envelopper ma tête autour de lui. matrice = zéros (200,60); diagonale = rond ([LINSPACE (30 200, NUMSTEPS); LINSPACE (35,60, NUMSTEPS)]); matrice (diagonale (1, :), diagonale (2, :)) = 1; imshow (matrice);
Voici un exemple de dessin d'une ligne directement dans une matrice. Tout d'abord, nous allons créer une matrice de zéros pour une image vide: puis, disons que nous voulons dessiner une ligne à partir de suivant, nous calculons des indices de ligne et de colonne pour les pixels de ligne utilisant (30, 35) code> à
(200, 60) code>. Nous calculerons d'abord combien de pixels longs la ligne devront être: p>
linspace code>
, convertissez-les des indices souscriptés en indices linéaires en utilisant Sub2ind code>
, puis utilisez-les pour modifier MAT CODE>: P>
subplot(1, 2, 1);
image(mat); % Show original line image
colormap(gray); % Change colormap
title('Line');
subplot(1, 2, 2);
h = fspecial('gaussian', 20, 10); % Create filter
filteredImg = imfilter(mat, h); % Filter image
image(filteredImg); % Show filtered line image
title('Filtered line');
Merci Gnovice pour votre réponse complète!
Vous pouvez vérifier ma réponse ici . C'est une façon robuste d'atteindre ce que vous demandez. Avantage de mon approche est qu'il n'a pas besoin de paramètres supplémentaires pour contrôler densité em> de la ligne dessinée. P>
Si vous avez une boîte à outils système de vision d'ordinateur, un objet ShapeInserter est disponible. Ceci peut être utilisé pour dessiner des lignes, des cercles, des rectangles et des polygones sur l'image. http: // www. mathworks.com/help/vision/ref/vision.shapeinserterclass.html p> p>
Donc, ce que vous faites est la rasâtretisation d'une image vectorielle. Beaucoup de bonnes références sur ce sujet, Wikipedia, comme toujours, est un bon endroit pour commencer.
Je sais, mais j'essaie toujours d'utiliser des fonctions de Matlab. Je n'apprençais pas autant, mais ils sont plus rapides et je n'ai pas à passer du temps à les déboguer comme mon propre code.