0

我正在比较 2 张图像并获得一组不匹配的像素,例如

rgb(12, 54, 69) 1 4
rgb(19, 54, 98) 4 8
rgb(12, 54, 69) 2 9
rgb(86, 85, 10) 9 7

我需要通过网络传输它。所以压缩我可以做到

rgb(12, 54, 69) (1, 4), (2, 9)
rgb(19, 54, 98) (4, 8)
rgb(86, 85, 10) (9, 7)

但是,我怀疑这种简单的压缩在差异很大的情况下不会产生太大的好处。我还没有进行任何测试。

当整个图像被改变时,新图像的正常 JPEG 压缩会在尺寸上小得多。但是,对于任何小的差异,此方法将产生较小的字节开销。如果不从每个图像的上到下循环,就无法知道变化量。

有没有做同样的标准方法?我将在 protobuf 或 boost 序列化和 Qt 之上用 C++ 实现它

4

1 回答 1

0

在开始时将图像压缩为 jpeg,将这个新 jpeg 文件的大小传递给您的函数。当你在你的函数中迭代时,一旦你超过了传入的大小,就返回一个失败并发送 jpeg。这样您就不必到达函数的末尾。

但是,我将首先介绍您当前的代码;在不太可能的情况下,您实际上会受到此代码的瓶颈,通过创建一个本机/C 模块来执行此遍历可能会更好。

当然,这假定您的函数所花费的时间平均超过了 JPEG 创建时间。与往常一样,优化之前的配置文件、配置文件、配置文件。

于 2012-07-02T08:11:16.160 回答