реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подобие матриц (картинок), критерий подобия
Punk
сообщение Mar 19 2013, 05:47
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Здравствуйте, далек от математики, не обессудьте.
Озадачился на выходных такой проблемой: Как установить подобие двух маленьких картинок, можно сказать матриц, размером скажем 50 на 50. Подобие хотелось бы оценивать по пятибальной шкале, ну крайний вариант - по трехбальной. Реально ли решить такую задачу простыми математическими методами? Скажем, посчитать для обоих определители и их сравнить. Хотелось бы применить минимальное количество действий, дабы воплотить этот алгоритм на каком-нибудь маааленьком 8битном микроконтроллере. Задача исключительно ради мозгоразминки.
С уважением.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 19 2013, 07:33
Сообщение #2





Guests






Например так:

Для каждой картинки размером N*M:
- переводим в оттенки серого;
- находим средний уровень;
- бинаризируем по среднему уровню;
Получаем N*M битовое слово

Поразрядно сравниваем число совпадений K бит в битовых словах двух картинок (т.е. обе единицы или оба нуля - совпадение).
Степень похожести R := K/(N*M)
При необходимости квантуем до 5-бальной системы.

Go to the top of the page
 
+Quote Post
SSerge
сообщение Mar 19 2013, 13:37
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



http://electronix.ru/forum/index.php?showt...mp;#entry548369


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Kluwert
сообщение Mar 20 2013, 15:29
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639



Цитата(Punk @ Mar 19 2013, 09:47) *
Скажем, посчитать для обоих определители и их сравнить.

Посчитать определитель - это, по-вашему, операция с минимальным количеством действий?
Go to the top of the page
 
+Quote Post
Punk
сообщение Mar 21 2013, 02:43
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Цитата(Kluwert @ Mar 20 2013, 19:29) *
Посчитать определитель - это, по-вашему, операция с минимальным количеством действий?

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



По поводу бинаризации: А есть способы без нее? Существует ли вообще универсальный метод определения подобия одноразмерных матриц состоящих из любых чисел?
Go to the top of the page
 
+Quote Post
Major
сообщение Mar 21 2013, 05:50
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Если можно вычислять, то вычисляете спектр матрицы (сингулярные числа).
После этого выделяете области кучности и отбрасываете лишнее по малости.
Если картинки плохо обусловлены (мало перепадов яркости), то наверное придется хранить практически весь спектр.
Спектр матрицы полностью определяет ее, но считать спектр долго (дорого).
Если у вас есть доп. инфо о картинках (например процесс их генерации), то можно попробовать поискать другие параметры.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Mar 21 2013, 06:51
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(Major @ Mar 21 2013, 08:50) *
Спектр матрицы полностью определяет ее, но считать спектр долго (дорого).


А собственные вектора получаются информации не несут?


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 21 2013, 06:54
Сообщение #8





Guests






>По поводу бинаризации: А есть способы без нее?

Так это копеечная операция - сравнение с порогом и присваивание очередному биту 1 или 0.
Делается как раз для того, чтобы в дальнейшем свести вычисление отклонения к такой же простейшей операции, как подсчет числа лог. 1 и 0 в двух длинных числах.

Go to the top of the page
 
+Quote Post
Major
сообщение Mar 21 2013, 07:03
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Собственные вектора никто не предлагал.
Если матрица эрмитова, то сингулярные и собственные числа будут эквивалентны.
Я про то, что ТС изначально выделил слово "матрица", лишь в скобках написав "картинка".
Если это матрица, то возможно у нее есть свойства, и хватит ее следа для решения задачи.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Mar 21 2013, 07:26
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(Major @ Mar 21 2013, 10:03) *
Собственные вектора никто не предлагал.
Если матрица эрмитова, то сингулярные и собственные числа будут эквивалентны.
Я про то, что ТС изначально выделил слово "матрица", лишь в скобках написав "картинка".
Если это матрица, то возможно у нее есть свойства, и хватит ее следа для решения задачи.


Мне кажется ТС имел ввиду изначально картинки. А под подобием он понимает не http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%...%B8%D1%86%D1%8B
а некоторую меру идентичности картинок.



--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Major
сообщение Mar 21 2013, 08:19
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Для каждого изображения вычисляется:
1. Проектор на ось X (сумма всех точек вдоль У при фиксированном Х)
2. Проектор на ось У (сумма всех точек вдоль Х при фиксированном У)
3. На каждый проектор действуем оптимально-согласованным фильтром F
4. Рассчитываем кросс-корреляционный корреляционный коэф-ты для пар F(X1):F(X2) и F(Y1):F(Y2)
5. Имеем пару чисел и возможно пару значений типа "уровень значимости"
6. Вычисляем взвешенную оценку
7. Градуируем оценку (возможно логарифмически) в пятибалльный диапазон.
Алгоритм может быть полностью целочисленным.
Но на 8бит контроллере это будет утомительно, надо хотя бы 16бит-целую арифметику(знаковую) иметь.
Функция F зависит от типов ожидаемых границ на изображениях.
Как хэш-код такой результат использовать нельзя.
Алгоритм сложнее чем предложил TSerg, и если как корреляционный коэф. использовать знаковый Фехнера, то наверное будет подобие с ним.
Go to the top of the page
 
+Quote Post
Punk
сообщение Mar 21 2013, 09:45
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Цитата(alex_os @ Mar 21 2013, 11:26) *
Мне кажется ТС имел ввиду изначально...


Вообще, изначально, вопрос пришел из идеи сделать стереоскопический сенсор расстояния из двух камерок от сотика, который бы, примерно определял расстояние до любого предмета, находящегося поблизости от него. И эту операцию я планировал сделать при помощи сравнения картинок. Чем больше сходства, тем предмет ближе. Почему именно так? так захотелось=)

Сообщение отредактировал Punk - Mar 21 2013, 09:47
Go to the top of the page
 
+Quote Post
alex_os
сообщение Mar 21 2013, 11:19
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(Punk @ Mar 21 2013, 12:45) *
Вообще, изначально, вопрос пришел из идеи сделать стереоскопический сенсор расстояния из двух камерок от сотика, который бы, примерно определял расстояние до любого предмета, находящегося поблизости от него. И эту операцию я планировал сделать при помощи сравнения картинок. Чем больше сходства, тем предмет ближе. Почему именно так? так захотелось=)

Наверное чем меньше сходство тем ближе? Тогда такой вариант, сдвигать картинку с одного сенсора по оси соединяющей сенсоры. И вычислять сумму модулей разностей пикселей картинок. Сдвиг соответствующий минимуму суммы модулей будет как-то соответствовать расстоянию до предмета.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Punk
сообщение Mar 21 2013, 11:23
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Цитата(alex_os @ Mar 21 2013, 15:19) *
Наверное чем меньше сходство тем ближе? Тогда такой вариант, сдвигать картинку с одного сенсора по оси соединяющей сенсоры. И вычислять сумму модулей разностей пикселей картинок. Сдвиг соответствующий минимуму суммы модулей будет как-то соответствовать расстоянию до предмета.

Да-да Вы правы. А сумма модулей это сумма модулей разностей ? (надеюсь правильно выразился rolleyes.gif )
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 21 2013, 12:58
Сообщение #15





Guests






Цитата(alex_os @ Mar 21 2013, 15:19) *
сдвигать картинку с одного сенсора по оси соединяющей сенсоры. И вычислять сумму модулей разностей пикселей картинок. Сдвиг соответствующий минимуму суммы модулей будет как-то соответствовать расстоянию до предмета.


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

Пример: сканирование картинки 100*100 по горизонтали на 100 px.
( по оси абсцисс 0 - полное совпадение картинок, 100 - полное несовпадение)



P.S.
Впрочем и упомянутый мной алгоритм тоже имеет похожий, хотя и меньший ньюанс.

***************************
Вот такой метод должен работать:

- перевод в шкалу серого;
- бинаризация;
- вычитание изображений ( получим матрицу с элементами -1; 0; +1 )
- находим геометрические центры областей со знаком "плюс" и со знаком "минус"
- дистанция между геом. центрами будет соответствовать параллаксу, а значит и расстоянию.



***
Для большей наглядности метода несколько идеализируем изображение.
Как видно, есть возможность измерения как дальности, так и угловой ориентации.

Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01483 секунд с 7
ELECTRONIX ©2004-2016