得到一行的像素 - : - MATLAB

时间:2010-12-16 12:44:50

标签: matlab plot line

  

可能重复:
  detect if a pixel in RGB image belong to a line between two other pixels (MATLAB)

我想检测图像中的两个像素,并获得它们之间绘制线的所有像素

我不想绘制线条,我只想获得两个像素之间虚拟线条的所有像素位置[图像中的(x,y)] 。

MATLAB中的哪个函数可以帮助我编写代码,我该如何使用它?

谢谢!

3 个答案:

答案 0 :(得分:5)

您需要Bresenham's line algorithm之类的内容。我不知道Matlab的功能,但现在你知道你在寻找什么,你的搜索可能会更有成效。并且在Matlab中实现并不是很困难。

答案 1 :(得分:1)

如果我理解你的问题,你有两个问题。

(1)如何检测图像中的两个像素 ---这很大程度上取决于你在问题中未提及的其他事物,它们的属性,例如它们的颜色,图像中的位置(它们在一起或分开),这两个像素相对于整个图像大小(设计一种有效的检测方法。)

(2)如何显示它们之间没有线条的像素 ---我想你可以给所有像素位置移0.5,并用'pcolor'显示图像。然后,您可以键入如下:

  

p = pcolor(X,Y,C);

     

set(p,'EdgeColor','none'); %这将删除像素之间的线。

祝你好运。

答案 2 :(得分:0)

求解简单的y = m*x + b线性方程(或其参数形式),然后检查线经过哪些像素也可能就足够了。这实际上取决于你想要你的线的精确程度。当然,Bresenham的线算法会给出更准确的结果(更细,更漂亮的线)。