У меня есть 2 изображения текста, где правая часть первого изображения перекрывается с левой стороны второй (2 частичные фотографии одной и той же страницы текста, взятые слева направо правильно). Я хотел бы сшить изображения, и я пытаюсь найти подходящий подход. Я попробовал пример с функцией поиском ОРБА + грубым согласованием признака силы с сайта OpenCV http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html#matcherВыровнять 2 перекрывающиеся фотографии страницы текста
Это полностью выключено (не находят правильные матчи, все ложные срабатывания) в моем случае, по крайней мере, по умолчанию параметры поиска объектов. Логично, что было бы трудно в случае текста, если он использует углы.
Как я могу сопоставить этот вид изображений с текстом более надежно с соответствием функций? Должен ли я указывать некоторые разные параметры, отличные от параметров для алгоритма поиска ORB? использовать другой алгоритм с разными параметрами?
Если нет возможности сопоставления с другим подходом с открытым CV, я могу использовать для этого выравнивания?
Mat p1 = new Mat("part1.jpg", LoadMode.GrayScale);
Mat p2 = new Mat("part2.jpg", LoadMode.GrayScale);
var orb = new ORB();
Mat ds1;
var kp1 = DetectAndCompute(orb, p1, out ds1);
Mat ds2;
var kp2 = DetectAndCompute(orb, p2, out ds2);
var bfMatcher = new BFMatcher(NormType.Hamming, crossCheck: true);
var matches = bfMatcher.Match(ds1, ds1);
var tenBestMatches = matches.OrderBy(x => x.Distance).Take(10);
var res = new Mat();
Cv2.DrawMatches(p1, kp1, p2, kp2, tenBestMatches, res, flags: DrawMatchesFlags.DrawRichKeypoints);
using (new Window("result", WindowMode.ExpandedGui, res))
{
Cv2.WaitKey();
}
private static KeyPoint[] DetectAndCompute(ORB orb, Mat p1, out Mat ds1)
{
var kp1 = orb.Detect(p1);
ds1 = new Mat();
orb.Compute(p1, ref kp1, ds1);
return kp1;
}
Благодарим вас за ответ. Пробовал изменять размер патча, он не работает. Теперь попытаемся подобрать подобие изображения. Пробовал PhaseCorellate, но он дает много ложных срабатываний. Будут искать и попробовать другие методы. – axk