28个稳定版本
3.3.2 | 2024年4月27日 |
---|---|
3.3.1 | 2024年1月19日 |
3.2.4 | 2022年11月14日 |
3.2.0 | 2022年2月12日 |
0.0.5 |
|
#90 in 图像
1,013 每月下载量
在 6 crates 中使用
90KB
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 repo中包含的 dssim.h
。您可以选择将这些文件放在哪里。
或者,在Linux上,有一种更复杂但稍微更合适的方法
cargo install cargo-c
cargo cinstall --release --destdir=/ --prefix=/usr/lib
这将把 libdssim.so
安装在 /usr/lib
,并使 dssim
可用于 pkg-config
。有关所有以这种方式构建的文件,请参阅 target/<platform>/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 }
依赖关系
~4.5–9MB
~163K SLoC