2D体素的中心坐标表示2D点集。使用这些坐标,图片中的红点指的是(近似)质量/重力中心,即所有坐标的平均值。忽略不同的灰度值,尽管它们恰好提供了更好的2D体素可见性:-)
绿点(大致)是我想要得到的,但是如何(?),以原则上的方式(?)。因此,本质上,我们在二维体素空间中有一个连通集,或者是一组二维点,如果有帮助,可以假定是整数坐标。我想确定一个点,它相对于形状来说是“中心”的,但在形状上是绝对的,即集合的一部分。
伪代码和/或C/C++欢迎使用:-)
更新:如果结构更厚,我实际上希望绿色的点在中间,而不是在轮廓上。
发布于 2014-02-19 10:12:48
以下是可以在O(N)
中找到绿点的解决方案:
Find mean (xm,ym)
Suppose (xm+a),(ym+b) is a point in the dataset
E(xi,yi) = sum of squared distances of all points from (xi,yi)
E(xm,ym) = k because it is the mean.
E(xm+a,ym+b) = summation => (xi-(xm+a))^2 + (yi-(ym+b))^2
= summation => ((xi-xm)-a)^2 + ((yi-ym)-b)^2
= summation => (xi-xm)^2 + (yi-ym)^2 + a^2 + b^2 - 2a*(xi-xm) - 2b*(yi-ym)
= summation => (xi-xm)^2 + (yi-ym)^2 + summation => a^2 + b^2 +.....
summation => (xi-xm)^2 + (yi-ym)^2 = E(xm,ym) = k
Hence
E(a,b) = summation => a^2 + b^2 - 2a*(xi-xm) - 2b*(yi-ym)
as a,b are constant in summation
E(a,b) = (a^2+b^2)*N - 2a*(summation=>(xi-xm)) - 2b*(summation=>(yi-ym))
summation=>(xi-xm) = 0
summation=>(y1-ym) = 0
E(a,b) = a^2 + b^2
Now to get green point which will minimize E(a,b)
a = xk-xm
b = yk-ym
find (xp,yp)=>minimum{E(a,b)} among all (xk,yk)
summation=>(xi-xm) and summation=>(yi-ym) can be found in O(N) after finding mean
hence E(a,b) can be found in O(1) and (xp,yp) in O(N)
https://stackoverflow.com/questions/21867661
复制相似问题