可能重复:
detect if a pixel in RGB image belong to a line between two other pixels (MATLAB)
我想检测图像中的两个像素,并获得它们之间绘制线的所有像素
我不想绘制线条,我只想获得两个像素之间虚拟线条的所有像素位置[图像中的(x,y)] 。
MATLAB中的哪个函数可以帮助我编写代码,我该如何使用它?
谢谢!
答案 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的线算法会给出更准确的结果(更细,更漂亮的线)。