Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
/docs/rust-sdk/docs/*.md
/docs/**/readme.md
/static/sb-alg-list.json
/docs/trustmark/*.md

# Misc
.DS_Store
Expand Down
36 changes: 36 additions & 0 deletions docs/trustmark-oveview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
id: trustmark-overview
title: TrustMark watermarking
---

TrustMark is an open-source universal watermarking system for images that:

- Can encode, decode, and remove watermarks from images.
- Works with arbitrary resolution images.
- Has implementations in both Python (using PyTorch) and JavaScript (using ONNX).

:::info
For full technical details and help getting started with TrustMark, see [TrustMark - Quick start](trustmark/readme.md#quick-start).
:::

## Variants

TrustMark has three primary model variants, each with different characteristics.

Images encoded with one variant cannot be decoded with another variant, so you need to stick with the same variant throughout your pipeline.

- **Variant Q (Default)** Use in most cases, where you want a good balance between robustness and imperceptibility. PSNR is 48-50 dB.
- **Variant P** - Use when image quality is the top priority. PSNR is 43-45 dB.
- **Variant C (Compact)** - Use if you need to minimize model size and can live with slightly lower visual quality. PSNR is 38-39 dB.

The general recommendation is to use either:
- Variant Q for most use cases
- Variant P when visual quality is paramount

### About PSNR

PSNR (Peak Signal-to-Noise Ratio) is a technical metric used to measure image quality, particularly when comparing an original image to a modified version (in this case, the watermarked image). PSNR is measured in decibels (dB), and higher values indicate better image quality:
- Values around 40+ dB typically indicate very good quality
- Values around 30 dB indicate acceptable quality
- Values below 20 dB usually indicate poor quality

Empty file added docs/trustmark/.gitkeep
Empty file.
26 changes: 26 additions & 0 deletions scripts/fetch-readme.js
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,32 @@ const readmes = [
repo: 'c2pa-org/softbinding-algorithm-list',
path: 'softbinding-algorithm-list.json',
},
// TrustMark
{
dest: resolve(__dirname, '../docs/trustmark/readme.md'),
repo: 'adobe/trustmark',
path: 'README.md',
},
{
dest: resolve(__dirname, '../docs/trustmark/config.md'),
repo: 'adobe/trustmark',
path: 'CONFIG.md',
},
{
dest: resolve(__dirname, '../docs/trustmark/faq.md'),
repo: 'adobe/trustmark',
path: 'FAQ.md',
},
{
dest: resolve(__dirname, '../docs/trustmark/python-readme.md'),
repo: 'adobe/trustmark',
path: 'python/README.md',
},
{
dest: resolve(__dirname, '../docs/trustmark/js-readme.md'),
repo: 'adobe/trustmark',
path: 'js/README.md',
},
];

function resolveMarkdownLinks(linkBase, content) {
Expand Down
28 changes: 28 additions & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,34 @@ const sidebars = {
label: 'Watermarking and fingerprinting',
id: 'sb-algs',
},
{
type: 'category',
label: 'TrustMark watermarking',
link: { type: 'doc', id: 'trustmark-overview' },
collapsed: true,
items: [
{
type: 'doc',
id: 'trustmark/readme',
label: 'Overview',
},
{
type: 'doc',
id: 'trustmark/config',
label: 'Configuration',
},
{
type: 'doc',
id: 'trustmark/faq',
label: 'FAQ',
},
{
type: 'doc',
id: 'trustmark/js-readme',
label: 'JavaScript example',
},
],
},
],
},
{
Expand Down