Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритмы распознавания изображений, Poisk etalonnogo izobrazheniya 
:(
    Опции темы
Bomzh
Дата 18.7.2002, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.7.2002

Репутация: нет
Всего: нет



Помогите найти алгоритм поиска изображения по маске с учетом изменения яркости и поворота
PM MAIL   Вверх
Cepera
Дата 18.7.2002, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: нет
Всего: 7





--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
podval
  Дата 18.7.2002, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Здесь одной ссылкой не обойтись. Такая задача не столько программистская (если ее понимать так глобально, как поставлен вопрос :)), сколько научная. Есть в одной докторской диссертации очень оригинальное решение подобной проблемы. На пальцах выглядит так.
Имеем дело с задачей классификации, т.е. отнесения заданного изображения к одному из известных в классе из N. Чтобы нам не усложнял жизнь такой параметр, как яркость, можно эту яркость отнормировать к самой яркой точке. Эта процедура, естественно, делается для всех экземпляров класса и для заданного изображения.
Теперь что делать с поворотом. Мысль такая. Выбирается полярная система координат. Все пикселы изображения упорядочиваются. Т.е. пикселы выстраиваем в ряд. Здесь важно разумно упорядочить. Если в декартовой системе координат упорядочить можно, например, двигаясь из левого верхнего угла картинки в правый нижний, как бы по строкам. То и в полярной системе надо упорядочить по тому же принципу, но в полярных координатах - по углу и расстоянию.
Затем очень важно! Берем первые конечные разности этого ряда, т.е. вычисляем новый ряд по правилу Y(i) = X(i+1) - X(i). Это избавляет от постоянной составляющей и улучшает свойства стационарности.
А от полученного ряда берем (в простом случае) преобразование Фурье.
Оказывается, теперь в частотной области становится не важен угол поворота изображения!
Надеюсь, понятно, что до процедуры сравнения вот эти шаги надо проделать не только для исходной картинки, но для всех экземпляров класса (всех изображений). В принципе, это и будут эталоны, которые надо хранить в базе и поиск наиболее похожего делать по ним.
Вместо преобразования Фурье можно взять преобразование по любому другому базису, который нравится. Вейвлеты, скажем, очень помогут, если изображения зашумлены или расфокусированы.
Да! Собственно поиск наиболее похожего можно делать по разным критериям, зависящим от выбранной метрики: Евклидовой (самая простая), Махаланобиса (работает устойчивее в шумах) и т.д.
Надеюсь, удовлетворил? :)
Спрашивай, если что.
PM WWW ICQ   Вверх
Bomzh
  Дата 24.7.2002, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.7.2002

Репутация: нет
Всего: нет



Dlya Serega.
Pereril kuchu informacii i dumayu, chto wavelet naibolee podhodit dlya moey zadachi, no tam ne vsyo tak ponyatno kak hotelos-bi. Konkretno: po tvoey ssilke vzya stat'yu "Алгоритм распознавания изображений с использованием вейвлет-преобразования.Плекин В.Я., Малышев http://autex.spb.ru/dspa/dspa2000/part2.htm#21.

Esli ti eto ispol'zoval ili razbiraeshsya v walvet'ah ob'asni kak eto mojno primenit' na praktike
PM MAIL   Вверх
Cepera
Дата 24.7.2002, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: нет
Всего: 7



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


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Bomzh
Дата 24.7.2002, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.7.2002

Репутация: нет
Всего: нет



Mozhet vozmozhno viyasnit' u nego? ochen' uzh nado...
PM MAIL   Вверх
Cepera
Дата 24.7.2002, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: нет
Всего: 7



боюсь теперь уже нет, 5 дней назад ушел в отпуск, на 3 недели


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
podval
Дата 24.7.2002, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Bomzh
Скажи, что конкретно тебе непонятно в той статье.
PM WWW ICQ   Вверх
Bomzh
Дата 24.7.2002, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.7.2002

Репутация: нет
Всего: нет



V (1): j - stepen' razresheniya 0..J. Otkuda ih vzyat'?
V (6): r0 - koefficient rasfokusirovki
V (5): G - kontur izobrazheniya, kak on schitaetsya?
PM MAIL   Вверх
podval
Дата 26.7.2002, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



