【发布时间】:2009-12-21 15:44:30
【问题描述】:
我想绘制一条从一个明确定义的点到另一个点的线,然后将其转换为图像矩阵,以在其上使用高斯滤波器进行平滑处理。为此,我使用函数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));
[更新]
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);
【问题讨论】:
-
所以,你正在做的是矢量图像的光栅化。关于这个主题有很多很好的参考资料,维基百科一如既往地是一个很好的起点。
-
我知道,但我总是尝试使用 Matlab 自带的函数。我学的不多,但它们更快,而且我不必像我自己的代码那样花时间调试它们。
标签: matlab image-processing matrix plot line