我想画一条从一个明确定义的点到另一个点的线,然后将其转换为图像矩阵,以便在其上使用高斯滤波器进行平滑处理。我使用函数
我的问题是:
line
和 getframe
来绘制一条线并捕获图形窗口中的图像,但是 getframe
很慢而且不太可靠。我注意到当计算机被锁定时它不会捕捉任何内容,并且在执行了 170 次之后出现了 out of memory
错误。我的问题是:
- 是否有替代品可以代替
getframe
使用? - 是否有办法直接创建图像矩阵并在其中绘制线条?
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));
[更新]
使用 linspace
的高性能 Mark提出的想法看起来非常有希望,但我该如何访问使用 linspace
计算出的矩阵坐标?我尝试了以下代码,但它并没有按照我的预期工作。我认为这是一个非常简单和基本的MATLAB问题,但我无法理解:
matrix=zeros(200,60);
diagonal=round([linspace(30,200,numSteps); linspace(35,60,numSteps)]);
matrix(diagonal(1,:), diagonal(2,:))=1;
imshow(matrix);