#image #ssim #comparison #color-space #visual #benchmark

bin+lib dssim

使用SSIM算法的多尺度变体测量图像之间结构相似性的工具

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 2015年8月7日

#90 in 图像

Download history 259/week @ 2024-05-03 175/week @ 2024-05-10 113/week @ 2024-05-17 213/week @ 2024-05-24 229/week @ 2024-05-31 227/week @ 2024-06-07 497/week @ 2024-06-14 333/week @ 2024-06-21 755/week @ 2024-06-28 615/week @ 2024-07-05 434/week @ 2024-07-12 261/week @ 2024-07-19 372/week @ 2024-07-26 360/week @ 2024-08-02 76/week @ 2024-08-09 134/week @ 2024-08-16

1,013 每月下载量
6 crates 中使用

AGPL-3.0

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

准确性

版本3.2的分数针对TID2013数据库进行测量

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采用AGPL商业许可证双重授权。

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