Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнить две картинки GIF 
:(
    Опции темы
gerwazy
Дата 27.7.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пытаюсь написать алгоритм для сравнивания двух картинок GIF 50х50 пикс. и нахождения степени похожести в процентах.
Я программирую только в PHP, подскажите пожалуйста в каком языке программируються такие вещи и с чего начать?

Есть куча библиотек для этого. Есть даже функции для сравнивания графики в Imagemagick. Но проблема такая что библиотеки ети очень сложены (сравнивают цвета, разные форматы графики и тд.) Я хотел бы написать алгоритм узкой специализации, который мог бы сравнить одну черно-белую картинку GIF с 1000000 других картинок в коротком интервале времени.

Цвета только два: черный и белый, сравнить по ходу дела надо цвет и расположение.
У меня появилась идея сравнить две матрицы, а лучше два стринга.
допустим есть две картинки 3х3. Одну представим как 111000000 вторую: например 011100000 (1: черный, 0: белый пиксель).
Суммируем поочередно каждое число попорядку, выходит 122000000. Получается что двойки и нули ето общие елементы, их 8, т.е схожесть 8/9 (88.88%)

Не умею толко сконвертировать GIF na еденицы и нули, или может знаете другой способ. 

Буду очень благодарен за помощь

Добавлено через 4 минуты и 19 секунд
Ну и проблема с размером такого стринга. при картинке 50х50 ето 2500 цифр, т.е. 2500 байт. А скомпрессированный GIF 50х50 занимает около 600 бит. Есть у кого идея как сравнивать скомпрессированные картинки?
PM MAIL   Вверх
Pavia
  Дата 27.7.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(gerwazy @  27.7.2009,  22:14 Найти цитируемый пост)
Я программирую только в PHP, подскажите пожалуйста в каком языке программируються такие вещи и с чего начать?

Да практически в любом. 


Цитата(gerwazy @  27.7.2009,  22:14 Найти цитируемый пост)
допустим есть две картинки 3х3. Одну представим как 111000000 вторую: например 011100000 (1: черный, 0: белый пиксель).Суммируем поочередно каждое число попорядку, выходит 122000000. Получается что двойки и нули ето общие елементы, их 8, т.е схожесть 8/9 (88.88%)

Достаточно сделать xor  одинаковые элементы 0 0 и 1 1 додут 0 а разные 0 1  и 1 0 дадут 1 остается подсчитать число 1 битов и поделить на общее число бит. Биты проще считать  через табличную замену заводим массив  длинной 256 где в качестве индекса берем байт а в качестве значения будет число 1 битов.

Для подсчета битов используем.

Код

b=0;
for(i=0;i<8 ;i++) 
if (x!=0)
 {
  x=(x-1 ) and x
  b=b+1;
 }


Цитата(gerwazy @  27.7.2009,  22:14 Найти цитируемый пост)
У меня появилась идея сравнить две матрицы, а лучше два стринга.

 smile В строки не нужно. Это самое худшее что могло предти в голову. 

Цитата(gerwazy @  27.7.2009,  22:14 Найти цитируемый пост)
кого идея как сравнивать скомпрессированные картинки?  

Разжать.

PM MAIL   Вверх
gerwazy
Дата 28.7.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо огромнейшее за ответ.

только тяжело понять как записать массив и как написать алгоритм хоr:
Цитата(Pavia @  27.7.2009,  23:14 Найти цитируемый пост)
Биты проще считать  через табличную замену заводим массив  длинной 256 где в качестве индекса берем байт а в качестве значения будет число 1 битов.

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


Цитата(Pavia @  27.7.2009,  23:14 Найти цитируемый пост)
В строки не нужно. Это самое худшее что могло предти в голову. 

я нашел хорошую библиотеку giftopnm и она преобразовывает gif в строки едениц и нулей

Это сообщение отредактировал(а) gerwazy - 28.7.2009, 00:13
PM MAIL   Вверх
Bitter
Дата 28.7.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

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



Просто интересно: а вот такие картинки разные или одинаковые? Просто ваш алгоритм покажет схожесть процентов на 90. Они считаются одинаковыми?

user posted image
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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