русский
Germany.ruForen → Архив Досок→ Programmierung

Алгоритмы совмещения изображений

1478  1 2 alle
AlexNek патриот12.10.24 11:14
AlexNek
NEW 12.10.24 11:14 
in Antwort alex445 12.10.24 08:12
А у вас решена граничная задача, когда надо склеить сплошную однотонную заливку

ну так решайте, кто же вам не даёт бебе


Вот вы всё графики какие-то анализируете

Очень удобная вещь, раньше сидишь и не понимаешь отчего не работает, в какую сторону рыть?

А так графики очень о многом говорят


#21 
alex445 патриот12.10.24 13:48
NEW 12.10.24 13:48 
in Antwort AlexNek 12.10.24 11:03
В общем виде задача решается полным перебором всех точек изображения

Заблуждение, которым тоже страдал смущ

Вот у вас два 3000х2000 скриншота, значит нужно 6 000 000 сравнений?

#22 
alex445 патриот12.10.24 13:50
NEW 12.10.24 13:50 
in Antwort AlexNek 12.10.24 11:03
ну давайте идеи. Если одно маленькое ограничение - управлять скроллингом другого окна невозможно. Передвигать можно исключительно мышкой.

Попробовать посылать в окно события скролла, и выяснить, на сколько пикселей прокручивается страница при этом?

#23 
AlexNek патриот12.10.24 14:34
AlexNek
NEW 12.10.24 14:34 
in Antwort alex445 12.10.24 13:50
Попробовать посылать в окно события скролла

улыб ну нету окна со скроллом в понимании винды. Как и скролбара

#24 
Murr патриот12.10.24 19:04
Murr
NEW 12.10.24 19:04 
in Antwort alex445 11.10.24 20:53

какие-то линии, а не поверхность?

-----

а что, в пространстве линий не бывает?

#25 
alex445 патриот12.10.24 21:37
NEW 12.10.24 21:37 
in Antwort Murr 12.10.24 19:04

Вот я и спрашивал, почему он анализирует картинку вдоль какой-то кривой на этой картинке.

#26 
AlexNek патриот12.10.24 22:07
AlexNek
NEW 12.10.24 22:07 
in Antwort alex445 12.10.24 21:37

Прямая - кратчайший путь из одной точки в другую спок

#27 
alex445 патриот13.10.24 06:24
NEW 13.10.24 06:24 
in Antwort AlexNek 12.10.24 22:07, Zuletzt geändert 13.10.24 06:24 (alex445)

Может, я не разглядел тут прямую в проекции на плоскость х-у? Наверное, ракурс неудачный.

#28 
AlexNek патриот13.10.24 12:13
AlexNek
NEW 13.10.24 12:13 
in Antwort alex445 13.10.24 06:24
Может, я не разглядел тут прямую в проекции на плоскость х-у

естественно не разглядели, их то две бебе

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

Как обратно заработает, сделаю другую проекцию. А то отрицательные смещения и прозрачные места неправильно обрабатывал смущ

#29 
wasja-de знакомое лицо20.11.24 18:34
NEW 20.11.24 18:34 
in Antwort AlexNek 30.09.24 17:56

а у вас скалировка и поворот разрешены? А затененность?


Если да, то сравнивать надо через особые точки - например те, у которых градиент цвета сильно большой. Ищите такие точки на одной картинке и на другой, и потом ищете как набор этих точек перемаппить один в другой. Гуглится все через edge detection and mapping.


Если сдвиги маленькие - надо делать так называемый optical flow - на пальцах там да - газодинамика для цвета, решаем задачу как если бы у вас цвета поплыли, на практике - тонны кода, желательно понимать хотя бы основы CFD и основы edge detection (с ним многие вещи делать проще).


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


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

#30 
AlexNek патриот20.11.24 20:43
AlexNek
20.11.24 20:43 
in Antwort wasja-de 20.11.24 18:34
а у вас скалировка и поворот разрешены? А затененность?

Всё проще. Если грубо, то есть сторонняя программа, у которой имеется большая картинка, но она эту картинку может показывать только частично. Картинки могут быть совершенно разных типов от простейших цветных прямоугольников с текстом или просто текст, до типа гоогле мапа со спутника. Могут быть и более сложные варианты, но пока их не рассматриваем.

Часть картинки которую видно можно скопировать, затем отскроллировать и опять скопировать. Направление скроллирования тоже пока ограничил, сверху-вниз и слева-направо.

Таким образом получаем серию скриншотов - задача собрать из них большую картинку. Если бы можно было скроллить автоматом, то проблемы не было бы вообще.


edge detection

Пробовал уже. В OpenCvSharp4 всё уже есть. Громаднейшие погрешности и часто никаких границ не определяется где надо. Это скорее всё для фотографии.

Единственное, что работает, это MSE с повышенной чувствительностью (но из-за чувствительности и медленно). Просто сдвигаем картинку как игральные карты по одной оси вначале, а затем по другой. Сдвиг не в лоб по пикселу смущ


ищем прямоугольничек в маленькой картинке и его Фурьем на большую множим

именно так не делал, но что-то подобное тоже было. Есть в OpenCvSharp4 подобная функция - найти маленькую часть в большой.


Можно иерархически - типа пиксели размазал и большими квадратиками нашел что-то и там дальше внутри ищешь поточнее.

