【发布时间】:2015-01-14 04:43:36
【问题描述】:
我有 2 个文本图像,其中第一个图像的右侧与第二个图像的左侧重叠(从左到右拍摄的同一页文本的 2 张部分照片)。 我想拼接图像,我正在尝试一种特征匹配的方法。 我已经尝试过使用来自 OpenCV 站点 http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html#matcher 的 ORB 特征搜索 + 蛮力特征匹配的示例
在我的情况下,至少使用特征搜索的默认参数,它完全关闭(没有找到任何正确的匹配,所有误报)。如果使用角点,文本将很难处理,这看起来合乎逻辑。
如何通过特征匹配更可靠地将此类图像与文本匹配?我应该为 ORB 搜索算法指定一些不同的非默认参数吗?使用具有不同参数的不同算法?
如果特征不匹配,我可以使用 Open 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;
}
【问题讨论】:
标签: opencv text feature-extraction