我正在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);
谢谢!