Сравнение изображения с php + gd

Что лучший подход к сравнению двух изображений с php и Библиотекой Графической ничьей (GD)?

Это - сценарий:

alt text

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

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

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

Вот образец вывода при сравнении 4 изображений с целевым изображением, в этом случае логотип яблока, который соответствует одному из них, но не является точно тем же:

Исходное изображение:

Red:222 Green:226 Blue:232

Сравненный с:

Red:183 Green:212 Blue:212 http://a1.twimg.com/profile_images/571171388/logo-twitter_normal.png и индекс подобия 56

Red:117 Green:028 Blue:028 и индекс несходства 530

Red:218 Green:221 Blue:221 и индекс несходства 13 Подобранных Правильно.

Red:061 Green:063 Blue:063 и индекс несходства 491

Даже может не быть выполнимым лучше с лучшими результатами, чем, что я уже получаю, и я трачу впустую свое время здесь, но так как, кажется, существует много опытных php программистов, я предполагаю, что можно указать на меня в правильных направлениях о том, как улучшить это.

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

Заранее спасибо.

9
задан Glorfindel 31 May 2019 в 03:09
поделиться

3 ответа

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

Однако, если вы преобразовали каждое изображение в один и тот же размер, а затем вычислили средний цвет в каждой ячейке 16x16 (или 32x32, 64x64 и т. Д., В зависимости от того, сколько времени / мощности обработки вы хотите использовать), вы сможете сформировать какое-то толковое (-шнее) сравнение.

4
ответ дан 3 November 2019 в 08:20
поделиться

Я бы предложил, например, MidDaparka, что вы не смотрите на 1 пиксель только только изображение, потому что вы потеряете всю пространственную информацию. Переход к 16x16 (или 32x32 и т. Д.), безусловно, обеспечит лучшие результаты.

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

0
ответ дан 3 November 2019 в 08:20
поделиться

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

-1
ответ дан 3 November 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: