Je veux tracer une ligne d'un point bien défini à un autre et ensuite la transformer en une matrice d'image pour utiliser un filtre gaussien pour le lisser. Pour cela, j'utilise les fonctions line
et getframe
pour tracer une ligne et capturer la fenêtre de la figure dans une image, mais getframe
est très lent et pas très fiable. J'ai remarqué qu'il ne capture rien quand l'ordinateur est verrouillé et j'ai eu une erreur out of memory
après 170 exécutions.Comment créer une matrice d'image avec une ligne dessinée dans MATLAB?
Mes questions sont les suivantes:
- Y at-il un substitut à
getframe
que je peux utiliser? - Existe-t-il un moyen de créer la matrice d'image et de tracer la ligne directement dedans?
Voici un exemple de code minimal:
figure1=line([30 35] ,[200 60]);
F= getframe;
hsize=40; sigma=20;
h = fspecial('gaussian',hsize,sigma);
filteredImg = imfilter(double(F.cdata), h,256);
imshow(uint8(filteredImg));
[mise à jour]
haute performance idée de Mark avec linspace
semble très prometteur, mais comment puis-je accéder à coordonnées calculées la matrice avec linspace
? J'ai essayé le code suivant, mais cela ne fonctionne pas comme je le pense. Je suppose que c'est une chose très simple et Matlab de base, mais je ne peux pas envelopper la tête autour de lui:
matrix=zeros(200,60);
diagonal=round([linspace(30,200,numSteps); linspace(35,60,numSteps)]);
matrix(diagonal(1,:), diagonal(2,:))=1;
imshow(matrix);
Alors, ce que vous faites est tramage d'une image vectorielle. Beaucoup de bonnes références sur ce sujet, Wikipedia, comme toujours, est un bon point de départ. –
Je sais, mais j'essaie toujours d'utiliser les fonctions propres de Matlab. Je n'apprends pas beaucoup, mais ils sont plus rapides et je n'ai pas besoin de passer du temps à les déboguer comme mon propre code. – Framester