Сшивание нескольких небольших изображений (ортомосай c, map2d) - PullRequest
0 голосов
/ 12 июля 2020

У меня есть несколько небольших изображений карты мира (снятых с дрона каждые 1 сеанс c, поэтому новое изображение накладывается на предыдущее).

Если я помещаю их на карту, результат будет выглядеть как enter image description here

I am looking for some fast library that would be able to stitch images so I can show the map. I already tryed Emgu, Accord, OpenCvSharp... but I am stuck, because some of them are not able to properly stitch images since they are small, some of them are to slow and some are loosing image quality by every new stitching.

What is the correct method to create orthomosaic?

Currently I am stitching new image to previous one (which is already stitched with previous one), I thought this will be faster and since I do not have all images at once I thought its the correct way, but as I already told I am loosing images quality, also if I try to stitch all current images at once it takes to much time.

Any suggestions and pointing will be great.

Here is example data данные изображения

В настоящее время с Accord. Net и приведенный ниже код (сшивание нового с уже сшитым предыдущим) после 4 изображений возникает проблема

//1
HarrisCornersDetector harris = new HarrisCornersDetector(0.04f, 1000f);
harrisPoints1 = harris.ProcessImage(img1).ToArray();
harrisPoints2 = harris.ProcessImage(img2).ToArray();
//2
CorrelationMatching matcher = new CorrelationMatching(9, img1, img2);
IntPoint[][] matches = matcher.Match(harrisPoints1, harrisPoints2);

// Get the two sets of points
correlationPoints1 = matches[0];
correlationPoints2 = matches[1];
//3
RansacHomographyEstimator ransac = new RansacHomographyEstimator(0.001, 0.99);
homography = ransac.Estimate(correlationPoints1, correlationPoints2);
//4 
Blend blend = new Blend(homography, img1);
Bitmap output = blend.Apply(img2);

output.MakeTransparent();
output.Save(locationName, System.Drawing.Imaging.ImageFormat.Jpeg);
output.Dispose();

введите описание изображения здесь

1 Ответ

0 голосов
/ 15 июля 2020

Основные c принципы сшивания изображений довольно просты, но есть бесконечные детали, влияющие на конечное качество.

Стоит взглянуть на Open Drone Map.

Я разработал цепочку инструментов для сшивания изображений pure- python (+ opencv) для поддержки моих университетских исследовательских проектов. Это программа с открытым исходным кодом (лицензия MIT). Моя работа намеренно разработана как система «кишки». Вот ссылка на github:

https://github.com/UASLab/ImageAnalysis

Я хотел бы ответить на дополнительные c вопросы о моей работе и могу ли я ответить на более общие вопросы (вверх в пределах моего опыта) Я тоже счастлив делать это.

(Снимки экрана из моего набора инструментов доступны по указанной выше ссылке ... У меня пока недостаточно репутации, чтобы размещать изображения.)

...