Да, именно так и делаю. Пирамида изображений + грубый поиск + точный поиск по месту. С точным поиском лезем наверх по пирамиде.


Если есть возможность скормить в что-то готовое

OpenCvSharp4 и ImageSharp либы есть. Обе пробовал.

Пока работает только в полуавтоматическом режиме, так как 100% совмещение удается не всегда.

В Snagit есть подобная функция, но работает она очень плохо. И теперь стало понятно почему.


до этого этими задачами не занимался.

совершенно не интересовало, не нужно было. Да и то, искал задачу для теста ИИ и решил выбрать эту. Самостоятельно всё бы не перепробовал.

Но зато теперь есть что-то, что как-то работает. Потихоньку можно возвращаться и улучать.


Спасибо

#31 
kukka местный житель20.11.24 21:56
kukka
NEW 20.11.24 21:56 
in Antwort AlexNek 20.11.24 20:43

А вы кто, дизайнер по квартирам? Там точно измерения идут по стенам или кривая опять наверх пошла?! Стетоскопом точно не измерить, зато дом у него отменный с ремонтом в прошлом тыщ на 100000.


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


Блин жалко конечно что МС все таки примитив поставил в свою модель.


Кстати куда запропастилась фиалка якобы её забрала какая-то Сандра с Германии и нашли её в Мега долине какого-то авиапрома в российском городе С.


#32 
AlexNek патриот20.11.24 23:17
AlexNek
NEW 20.11.24 23:17 
in Antwort kukka 20.11.24 21:56
Там точно измерения идут по стенам или кривая опять наверх пошла?!

Ну, я просто не знаю что с вами делать смущ

Вы живете в каком-то своём мире и выдаёте отрывки из него же, которые понять просто невозможно.

Проведите эксперимент со своими знакомыми, дайте прочитать написанный вами текст, а после засекайте время сколько нужно будет им еще дополнительных пояснений что бы они поняли написанное.

#33 
wasja-de знакомое лицо21.11.24 00:41
NEW 21.11.24 00:41 
in Antwort AlexNek 20.11.24 20:43
Единственное, что работает, это MSE с повышенной чувствительностью (но из-за чувствительности и медленно).

это вам еще повезло. На произвольных картинках у меня с сотню всяких весовых параметров как детектировать, но угадать никогда не получается. Но угадывать-то надо, и я могу это только для видеоряда - вначале на первых фреймах барахтаешся и у тебя ничего не получается, но, постепенно, можно параметры от фрейма к фрейму так науськать, что начинает получаться. А когда получается, можно обратно назад на предыдущие фреймы распространить. Если картинка на фреймах кардинально изменилась - все заново. Надеюсь Вам такое извращение не потребуется :)

#34 
wasja-de знакомое лицо21.11.24 00:45
NEW 21.11.24 00:45 
in Antwort AlexNek 20.11.24 23:17
Ну, я просто не знаю что с вами делать смущ...

и как у Вас терпенья хватило так вежливо ему/ей ответить. Вот в других формах (не на этой платформе) обычно все просто, там или есть кнопка пожаловаться, или разрешено матом посылать.


#35 
kukka местный житель21.11.24 04:23
kukka
NEW 21.11.24 04:23 
in Antwort wasja-de 20.11.24 18:34

И я про что лучше скормить. А СМД чем не нравится??

#36 
AlexNek патриот21.11.24 17:58
AlexNek
NEW 21.11.24 17:58 
in Antwort wasja-de 21.11.24 00:41, Zuletzt geändert 21.11.24 20:57 (AlexNek)
это вам еще повезло.

ну просто заметил, что есть более менее адекватная реакция с нормальной чувствительностью, а потом пришла идея увеличить чувствительность.

Но самое удобное - это 3д график, сразу всё видно. На некоторых изображениях есть несколько максимумов, из которых только один правильный. Из за этого и бинарный поиск не канает. хммм

У вас конечно похуже, могу только посочувствовать.

Но получается никаких "волшебных" алгоритмов по незнанию не пропустил - нет таких.

#37 
AlexNek патриот21.11.24 18:01
AlexNek
NEW 21.11.24 18:01 
in Antwort wasja-de 21.11.24 00:45
и как у Вас терпенья хватило

было где тренироваться смущ

Всегда есть какая-то надежда на улучшение. Ну а не получится так не получится, по крайней мере пробовал.

#38 
wasja-de знакомое лицо21.11.24 19:24
NEW 21.11.24 19:24 
in Antwort AlexNek 21.11.24 17:58
Но получается никаких "волшебных" алгоритмов по незнанию на пропустил - нет таких.

да, верно. Волшебство начинается, когда у вас есть 2Д изображение, вернее видеоряд, а вам надо на нем восстановить 3Д, а это 3Д еще обычно движется. Типа ты со всей дури бежишь за кем-то, держа его в видимости своей камеры, а нужно что-то определить у бегущего или его идентифицировать. Вот там пока не все устаканилось, даже международные конкурсы проводятся у кого лучше получится :)

#39 
AlexNek патриот21.11.24 21:02
AlexNek
NEW 21.11.24 21:02 
in Antwort wasja-de 21.11.24 19:24
а вам надо на нем восстановить 3Д

Да уж полный фигвам особенно когда в реальном времени еще и надо.


Мне то всего лишь одинаковые части найти в двух картинках и то оказалось непросто.

#40 
1 2 alle