Сравнение изображений Быстрый алгоритм GPU найти совпадение - PullRequest
0 голосов
/ 25 июня 2019

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

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

Алгоритмможет найти ограничивающие рамки для значка, который переместился, и число (секунда), которое изменяется, что дает мне 2 поля, которые содержат изменения, или он может генерировать логику типа MIN / MAX и генерировать один блок, включающий объединение этих 2изменения.В этом случае поле будет размером целого экрана, как в моем примере для худшего сценария.(Я знаю, что можно объединить коробки и получить одну объединенную коробку).Но, возможно, есть более быстрый алгоритм, чем поиск каждого блока отдельно.Вот почему алгоритм, который находит объединение, тоже в порядке.

Я сравнил попиксельно и нашел минимальное максимальное значение для всего экрана, где изменения существуют во вложенном цикле, как в моде.
Я даже пробовал это на OPENCL, но скорость для изображений 4Kне приемлемо, так как это 0 ^ 2.

Существует ли алгоритм поиска, который мог бы ускорить этот поиск на экране.Может быть, представить это в виде графика.Вроде как A * или какой-то другой эвристический поиск?

Может быть, уменьшить его и выполнить поиск с последующим вторым поиском только в разделе, который обнаружил изменение?

Может быть, конвертировать в помощь YUV?

1 Ответ

0 голосов
/ 25 июня 2019

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

...