计算图像上两点之间的像素

时间:2012-03-07 09:34:10

标签: android iphone algorithm pixel

原来我并没有解释我想要做的很好,所以我将重新编写整个问题并添加图形以帮助解释。

我正在为Android / iPhone设计一个应用程序。我已经为它设计了一个算法,但我坚持下一个算法。我的目标是在图像上放置两条水平线(任何图像,只是iPhone / android拍摄的图片),然后计算线条所在的像素,然后计算它们之间的像素数。 即 拍下这张图片:

http://i.stack.imgur.com/41vS1.png

然后在图像上的任意位置放置两条水平线,如下所示:

http://i.stack.imgur.com/ne4tV.png

我想要计算的是y的值,或者两条线之间有多少垂直像素。要做到这一点,我必须知道两条线上的像素。 假设水平线的高度都只有1个像素,我将用它来计算出线条所在图像中的像素。即在每条水平线上y截距(y = mx + c)或c的值是多少。 为了进一步解释我的意思,我们假设图像是图形。每个像素等于1的值,因此对于分辨率为1920x2560的图像,y轴的最大值将为1920,x轴的最大值将为2560.如何设计算法来计算两条线的y轴截距都是?

1 个答案:

答案 0 :(得分:3)

两点之间的距离(毕达哥拉):

dx = x1 - x2;
dy = y1 - y2;

dist = sqrt (dx*dx + dy*dy);

两条水平线之间的距离:

d = y1 - y2;

如果您的行被定义为y1 = k1x + n1y2 = k2x + n2,那么(它们是水平的,k1k2是0)它们之间的距离是{{1 }}

编辑:好的,在您编辑完问题之后,它现在更有意义了。但仍然是:由于您(或用户)正在添加行,您的代码始终知道它们所在的位置。他们的结束坐标是:

line1:{(0,y1):( picture.width,y1)} line2:{(0,y2):( picture.width,y2)} 距离:| y2-y1 |

因为它们都是水平的,所以它们永远不会交叉。

您应该在适当的空间中保留对y1和y2(来自行放置代码)的引用。由于您的问题适用于Android和iOS,因此答案是:在代码中与MVC中的n2 - n1对应的部分。