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