Упрощенным подходом было бы сделать эквивалент операции XOR на двух изображениях.Это покажет пиксели, которые идентичны (будут равны нулю), и пиксели, которые изменились (не равны нулю).
Если вам не нужны почти незаметные различия, в качестве альтернативы, используйте смесь «вычитать»затем сдвиг вправо, чтобы отбросить разницу в один или два бита.
Затем можно вычислить границы (возможно, простой прямоугольник) и передать только дельту.Дельта, скорее всего, будет содержать множество нулей или не более байтов с несколькими правыми битами разницы, т. Е. Будет иметь низкую «энтропию», что означает, что она теоретически должна быть в высокой степени сжимаемой с использованием современных алгоритмов сжатия.Получив конец, обратный процесс так же прост.Учитывая дельту и ограничивающий прямоугольник, разархивируйте дельту, затем примените ее (XOR или добавление влево, затем добавьте) к затронутой области предыдущего / существующего изображения.
Для более изощренного подхода без потерь,Посмотрите, как анимированы GIF / PNG и какие алгоритмы используются для вычисления / кодирования дельта-информации между кадрами.См., Например, Какой лучший способ сделать анимированный GIF-файл с использованием алгоритма?
Для еще более изощренного подхода при работе с изображениями реального мира и при желанииидти по пути с потерями - тогда вы уже намекали на это.Посмотрите, как видеокодеки кодируют / передают кадры, например, MPEG Video Encoding .
Само собой разумеется, что существует компромисс между сложностью (процесса кодирования / декодирования) и сокращениемпо размеру передаваемых данных в какой-то момент вам придется решить, стоит ли дополнительная накладная нагрузка при вычислении на любом конце сэкономить на передаче.