图像DCT压缩与误差分析 科学工具 28 · 图像变换与压缩 第一次打开 左右是同一原创程序图像的工作原图与真实重建。当前选中块位于圆环和红色边缘,可看到多个非零频率。把保留项减到10,点「应用并重新编码」;观察边缘与细纹的损失。点击图像选择另一个8×8块,也可用数值坐标。下面的「放大检查」显示可以逐格读数的完整矩阵。 完成自己的压缩实验 1. 导入自己的图片。最长边超过384px会按比例缩小,透明部分合成白底。后续所有误差都相对这份工作RGB,原上传文件体积不作为压缩率分母。 2. 调整自定义量化质量和zigzag保留项,点击应用。真实分块计算显示已处理块数,可停止;未应用参数时禁止导出旧结果冒充新结果。 3. 选通道、块和频率,查看原系数、量化步长、整数与还原系数。可切换差值放大。 4. 下载真正的PX8二进制编码。打开一份新页面,点「解码PX8文件」,仅凭该文件恢复图像,不需要原图。没有参考原图时不显示MSE/PSNR;若想继续压缩,可明确把解码图作为新的原图。 5. 带走真实重建PNG、图面PNG、当前块CSV和误差TXT。完整项目JSON另外保存原始像素、参数和选择;它比只含编码的PX8承担不同作用。 计算与格式 三RGB通道分别对减128像素做正交归一DCT-II;量化、按zigzag截取,再逆变换、加128、四舍五入并裁至0—255。边缘复制到8的倍数,输出只保留有效宽高。没有YCbCr、色度抽样、专业色彩管理或熵编码。 PX8 v1是本工具自制的完整格式,不是标准JPEG。头部16bytes,量化表128bytes;之后是每块每通道的zigzag零游程uint8、有符号int16小端系数和255结束符。页面帮助中有完整字节定义。自身导出可被自身严格读取器恢复,同时另用Python独立解析器与NumPy矩阵逆变换核对真实文件。 实际核对结果 默认256×192RGB共147456原始字节,实际PX8为63945bytes;最终像素MSE328.4711507,PSNR22.9658313dB。质量25、保留10项时实际码流25644bytes,MSE915.1438666、PSNR18.5159099dB。独立Python解码与交付重建PNG逐像素最大差为0。常量块DC=8倍像素偏移,AC接近0;随机块正交逆变换最大误差小于1e-10,能量守恒核对通过。 支持1×1至384×384工作像素,奇数边缘与最大合法项目经过回读。PX8最多1.4MB,完整项目最多2.5MB;编码并不保证比RGB更小。 一手资料 SciPy官方DCT定义:https://docs.scipy.org/doc/scipy/reference/generated/scipy.fft.dct.html ITU-T T.81标准目录:https://www.itu.int/rec/T-REC-T.81-199209-I/en 其中ITU目录用于说明标准JPEG的边界,未把本工具声称为该标准实现。 使用方式与数据 双击 index.html。运行资源、脚本与中文常用字字体都在单个HTML中;没有CDN、API、账户或本地服务器要求。来源链接只用于阅读资料。新增字体子集之外的字由系统字体回退。浏览器暂存可能受路径、隐私模式或容量影响,重要资料请保存完整JSON。作品提供手动下载和严格回读,不会直接覆盖你电脑上的文件。撤销重做覆盖文档编辑,视图选择可独立改变。 核对范围 已执行最终HTML内的真实模型与真实Canvas绘图,用Node和原生Canvas核对输出;导出的PNG已解码并人工看过。此环境没有获准的浏览器控制,未把这些图称为网页截图,也没有声称DOM/CSS布局、真实鼠标或触控事件、本地首次断网冷启动、系统下载对话框和移动设备性能已经验收。