X-Git-Url: http://git.tomasm.cz/imago.git/blobdiff_plain/fa7189478eb9fec6a012b9b4bed5c0b92c06ec87..16a9526d24fbdad7bbc544aeae9fd7ba067b3d91:/imago_pack/ransac.py?ds=inline diff --git a/imago_pack/ransac.py b/imago_pack/ransac.py index 3f8bb65..197fc31 100644 --- a/imago_pack/ransac.py +++ b/imago_pack/ransac.py @@ -4,6 +4,9 @@ import random from math import sqrt import numpy as NP +# TODO comments +# TODO threshold + def initial_estimate(data): return random.sample(data, 2) @@ -36,16 +39,24 @@ def iterate(data, distance): 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 -