public static AdjacentPhoto newInstance(Photo photo, Vector2 dir, float dira) { AdjacentPhoto ap; if (pool_.Count > 0) { ap = pool_[pool_.Count - 1]; pool_.RemoveAt(pool_.Count - 1); } else { ap = new AdjacentPhoto(); } ap.photo_ = photo; ap.dir_ = dir; ap.dira_ = dira; return ap; }
public double PhotoDist(Photo p) { double distMax = (double)(Photo.FeatureSplit * Photo.FeatureSplit) * 2d;// Math.Sqrt(1.25d); double dist = 0.0; for (int j = 0; j < Photo.FeatureSplit * Photo.FeatureSplit; ++j) { dist += ResourceManager.HsvDist(this.color.feature_[j], p.color.feature_[j]); } // 距离正规化 dist /= distMax; dist += (this.color.variance_ - p.color.variance_) * (this.color.variance_ - p.color.variance_); dist /= 2d; return dist; }
public void AddAdjacentPhotoDisplay(Photo photo, Vector2 dir, float dira) { adjacencyDisplay_.Add(AdjacentPhoto.newInstance(photo, dir, dira)); }