我正在用 C# 在accord.net 中玩耍,并试图对齐两个图像。我是计算机视觉的新手,想知道accord.net 是否可以做到这一点,或者我是否必须自己写一些东西。
我有两张图片,每张图片我有四个点。这些点从左上角开始沿图像逆时针方向分配(TL、TR、BR、BL)
例子:
图 1
Point 1(221, 156)
Point 2(4740, 156)
Point 3(4740, 3347)
Point 4(221, 3347)
图 2
Point 1(157, 213)
Point 2(4572, 32)
Point 3(4697, 3221)
Point 4(282, 3402)
在两个图像中,图像 1 的点 1 与图像 2 的点 1 相关,其余点相同。
所以我想做的是对齐两个图像,以便两个图像之间的比例、旋转和对齐匹配,当叠加时我最终得到两个图像应该如下图所示:
到目前为止,我有这个,它适用于旋转和对齐,但不缩放图像。据我了解,RANSAC 似乎对这份工作太过分了,因为我已经在关联这些点了?另外,我希望单独输出图像以进行进一步的图像处理。
// Images
var img1Path = Path.Combine(filePath, "image1.jpg");
var image1 = new[] { new PointF(221, 156), new PointF(4740, 156), new PointF(4740, 3347), new PointF(221, 3347) };
var img2Path = Path.Combine(filePath, "image2.jpg");
var image2 = new[] { new PointF(157, 213), new PointF(4572, 32), new PointF(4697, 3221), new PointF(282, 3402) };
// Create Bitmaps
var img1 = new Bitmap(img1Path);
var img2 = new Bitmap(img2Path);
var ransac = new RansacHomographyEstimator(0.001, 0.99);
var homographyMatrix = ransac.Estimate(image1, image2);
var blend = new Blend(homographyMatrix, img1) { Gradient = false };
var result = blend.Apply(img2);
result.Save("out.jpg", ImageFormat.Jpeg);
谢谢!