搞了一个有损图像压缩算法

2022-01-18 13:36:56 +08:00
 hahaayaoyaoyao

https://github.com/ZTFtrue/compress-image

也不知道有没有用

2830 次点击
所在节点    分享创造
8 条回复
coderluan
2022-01-18 15:12:16 +08:00
楼主你可以尝试算一下图像的 PSNR 或者 SSIM ,这些是评价图像质量的标准,拿你和这个和一般的压缩算法对比一下,就知道有没有用了。
mxT52CRuqR6o5
2022-01-18 15:16:10 +08:00
[删除每一个像素(24 位)每个 RGB 值的最后一位(降低对比度)]
那你这压缩率应该为 7/8 啊,看你这 [179.1kb 29.4kb] 压缩前后的尺寸对比应该还有其他操作
imn1
2022-01-18 15:32:07 +08:00
为何内存复原和文件复原相差那么大?

我没能力做技术评价,只是好奇适用在什么场景
killeder
2022-01-18 15:39:13 +08:00
这个有损是多损
Thiece
2022-01-18 16:26:40 +08:00
ReVanTis
2022-01-18 16:28:19 +08:00
https://github.com/ZTFtrue/compress-image/blob/main/OpenCV_learn.cpp#L45

如果我没看错的话,你直接把 rgb 的值 /10 了,大概是把每个通道 8 位深的 0-255 的范围(RGB888)降到了 0-25 。

大概也就是降为不到 5 位深(0-31),RGB 总共是不到 15 位深。

这个大概也就比 16 位色(RGB565)差那么一点点。

鉴于 log(2,25) = 4.64...,所以你大概是实现了一个类似于 RGB888 转 RGB 4.6 4.6 4.6 的转码器。

干得漂亮!
c0xt30a
2022-01-19 04:11:25 +08:00
真是简单粗暴。。。
用 KNN 可能更文雅些
chenzhekl
2022-01-19 11:43:53 +08:00
这就是 jpeg 压缩时的 quantization ,不过比 jpeg 做的要简单粗暴。jpeg 利用人眼对亮度敏感、但对色彩不敏感的特性,先把图像转换到 YCbCr 色彩空间,再只对 Cb 和 Cr 分量做 quantization 。理论上 jpeg 要更合理,而且 jpeg 还会做 DCT 、丢弃高频信息,所以 lz 的算法还是比不过 jpeg 的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828982

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX