|
|
|
DoZENT |
|
|||
Опытный Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: нет Всего: 1 |
Мне нужно получить список дубликатов картинок в папке с миллионом файлов. Хочу это сделать путем создания ID для каждой картинки, а потом сравнивать по этому ID. Одинаковые картинки но с разными разрешениями также должны считаться дубликатами. Какие варианты предложите?
Это сообщение отредактировал(а) DoZENT - 28.5.2010, 10:06 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
esperanto |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Вместо ИД, можно взять среднее значение, яркости
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
DoZENT |
|
|||
Опытный Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: нет Всего: 1 |
esperanto, пробовал не по яркости, а нахождением среднего цвета - все черные картинки считаются одинаковыми
-------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
esperanto |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Все черные картинки и есть одинаковые разве нет?
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
DoZENT |
|
|||
Опытный Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: нет Всего: 1 |
esperanto, нет, есть картинки с черным фоном, который составляет 80% изображения, а в центре - изображены разные объекты
-------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
esperanto |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
В любом случае это произойдет. Когда мы уменьшаем размер картинки, мы уменьшаем размерность пространства. Некоторые множество разных картинок перейдев в одну уменьшиную так или иначе. Если ИД это одно, число ты делаем редукцию в одномерное пространство. И тем более множество "похожих" перейдут в одну картинку. Вместо пространства размерностью 1, можно например взять размерность 9. - Разделить картинку на 9 равных прямоугольников и для каждого посчитать средее. ------------------------- Можно применить вероятностные методы. Основываясь на анализе случайно выбранных пикселей. Но ВСЕГДА будут разные изображения, которые будут трактоваться как одинаковое, ибо мы переходим в пространство с меньшей размерностью --------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
nworm |
|
|||
Опытный Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
DoZENT, можно в качестве id хранить всю картинку - большое число. Только в этом случае не произойдёт потери информации.э
Если же цель - получить для каждой картинки (увесистый файл) относительно маленькую характеристику, будут потери, в любом случае. Добавлено через 5 минут и 21 секунду можно так, 1. использовать маленькую характеристику (допустим средний цвет), для получения списков картинок подозрительных на одинаковость. 2. проверить каждый список картинок, подозрительных на одинаковость, на реальную одинаковость |
|||
|
||||
Pavia |
|
|||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Миллион это так мало. Для хранения миллиона надо всего 2.5 байта. На самом деле что бы сравнить картинки надо пройтись по всем пикселам только этот метод дает хорошее качество сравнения. Но ускорить сравнение мы можем для этого надо уменьшить число параметров по которым будем сравнивать. В принципе уменьшение подгонка картинке под 64x64 дает хороший результат. Так как еще пикселы могут отличаться незначительно, то берем интенсивность пикселя и отбрасываем младшие 4 бита. И того имеем 1388 байта. Так как 1388 на 1 000 000 = 1гбайт это много то предлагается взять от этих байт простой хэш 4 байтовй к примеру CRC и его использовать для сравнения.
Остальное додумай сам. Добавлено через 3 минуты и 52 секунды Брать среднее арифметическое, не есть правильное. Фактически при съемки одного объекта днем и ночью вы получити разные характеристики. Фактически тут надо отталкиваться от восприятия человека. Это сообщение отредактировал(а) Pavia - 28.5.2010, 18:03 |
|||
|
||||
nworm |
|
|||
Опытный Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Вообще-то в условии не сказано, что изображение одного объекта днём и ночью это одно и то же изображение. |
|||
|
||||
Bitter |
|
|||
Опытный лентяй Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
Могу предложить такой алгоритм. Не знаю насколько он будет эффективно искать одинаковые, но думаю будет.
Нужно найти среднее взвешенное не яркостей пикселей а их координат. Но координаты умножать на коэфициент яркости. То есть: AVGX = Сумма(i*(ярк[i,j]/max_ярк) )/Кол-во_пикс AVGY = Сумма(j*(ярк[i,j]/max_ярк) )/Кол-во_пикс тут max_ярк = 240 (в соответствии с цветовой моделью HLS) Кол-во_пикс = ширина * высота ярк[i,j] = яркость пикселя с координатами i, j по цветовой модели HLS Вот, в результате вы получите две координаты в пространстве данной картинки. Если вы их разделите на ширину и высоту, то получите координаты в относительных единица (от 0 до 1). Таким образом для каждой картинки нужно хранить два числа Х и Y, которые вы посчитали. А при сравнении искать расстояние между этими координатами и если оно меньше заданного лимита, считайте, что картинки одинаковые. |
|||
|
||||
esperanto |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Почему вы так думаете? --------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
DoZENT, в качестве ИДа для картинки выберите CRC32. Если ЦРЦшные коды всё же будут у некоторых картинок совпадать, можно добавить дополнительный код (например, контрольную сумму Флетчера).
Если форматы сжатия без потерь (гиф, пнг, тифф, бмп,...) и каждый раз палитра одинаковой глубины - то всё будет ОК. Ну и, если разные разрешения (и разные форматы сжатия) - то ИДы надо, естественно, считать для "разжатых" в память картинок. А вот если глубина палитры варьируется и используется сжатие с потерями (жпег, например) - то никакой расчет хэшей для картинок (и последующее определение эквивалентности картинок через равенство хэш-кодов) не подойдет, надо будет собирать какой-то эмпирический алгоритм (сначала сравниваем размеры картинок, потом, если размеры совпали, что-то другое, и т.д. до тех пор, пока не решим, одинаковые ли картинки или всё-таки разные). |
|||
|
||||
esperanto |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Плохая идея. --------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
Bitter |
|
|||
Опытный лентяй Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
||||
|
||||
esperanto |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Вы заблуждаетесь. Чем же СРС лучше чем среднее? --------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |