osama110 Ответов: 1

Создание панорамного изображения с помощью C#


Я хочу сделать программное обеспечение панорамных изображений , в котором пользователь может ввести 8 различных изображений и может сделать панорамное изображение через них, может ли кто-нибудь указать мне, в каких шагах я могу начать свой проект . в принципе я хочу создать просмотрщик панорамы и понятия не имею что делать

Sergey Alexandrovich Kryukov

Пожалуйста, посмотрите мой комментарий к ответу Боба (который не является решением).
Это очень, очень сложная проблема. На данный момент я знаю некоторые решения с открытым исходным кодом на основе C, но они меня не удовлетворяют, даже близко. Некоторые коммерческие программы для сшивания работают намного лучше, но код хранится в секрете. Существует бесплатное решение от Microsoft Research, но моя последняя попытка использовать его была разочаровывающей. (Попробуйте, может быть, новая версия лучше. Во всяком случае, никакого исходного кода.)
--СА

1 Ответов

Рейтинг:
0

BobJanova

1. читайте в изображениях, используя Изображение.FromFile[^]
2. Сделайте некоторую обработку, чтобы выровнять, повернуть, сбалансировать цвет и т. д. изображения (это самая трудная часть, которую вам нужно решить!)
3. объедините изображения, создав одно большое растровое изображение и нарисовав каждое из других изображений на своем графическом объекте с помощью DrawImage.
4. сохраните полученное растровое изображение с помощью Изображения.Сохранить[^]


Sergey Alexandrovich Kryukov

Извините, Боб: в этом описании нет ничего, что могло бы потенциально помочь решить эту проблему. Задача чрезвычайно сложная и связана со сложным преобразованием перспективы через объектив. На практике никакая комбинация вращения и выравнивания не может решить эту проблему. Это очень сложное нелинейное преобразование, которое может сшивать точки на разных снимках одного и того же фрагмента сайта. Никакое линейное преобразование не может сделать стежок, это точно.

Я понимаю, что вы ответили, основываясь на вашем общем понимании проблемы, не имея никаких фактических знаний. Так что я просто не хочу голосовать 1 за это. Я действительно предлагаю вам удалить этот пост, так как это просто ошибка.

Спасибо Вам за понимание.
--СА

BobJanova

Я давал вопрошающему преимущество сомнения, предполагая, что это не был вопрос "gimme codez", и что он просто запутался в том, как работать с изображениями в C#.

Вы, конечно, правы, что правильное сшивание отдельных изображений-сложная операция, хотя я не уверен, что перспективные эффекты так важны для "90% случая" (пейзажные снимки, сделанные стандартной цифровой камерой, сфокусированной на бесконечности). Опять же, я предполагал, что плакат понял, что это сложная проблема, и был заинтересован в изучении основных алгоритмов, потому что если нет, то это "gimme codez", который даже не стоит публиковать.

Sergey Alexandrovich Kryukov

Поверьте мне, в 99,99% случаев или более линейное преобразование вообще не будет работать. Вы когда-нибудь пробовали? Я так и сделал-бесполезно. Это немного удивительно, прежде чем вы действительно попробуете использовать эти фотографии. Вы не сказали, что это трудная проблема или что-то в этом роде. Ты просто сеешь ложную надежду. Это не сработает.
--СА