Как сравнить фотографии на схожесть
Перейти к содержимому

Как сравнить фотографии на схожесть

  • автор:

Определение процента % похожести двух картинок онлайн

Главное нужно указать две картинки на вашем компьютере или телефоне, нажать кнопку OK внизу. Остальные настройки выставлены по умолчанию.

Если обе картинки похожие, то их процент похожести будет равным 90-100%, а если разные — обычно меньше 70%. На этом сайте также есть автоматическое выделение отличий двух похожих изображений.

Исходные изображения никак не изменяются. Вам будет предоставлен процент похожести двух картинок.

3 способа сравнить изображения

Константин Докучаев

В этом посте я расскажу о том, как просто сравнить два изображения и найти различия. И для этого отлично подойдёт один из этих трёх онлайн-инструментов.

Diffchecker

Первым в списке идёт сервис под названием Diffchecker. Он помогает сравнить не только изображения, но и текстовые файлы и даже папки. Есть платная и бесплатная версия.

Во втором случае доступна только веб-версия, чего нам вполне достаточно. Искать различия можно в трёх режимах: разделение экрана, обесцвечивание (наложение изображений) и с помощью слайдера.

Кроме визуальных отличий, можно сравнить и сами данные файлов: тип, размер, разрешение, геоданные и многое другое.

Online-Image-Comparison

Более простой, но эффективный сервис для поиска различий на изображениях. Различия подсвечиваются определённым цветом, что позволяет легко произвести попиксельное сравнение.

TheImageKit

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

WinMerge

В качестве бонуса хочу добавить бесплатную утилиту для Windows, которая позволяет сравнивать всё на свете. Картинки входят в это число.

Достаточно открыть два или более файлов в приложении, и WinMerge автоматически подсветит все различия.

Python. Как сравнить фотографии?

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

Совсем недавно у меня появилась интересная задача – необходимо было найти одинаковые фотографии на разных объектах недвижимости. Т.е. к объектам недвижимости расположенных с разным местоположением крепилась одна и та же фотография, может ошибочно, может специально, но такие объекты надо было найти. И я хотел бы поделиться тем, как я решал эту задачу. Для примера у Вас может быть домашняя фототека.

Инструменты

Посмотрев просторы интернета, первым делом на глаза мне попалась библиотека OpenCV, эта библиотека имеет интерфейсы на различных языках, среди которых Python, Java, C++ и Matlab. Мне стало интересно, есть ли у Python стандартная библиотека для работы с изображениями и вот она – Pillow. Это форк PIL, которая успешно развивается и был принят в качестве замены оригинальной библиотеки. Свой выбор я остановил на ней.

Решение задачи

Начнем работу с библиотекой, и попробуем открыть файл и показать его.

from PIL import Image #указываем необходимое имя файла im=Image.open(‘cbcf449ffc010b9f958d611e787fa48092ac31841.jpg’) # Покажет нам изображение. im.show()

Данный скрипт откроет нам изображение. Почитав документацию, я нашел функцию, которая по пикселям сравнивает два изображения и выдает разницу. Функция называется difference и находится в модуле ImageChops. Что бы показать принцип работы функции, для примера возьмем фотографию и добавим на нее какой-нибудь текст:

from PIL import Image, ImageChops image_1=Image.open(’06ebe74e5dfc3bd7f5e480cf611147bac45c33d2.jpg’) image_2=Image.open(’06ebe74e5dfc3bd7f5e480cf611147bac45c33d2_text.jpg’) result=ImageChops.difference(image_1, image_2) result.show() #Вычисляет ограничивающую рамку ненулевых областей на изображении. print(result.getbbox()) # result.getbbox() в данном случае вернет (0, 0, 888, 666) result.save(‘result.jpg’)

result.show() вернет разницу в пикселях. Так же прошу обратить внимание на result.getbbox(), функция либо вернет рамку где расходятся пиксели, либо вернет None если картинки идентичны. Если мы сравним первую картинку саму с собой, то получим полностью черное изображение.