j - это масштабный коэффициент. В вейвет-анализе является аналогом частоты Фурье-анализа. 0...J - количество уровней разложения, включая аппроксимацию и т.н. "детали". J выбирается в зависимости от того, насколько подробно тебя интересуют эти "детали", т.е. высокочастотные составляющие вейвлет-спектра. Если ты действительно перерыл кучу информации, то найдешь методики, по которым можно определить, сколько уровней разложения надо.
Вообще говоря, все зависит от конкретной решаемой задачи. Я пока не понял, почему тебя заинтересовала именно эта статья. Т.к. следующие 2 переменные, которые тебе непонятны, связаны именно с предметной областью - радиолокацией. РЛС строишь? :)
В радиолокации борются именно с такими эффектами, как расфокусировка,  искажение контура, поэтому и пропускают сигнал через систему специальных фильтров.
А если, к примеру, такой случай. Берем 2 фотографии - твою и мою - в качестве эталонов. Если на вход нашего решающего устройства подать любой из этих же эталонов, то все будет прекрасно работать. Если же подать на вход мою фотографию хорошо сфокусированную и вообще качественно сделанную, но я на ней буду корчить обезьянью рожицу, то тут никакие фильтры уже не помогут. Решающее устройство будет ошибаться.
Если тебе РЛС не надо, то ищи совпадения с эталонами прямо в пространстве вейвлет-образов.
Разложение по вейвлет-базису дает некоторую матрицу, вот и сравнивай матрицу М1 исходной картинки с матрицами эталонов Мэ.
Можно искать по минимуму

Dm = [(X1-Xэ)'*inv(S)*(X1-Xэ)], где X1, Xэ - векторы средних для матриц М1 и Мэ, S - обобщенная ковариационная матрица, inv - операция обращения матриц.

Это т.н. растсояние Махаланобиса. Можно и другие метрики выбрать. Подробности, анпример, в книге "Прикладная статистика" в 3-х т. под ред. Айвазяна.

Не мешало бы пояснить, какую вообще задачу решаешь, может быть все гораздо проще можно сделать.
PM WWW ICQ   Вверх
Bomzh
Дата 26.7.2002, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.7.2002

Репутация: нет
Всего: нет



Zadacha sleduyushaya: est' izobrazhenie.Videlyayu pryamougol'nuy oblast'(fragment) i neobhodimo nayti maksimal'no shozhuyu oblast' na drugoy chasti izobrazheniya. Eto vsyo.
PM MAIL   Вверх
Vit
Дата 26.7.2002, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



To Bomzh: Пожалуйста пользуйтесь транслитом - когда пишите сообщение - у Вас есть там ссылка для автоматического перевода на русский, написание "на молдавском" языке очень утомляет и раздражает, у нас довольно много участников без русской клавиатуры и все прекрасно пользуются этой услугой.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Baa
Дата 26.7.2002, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



На самом деле, не особо сложно написать такую программу.
Принцип таков:
Создаем матрицу из структур.
Каждая структура содержит описание пикселя.
(это наш кусок)
Создаем еще одну такую матрицу (такого же размера) и заполняем её начиная с первого пикселя (допустим, верхний левый угол)
Затем попиксельно перемещаем вторую матрицу и сравниваем с исходной (тобишь сравниваем цвет.)
Так находим схожую картинку, но с заданным коэффициентом схожести.
Как найти катинку с плавающим коэффициентом? Тож не так сложно, при сравнение вычисляем среднюю схожесть(берется из суммы всех точек) на каждом участке передвижения и записывается(записываем коэффициент и смещение по х,у).
Далее делаем как и в первом случае, токо каждый раз сравнивая с текущим мах коэфф. схожести и если коэфф. прохода больше, то переписываем смещение и коэфф.
Вобщем, если не понятно, могу доходчивей объяснить.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Bomzh
Дата 26.7.2002, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.7.2002

Репутация: нет
Всего: нет



Уже пробовал
for (int y = 0; y < pdy; y++) {
    for (int x = 0; x < pdx; x++) {
int Diff = (int)(*pP++) - (int)(*pS++);
Sum += Diff * Diff;
}
}
if (Sum > MaxSum)
....
Но работает плохо.
Например выделить один глаз на фотке и найти другой - уже не работает...
PM MAIL   Вверх
Baa
Дата 26.7.2002, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



С глазами хуже, потому как там с одинаковостью цвета совсем плохо...вообще, оно должно работать хоть как-то.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1105 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.