图像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布局、真实鼠标或触控事件、本地首次断网冷启动、系统下载对话框和移动设备性能已经验收。
