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