Я чувствую, что у меня очень типичная проблема со сравнением изображений, и мои Google не дают ответов.
Я хочу передавать неподвижные изображения рабочего стола каждые X секунд. В настоящее время мы отправляем новое изображение, если старое и новое отличаются хотя бы на один пиксель. Очень часто меняются только очень незначительные изменения, например, часы или значок, и было бы здорово, если бы я мог просто отправить измененную часть на сервер и обновить изображение (намного меньше пропускной способности).
План, который я вижу, состоит в том, чтобы получить прямоугольник области, которая изменилась. Например, если часы изменились, сделайте снимок экрана с наименьшим прямоугольником, охватывающим изменения, и отправьте его на сервер вместе с его координатой (x, y). Затем сервер обновит старое изображение, наложив прямоугольник с указанной координатой.
Есть ли какой-нибудь алгоритм или библиотека, которая выполняет это? Я не хочу, чтобы это было идеально, скажем, я всегда буду отправлять один прямоугольник, который охватывает все изменения (даже если много меньших прямоугольников было бы более эффективным).
Моя другая идея заключалась в том, чтобы получить разницу между новыми и старыми изображениями, которые сохраняются как серия преобразований. Затем я бы просто отправил серию преобразований на сервер, который затем применил бы это к старому изображению, чтобы получить новое изображение. Не уверен, что это вообще возможно, просто мысль.
Есть идеи? Библиотеки, которые я могу использовать?