Jump to content

    

Простой и понятный алгоритм сравнения картинок

Добрый день,

 

ищу понятный, легко объясняемый и, по возможности короткий (на одну-две страницы текста) с оптимальной или субоптимальной асимптотически сложностью алгоритм сравнения двух картинок, которые могут соответствовать одному объекту, но аффинно преобразованному, ну то есть как, например, на приложенной ниже картинке. Картинка не моя, взято с доклада "Multiscale analysis of similarities between images on Riemannian manifolds" Coloma Ballester. То есть чтоб на входе было две картинки, а на выходе - коэффициенты аффинного преобразования + величина достоверности в какой-нибудь адекватной метрике. Через риманово преобразование с CNN объяснить и запрограммировать могу, но это - тонна кода. Нужно просто и понятно. У кого-то есть идеи? Буду премного благодарен!

 

Спасибо!

 

ИИВ

post-62436-1535906156_thumb.png

Share this post


Link to post
Share on other sites

Я так представляю, чтобы сложить одну картинку с другой, нужно ее перемещать (вращать) по всем 6 степеням свободы. Многовато для оптимизации.

Share this post


Link to post
Share on other sites
Я так представляю, чтобы сложить одну картинку с другой, нужно ее перемещать (вращать) по всем 6 степеням свободы. Многовато для оптимизации.

По 9-и степеням.

Share this post


Link to post
Share on other sites
По 9-и степеням.

Геометрических всего 6 в нашем мире. Вы имеете в виду цвета? Согласен.

Share this post


Link to post
Share on other sites
Геометрических всего 6 в нашем мире. Вы имеете в виду цвета? Согласен.

А ваш мир плоский или объемный?

Share this post


Link to post
Share on other sites
А ваш мир плоский или объемный?

Такой же, как и ваш. :laughing: А вас механическим дисциплинам каким-нибудь обучали в универе/институте?

Share this post


Link to post
Share on other sites
Такой же, как и ваш. :laughing: А вас механическим дисциплинам каким-нибудь обучали в универе/институте?

Похоже вы даже с областью знаний промахнулись.

Эт проективная геометрия, а не механика.

Share this post


Link to post
Share on other sites
Похоже вы даже с областью знаний промахнулись.

Эт проективная геометрия, а не механика.

Может быть. Но одно сводится к другому.

Опишите ваши степени свободы.

Share this post


Link to post
Share on other sites
Может быть. Но одно сводится к другому.

Опишите ваши степени свободы.

Так нет там "свободы", эт я просто применил вашу "свободу" как метафору к коэффициентам матрицы преобразования, которая 3 на 3.

 

Share this post


Link to post
Share on other sites
Так нет там "свободы", эт я просто применил вашу "свободу" как метафору к коэффициентам матрицы преобразования, которая 3 на 3.

Ваша матрица мне непонятна, а степени свободы - понятны. Топикстартер просил просто и понятно.

Share this post


Link to post
Share on other sites

Если у ТС не абстрактные картинки, а фотографии реальных предметов с разных ракурсов и расстояний, то, пожалуй, механика (кинематика) будет так же применима, как и проективная геометрия.

У твердого тела шесть степеней свободы. Его положение в пространстве описывается поворотом (3 угловых координаты) и переносом (3 линейных координаты).

Поворот можно представить в виде матрицы преобразования координат 3 x 3. Но у нее только 3 степени свободы - то есть все 9 коэффициентов, можно определить через 3 независимых параметра.

Edited by @Ark

Share this post


Link to post
Share on other sites
Ваша матрица мне непонятна, а степени свободы - понятны. Топикстартер просил просто и понятно.

Тогда самый верный способ - Fuzzy Logic.

Спрашивать на форуме похожи или нет картинки.

Каждому мнению присваивать уровень доверия, а потом выводить дефузификатор. :biggrin:

 

. Но у нее только 3 степени свободы - то есть все 9 коэффициентов, можно определить через 3 независимых параметра.

Да ну!?

Даже на картинке ТС видна проективность. Причем тут механика?

Я б тогда за оптику агитировал бы.

Share this post


Link to post
Share on other sites
Я б тогда за оптику агитировал бы.

Агитируйте на здоровье.

Дело в том, что одна проекция (одна картинка) все равно не дает полной (трехмерной) информации о реальном предмете.

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

Тем более, как я понял, информация о масштабе изображения (расстоянии до предметов) изначально отсутствует.

Надо тогда сразу вводить какие-то априорные ограничения.

Edited by @Ark

Share this post


Link to post
Share on other sites

а что про это "думают" нейросети?

 

вроде бы из банальной эрудиции - нужно "разобрать" картинки на объекты/фичи из них уже вычислять преобразование - перебирать, наверно, не получится

начинать, наверно, надо с opencv - может там уже что-то есть...

 

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

 

Share this post


Link to post
Share on other sites

Спасибо, что не оставляете наедине с проблемой!

 

Да, там 6 степеней свободы, фактически для координаты первой картинки ? x \in \R^2 надо найти матрицу ? A \in \R^{2 \times 2} и вектор ? b \in \R^2 что

координата второй картинки будет выражаться как

 

? y = A x + b

 

С помощью CNN (convolutional neural networks), то есть нейросетей, как я писал выше я это могу сделать, но тут будет тонна кода, который получается довольно тормознутым и плохо ложащимся на маломощные контроллеры. Лет 7 назад я это программировал и у меня это работает, но мне кажется, что есть что-то проще и быстрее, собственно как я и писал в головном топике.

 

Спасибо!

 

PS: math->tex поправил, спасибо большое, thermit что подсказали!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now