Quiero trazar una línea desde un punto bien definido a otro y luego convertirla en una matriz de imagen para usar un filtro Gaussiano para suavizar. Para esto utilizo las funciones line
y getframe
para trazar una línea y capturar la ventana de figura en una imagen, pero getframe
es muy lento y poco confiable. Me di cuenta de que no captura nada cuando la computadora está bloqueada y recibí un error out of memory
después de 170 ejecuciones.¿Cómo creo una matriz de imágenes con una línea dibujada en MATLAB?
Mis preguntas son:
- ¿Hay un sustituto para
getframe
que puedo usar? - ¿Hay alguna manera de crear la matriz de imágenes y dibujar la línea directamente en ella?
Aquí es un ejemplo de código mínima:
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));
[Actualización]
de alto rendimiento idea de Mark con linspace
parece muy prometedor, pero ¿cómo puedo acceder a la matriz de coordenadas calculadas con linspace
? Probé el siguiente código, pero no funciona como creo que debería. Asumo que es una muy simple y básica que MATLAB, pero simplemente no puedo envolver mi cabeza alrededor de ella:
matrix=zeros(200,60);
diagonal=round([linspace(30,200,numSteps); linspace(35,60,numSteps)]);
matrix(diagonal(1,:), diagonal(2,:))=1;
imshow(matrix);
Por lo tanto, lo que está haciendo es rasterización una imagen vectorial de. Muchas buenas referencias sobre este tema, Wikipedia, como siempre, es un buen lugar para comenzar. –
Lo sé, pero siempre trato de usar las propias funciones de Matlab. No aprendo tanto, pero son más rápidos y no tengo que pasar mucho tiempo depurándolos como mi propio código. – Framester