【发布时间】:2015-03-09 23:24:39
【问题描述】:
我正在用 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);
谢谢!
【问题讨论】:
-
虽然我不确定accord.net,但您可以使用 EmguCV,它基本上是流行的 OpenCV.f 的 .NET 版本
-
嗨 Damjan,您是否有链接或详细信息说明我在 EmguCV 中的表现如何?
-
我相信 ezfn 正确地解释了一切:)
标签: c# image image-processing accord.net image-registration