2014-01-30 5 views
2

У меня есть код (OpenSURF C#, IPOINT структуры используется), он вычисляет SURF соответствует для двух изображений:Как фильтровать OpenSURF недействительны спички с использованием RANSAC в C#

var surfEngine = new EngineSURF(); 

points[0] = surfEngine.GetPoints(images[0]).ToList(); 
points[1] = surfEngine.GetPoints(images[1]).ToList(); 
points[2] = surfEngine.GetPoints(images[2]).ToList(); 
points[3] = surfEngine.GetPoints(images[3]).ToList(); 

var match1 = surfEngine.GetMatches(points[0], points[1]).ToArray(); 
var match2 = surfEngine.GetMatches(points[0], points[2]).ToArray(); 
var match3 = surfEngine.GetMatches(points[0], points[3]).ToArray(); 

outBmps[0] = surfEngine.PaintSURF(new Bitmap(images[0]), new Bitmap(images[1]), match1); 
outBmps[1] = surfEngine.PaintSURF(new Bitmap(images[0]), new Bitmap(images[2]), match2); 
outBmps[2] = surfEngine.PaintSURF(new Bitmap(images[0]), new Bitmap(images[3]), match3); 

var path = Path.GetDirectoryName(images[0]) ?? string.Empty; 

Checks.StringIsNotNull(path); 

if(outBmps[0] != null) outBmps[0].Save(Path.Combine(path,"result0_1.png"), ImageFormat.Png); 
if (outBmps[1] != null) outBmps[1].Save(Path.Combine(path, "result0_2.png"), ImageFormat.Png); 
if (outBmps[2] != null) outBmps[2].Save(Path.Combine(path, "result0_3.png"), ImageFormat.Png); 

И у меня есть следующие матчи:

1) Лучшие матчи

intel best mathces

2) неправильные матчи

intel wrong matches

3) Неправильно соответствует

Intel wrong matches

Как я могу фильтровать неправильно (2, 3) совпадает с RANSAC? Есть ли образец кода? Спасибо!

ответ

2

Accord.Imaging позволяет находить функции SURF и оценивать точки с помощью RANSAC.

var correlationPoints1 = matches[0]; 
var correlationPoints2 = matches[1]; 
var ransac = new RansacHomographyEstimator(0.10, 0.99); 
var homography = ransac.Estimate(correlationPoints1, correlationPoints2); 
var inliers1 = correlationPoints1.Submatrix(ransac.Inliers); 
var inliers2 = correlationPoints2.Submatrix(ransac.Inliers); 
var result = new IntPoint[][] 
        { 
         inliers1, 
         inliers2 
        }; 

http://www.nuget.org/packages/Accord.Imaging/

http://accord-framework.net/samples.html

 Смежные вопросы

  • Нет связанных вопросов^_^