#image #ssim #comparison #metrics #objective #color-space

dssim-core

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

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 2020年10月11日

#3#objective

Download history 1706/week @ 2024-05-04 1786/week @ 2024-05-11 1761/week @ 2024-05-18 2143/week @ 2024-05-25 1455/week @ 2024-06-01 1492/week @ 2024-06-08 1774/week @ 2024-06-15 1620/week @ 2024-06-22 2207/week @ 2024-06-29 1966/week @ 2024-07-06 2027/week @ 2024-07-13 1847/week @ 2024-07-20 1727/week @ 2024-07-27 1801/week @ 2024-08-03 1865/week @ 2024-08-10 1425/week @ 2024-08-17

7,129 每月下载量
12 包(6 个直接)中使用

AGPL-3.0

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

准确性

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存储库中包含的 dssim.h。您可以根据需要放置这些文件。

或者,在Linux上,有另一种更复杂但稍微更合适的方法

cargo install cargo-c
cargo cinstall --release --destdir=/ --prefix=/usr/lib

这将 libdssim.so 安装到 /usr/lib 并使 dssim 可用于 pkg-config。有关以这种方式构建的所有文件,请参阅 target/<平台>/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 }

依赖项

~0.6–1MB
~18K SLoC