X-Git-Url: http://git.tomasm.cz/imago.git/blobdiff_plain/ed2f10b265485040197402bbd5dbe0dd6058cb11..f22e2954fe1c40b1e706945ae295a363e2d347d9:/src/ransac.py diff --git a/src/ransac.py b/src/ransac.py index cc16d2f..6557ea4 100644 --- a/src/ransac.py +++ b/src/ransac.py @@ -48,6 +48,9 @@ class Linear_model: score += min(d, dist) return score, cons + def remove(self, data): + self.data = list(set(self.data) - set(data)) + def iterate(model, distance): score = float("inf") consensual = model.initial() @@ -78,20 +81,13 @@ def estimate(data, dist, k, modelClass=Linear_model, model=None): return estimate, consensual -def ransac_duo(data, dist, k, mk, modelClass=Linear_model): - cons = [] - for i in xrange(mk): - model, cons = estimate(set(data) - set(cons), dist, k, modelClass) - return (model, cons), estimate(set(data) - set(cons), dist, k, modelClass) - def ransac_multi(m, data, dist, k, modelClass=Linear_model, model=None): + if not model: + model = modelClass(data) ests = [] cons = [] for i in xrange(m): est, cons_new = estimate(None, dist, k, model=model) model.remove(cons_new) - ests.append(est) + ests.append((est, cons_new)) return ests - - -