Напишем простенькую функцию по сравнению двух картинок:

def difference_images(img1, img2): image_1 = Image.open(img1) image_2 = Image.open(img2) result=ImageChops.difference(image_1, image_2).getbbox() if result==None: print(img1,img2,’matches’) return

Теперь необходимо подумать над алгоритмом перебора имеющихся изображений.

path=’images/’ #Путь к папке где лежат файлы для сравнения imgs=os.listdir(path) check_file=0 #Проверяемый файл current_file=0 #Текущий файл while check_file

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

А если файлов для сравнения очень много и их обработка очень долгая? Можно пойти двумя способами:

  • Создать миниатюры и работать с ними.
  • Запустить нашу обработку в несколько потоков.

Первый способ простой, в нашу функцию difference_images добавляем несколько строк:

def difference_images(img1, img2): image_1 = Image.open(img1) image_2 = Image.open(img2) size = [400,300] #размер в пикселях image_1.thumbnail(size) #уменьшаем первое изображение image_2.thumbnail(size) #уменьшаем второе изображение #сравниваем уменьшенные изображения result=ImageChops.difference(image_1, image_2).getbbox() if result==None: print(img1,img2,’matches’) return

Второй способ уже сложнее и более интересный, потому что нужно будет управлять и потоками, и очередями, так же нужно будет переписать часть кода. Для этого нам понадобятся следующие библиотеки threading и Queue (подробней можно почитать в интернете), ниже приведен готовый код с внесенными изменениями, я постарался прокомментировать все действия что бы было понятно:

class diff_image(threading.Thread): #класс по сравнению картинок. «»»Потоковый обработчик»»» def __init__(self, queue): «»»Инициализация потока»»» threading.Thread.__init__(self) self.queue = queue def run(self): «»»Запуск потока»»» while True: # Получаем пару путей из очереди files = self.queue.get() # Делим и сравниваем self.difference_images(files.split(‘:’)[0],files.split(‘:’)[1]) # Отправляем сигнал о том, что задача завершена self.queue.task_done() def difference_images(self, img1, img2): image_1 = Image.open(img1) image_2 = Image.open(img2) size = [400,300] #размер в пикселях image_1.thumbnail(size) #уменьшаем первое изображение image_2.thumbnail(size) #уменьшаем второе изображение result=ImageChops.difference(image_1, image_2).getbbox() if result==None: print(img1,img2,’matches’) return def main(path): imgs=os.listdir(path) #Получаем список картинок queue = Queue() # Запускаем поток и очередь for i in range(4): # 4 — кол-во одновременных потоков t = diff_image(queue) t.setDaemon(True) t.start() # Даем очереди нужные пары файлов для проверки check_file=0 current_file=0 while check_file

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

Надеюсь, моя статья была полезна. Спасибо за внимание.

Сравните JPG документов онлайн

Инструмент для онлайн-сравнения двух документов с любого устройства с помощью современного браузера, такого как Chrome, Opera и Firefox.

Оригинальный документ
Просмотр файла или перетащите его в это поле
Измененный документ
Просмотр файла или перетащите его в это поле

Загружая файлы или используя наш сервис, вы соглашаетесь с нашими Условиями использования. и Политикой конфиденциальности.

Мы уже обработали 66 012 файлов общим размером 66 714 МБ

О приложении «Сравнение»

Иногда нужно сравнить два похожих или совершенно разных файла JPG, чтобы найти в них общее или, наоборот, отличное содержание. К счастью, мы представляем вам наше бесплатное приложение для сравнения «Сравнение», которое позволяет вам делать это автоматически.

Comparison — это надежное и мощное приложение, которое позволяет вам идентифицировать каждое изменение между разными файлами JPG. Вы можете напрямую перетаскивать и сравнивать файлы в более чем 100 различных форматах. Благодаря Comparison вам не придется тратить много времени и кропотливо сопоставлять каждую строку текста. GroupDocs.Comparison может работать с любыми языками, выявлять изменения в различных структурированных данных всех поддерживаемых типов документов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *