from math import sqrt
import numpy as NP
+# TODO comments
+# TODO threshold
+
def initial_estimate(data):
return random.sample(data, 2)
consensus = len(consensual)
model = get_model(consensual)
consensual = filter_near(data, model, distance)
- return consensus, model
+ return consensus, model, consensual
def estimate(data, dist, k):
best = 0
model = None
+ consensual = None
for i in xrange(0, k):
- new, new_model = iterate(data, dist)
+ new, new_model, new_consensual = iterate(data, dist)
if new > best:
best = new
model = new_model
+ consensual = new_consensual
+
+ return model, consensual
+
+def ransac_duo(data, dist, k, mk):
+ cons = []
+ for i in xrange(mk):
+ model, cons = estimate(set(data) - set(cons), dist, k)
+ return (model, cons), estimate(set(data) - set(cons), dist, k)
- return model
-