11 个稳定版本
3.2.10 | 2024年7月14日 |
---|---|
3.2.8 | 2023年12月21日 |
3.2.7 | 2023年7月2日 |
3.2.5 | 2022年9月18日 |
2.11.4 |
|
#3 在 #objective 中
7,129 每月下载量
在 12 个 包(6 个直接)中使用
67KB
1.5K SLoC
RGBA结构相似性
此工具使用模拟人类视觉的算法计算两个或更多PNG &/或JPEG图像之间的相似性。比较使用SSIM算法的变体进行。
返回的值是1/SSIM-1,其中0表示图像完全相同,而>0(无界)是差异量。这些值不能与其他工具直接比较。 以下 解释了如何解释这些值。
功能
- 改进的算法
- 在多个加权分辨率下进行比较,缩放在线性光RGB中进行。它对各种尺寸的失真敏感,并正确混合颜色以检测例如色度子采样错误。
- 使用L*a*b*颜色空间进行SSIM算法。它比来自RGB通道平均值的度量更好地测量亮度和颜色。
- 支持alpha通道。
- 支持具有颜色配置文件的照片。
- 利用多核CPU。
- 可作为C、Rust和WASM库使用。
- 无需OpenCV或MATLAB。
用法
dssim file-original.png file-modified.png
将输出类似“0.02341”(越小越好)的值,后跟一个文件名。
您可以提供多个文件名以将它们全部与第一个文件进行比较
dssim file.png modified1.png modified2.png modified3.png
您可以保存一个可视化文件之间差异的图像
dssim -o difference.png file.png file-modified.png
它还可以作为库使用。
请注意图像中的颜色配置文件。不同的配置文件,或者在其他工具中不支持配置文件,即使在像素相同的情况下,也可能使图像看起来不同。
解释值
差异量从0到无穷大。它不是一个百分比。
如果您正在比较两种不同的图像压缩编解码器,那么请确保您
- 将图像压缩到相同的文件大小,然后使用DSSIM进行比较,以确定哪个最接近原始图像,或者
- 将图像压缩到相同的DSSIM值,并比较文件大小以查看每个选项提供的文件大小增益。
在引用结果时,请包括DSSIM版本。版本之间的比例已发生变化。运行 dssim -h
时将打印版本。
下载
从发布页面下载。它也适用于Mac Homebrew和Ubuntu Snaps。
从源代码构建
您需要Rust 1.63或更高版本。克隆存储库并运行
rustup update
cargo build --release
这将为您生成 ./target/release/dssim
。
准确性
TID2013 | Spearman | Kendall |
---|---|---|
噪声 | -0.9392 | -0.7789 |
实际 | -0.9448 | -0.7913 |
简单 | -0.9499 | -0.8082 |
奇异 | -0.8436 | -0.6574 |
新 | -0.8717 | -0.6963 |
颜色 | -0.8789 | -0.7032 |
完整 | -0.8711 | -0.6984 |
C语言使用
确保构建 dssim-core
库项目,而不是父 dssim
二进制项目。
cd dssim-core
rustup update
cargo build --release
这将构建 target/release/libdssim_core.a
,您可以将其链接到您的项目。使用dssim存储库中包含的 dssim.h
。您可以根据需要放置这些文件。
或者,在Linux上,有另一种更复杂但稍微更合适的方法
cargo install cargo-c
cargo cinstall --release --destdir=/ --prefix=/usr/lib
这将 libdssim.so
安装到 /usr/lib
并使 dssim
可用于 pkg-config
。有关以这种方式构建的所有文件,请参阅 target/<平台>/release
。
许可证
DSSIM中的算法改进
- 比较是在多个加权尺度(基于IWSSIM)上进行的,以测量不同大小特征。单尺度SSIM倾向于其高斯核较小的差异。
- 缩放是在线性光RGB上进行的,以模拟观看距离/镜头的物理效应。在sRGB或Lab中进行缩放将会有不正确的伽玛和由色度子采样引起的掩码失真。
- Lab的a/b通道以较低的空间精度进行比较,以模拟眼睛对亮度变化比颜色变化的敏感性更高。
- 使用平均绝对偏差汇总SSIM分数。您可以从API获取每像素SSIM以实现自定义汇总。
为WASM编译
为了与单线程WASM运行时兼容,请禁用 threads
Cargo功能。默认情况下已启用,因此要禁用它,请禁用默认功能
dssim-core = { version = "3.2", default-features = false }
依赖项
~0.6–1MB
~18K SLoC