Алгоритмы совмещения изображений
А у вас решена граничная задача, когда надо склеить сплошную однотонную заливку
ну так решайте, кто же вам не даёт
Вот вы всё графики какие-то анализируете
Очень удобная вещь, раньше сидишь и не понимаешь отчего не работает, в какую сторону рыть?
А так графики очень о многом говорят
Может, я не разглядел тут прямую в проекции на плоскость х-у
естественно не разглядели, их то две
вначале находим максимум по одной оси, потом по другой, параллельно обследуя пик. Как раз получаются две прямые и в точке пересечения небольшой бардачок.
Как обратно заработает, сделаю другую проекцию. А то отрицательные смещения и прозрачные места неправильно обрабатывал
а у вас скалировка и поворот разрешены? А затененность?
Если да, то сравнивать надо через особые точки - например те, у которых градиент цвета сильно большой. Ищите такие точки на одной картинке и на другой, и потом ищете как набор этих точек перемаппить один в другой. Гуглится все через edge detection and mapping.
Если сдвиги маленькие - надо делать так называемый optical flow - на пальцах там да - газодинамика для цвета, решаем задачу как если бы у вас цвета поплыли, на практике - тонны кода, желательно понимать хотя бы основы CFD и основы edge detection (с ним многие вещи делать проще).
Если поворотов нет, но только паттерны - ищем прямоугольничек в маленькой картинке и его Фурьем на большую множим. Вычислительная сложность не большая, работает довольно надежно. Если прямоугольничек сделать сложно, тогда или набор прямоугольничков, или в лоб. Можно иерархически - типа пиксели размазал и большими квадратиками нашел что-то и там дальше внутри ищешь поточнее.
Если есть возможность скормить в что-то готовое, лучше именно скормить, потому, что в ручную все это программировать или тырить по гитхабам и склеивать - можно застрелиться особенно если до этого этими задачами не занимался.
а у вас скалировка и поворот разрешены? А затененность?
Всё проще. Если грубо, то есть сторонняя программа, у которой имеется большая картинка, но она эту картинку может показывать только частично. Картинки могут быть совершенно разных типов от простейших цветных прямоугольников с текстом или просто текст, до типа гоогле мапа со спутника. Могут быть и более сложные варианты, но пока их не рассматриваем.
Часть картинки которую видно можно скопировать, затем отскроллировать и опять скопировать. Направление скроллирования тоже пока ограничил, сверху-вниз и слева-направо.
Таким образом получаем серию скриншотов - задача собрать из них большую картинку. Если бы можно было скроллить автоматом, то проблемы не было бы вообще.
edge detection
Пробовал уже. В OpenCvSharp4 всё уже есть. Громаднейшие погрешности и часто никаких границ не определяется где надо. Это скорее всё для фотографии.
Единственное, что работает, это MSE с повышенной чувствительностью (но из-за чувствительности и медленно). Просто сдвигаем картинку как игральные карты по одной оси вначале, а затем по другой. Сдвиг не в лоб по пикселу
ищем прямоугольничек в маленькой картинке и его Фурьем на большую множим
именно так не делал, но что-то подобное тоже было. Есть в OpenCvSharp4 подобная функция - найти маленькую часть в большой.
Можно иерархически - типа пиксели размазал и большими квадратиками нашел что-то и там дальше внутри ищешь поточнее.
Да, именно так и делаю. Пирамида изображений + грубый поиск + точный поиск по месту. С точным поиском лезем наверх по пирамиде.
Если есть возможность скормить в что-то готовое
OpenCvSharp4 и ImageSharp либы есть. Обе пробовал.
Пока работает только в полуавтоматическом режиме, так как 100% совмещение удается не всегда.
В Snagit есть подобная функция, но работает она очень плохо. И теперь стало понятно почему.
до этого этими задачами не занимался.
совершенно не интересовало, не нужно было. Да и то, искал задачу для теста ИИ и решил выбрать эту. Самостоятельно всё бы не перепробовал.
Но зато теперь есть что-то, что как-то работает. Потихоньку можно возвращаться и улучать.
Спасибо
А вы кто, дизайнер по квартирам? Там точно измерения идут по стенам или кривая опять наверх пошла?! Стетоскопом точно не измерить, зато дом у него отменный с ремонтом в прошлом тыщ на 100000.
Я тестирую наоборот посмотрим какой оборот придёт через четверть года обещали пи на несчастных ID шниках...туда повыбираем буковки, а потом попробуем написать большую историю про кота Базилио и его компаньона слепоглазого и летающие станции по производству солярки. ПСС...тише тише пинг уже на взлете.
Блин жалко конечно что МС все таки примитив поставил в свою модель.
Кстати куда запропастилась фиалка якобы её забрала какая-то Сандра с Германии и нашли её в Мега долине какого-то авиапрома в российском городе С.
Там точно измерения идут по стенам или кривая опять наверх пошла?!
Ну, я просто не знаю что с вами делать
Вы живете в каком-то своём мире и выдаёте отрывки из него же, которые понять просто невозможно.
Проведите эксперимент со своими знакомыми, дайте прочитать написанный вами текст, а после засекайте время сколько нужно будет им еще дополнительных пояснений что бы они поняли написанное.
Единственное, что работает, это MSE с повышенной чувствительностью (но из-за чувствительности и медленно).
это вам еще повезло. На произвольных картинках у меня с сотню всяких весовых параметров как детектировать, но угадать никогда не получается. Но угадывать-то надо, и я могу это только для видеоряда - вначале на первых фреймах барахтаешся и у тебя ничего не получается, но, постепенно, можно параметры от фрейма к фрейму так науськать, что начинает получаться. А когда получается, можно обратно назад на предыдущие фреймы распространить. Если картинка на фреймах кардинально изменилась - все заново. Надеюсь Вам такое извращение не потребуется :)
это вам еще повезло.
ну просто заметил, что есть более менее адекватная реакция с нормальной чувствительностью, а потом пришла идея увеличить чувствительность.
Но самое удобное - это 3д график, сразу всё видно. На некоторых изображениях есть несколько максимумов, из которых только один правильный. Из за этого и бинарный поиск не канает.
У вас конечно похуже, могу только посочувствовать.
Но получается никаких "волшебных" алгоритмов по незнанию не пропустил - нет таких.
Но получается никаких "волшебных" алгоритмов по незнанию на пропустил - нет таких.
да, верно. Волшебство начинается, когда у вас есть 2Д изображение, вернее видеоряд, а вам надо на нем восстановить 3Д, а это 3Д еще обычно движется. Типа ты со всей дури бежишь за кем-то, держа его в видимости своей камеры, а нужно что-то определить у бегущего или его идентифицировать. Вот там пока не все устаканилось, даже международные конкурсы проводятся у кого лучше получится :)