PageSourceSearch

https://opensource.contentauthenticity.org/assets/js/8a57cb0f.1d5cbc2b.js

js contentauthenticity.org collected 2026-09-24 08:26:20 UTC 4,529 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkopensource_contentauth_org=globalThis.webpackChunkopensource_contentauth_org||[]).push([[8619],{8453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>o});var n=r(6540);const i={},s=n.createContext(i);function a(e){const t=n.useContext(s);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(s.Provider,{value:t},e.children)}},9867:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"durable-cr/trustmark-intro","title":"TrustMark watermarking","description":"TrustMark is an open-source universal watermarking system for images that:","source":"@site/docs/durable-cr/trustmark-intro.md","sourceDirName":"durable-cr","slug":"/durable-cr/trustmark-intro","permalink":"/docs/durable-cr/trustmark-intro","draft":false,"unlisted":false,"editUrl":"https://github.com/contentauth/opensource.contentauth.org/edit/main/docs/durable-cr/trustmark-intro.md","tags":[],"version":"current","frontMatter":{"id":"trustmark-intro","title":"TrustMark watermarking"},"sidebar":"docs","previous":{"title":"Watermarking and fingerprinting","permalink":"/docs/durable-cr/sb-algs"},"next":{"title":"Overview","permalink":"/docs/sdk-repos/trustmark/"}}');var i=r(4848),s=r(8453);const a={id:"trustmark-intro",title:"TrustMark watermarking"},o=void 0,l={},c=[{value:"Variants",id:"variants",level:2},{value:"About PSNR",id:"about-psnr",level:2}];function d(e){const t={a:"a",admonition:"admonition",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"TrustMark is an open-source universal watermarking system for images that:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Can encode, decode, and remove watermarks from images."}),"\n",(0,i.jsx)(t.li,{children:"Works with arbitrary resolution images."}),"\n",(0,i.jsxs)(t.li,{children:["Has implementations in Python (using PyTorch), ",(0,i.jsx)(t.a,{href:"/docs/sdk-repos/trustmark/rust/",children:"Rust"}),", and ",(0,i.jsx)(t.a,{href:"/docs/sdk-repos/trustmark/js/",children:"JavaScript"})," (both using ONNX)."]}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{type:"info",children:(0,i.jsxs)(t.p,{children:["For full technical details and help getting started with TrustMark, see ",(0,i.jsx)(t.a,{href:"/docs/sdk-repos/trustmark/",children:"TrustMark - Overview"}),"."]})}),"\n",(0,i.jsx)(t.h2,{id:"variants",children:"Variants"}),"\n",(0,i.jsx)(t.p,{children:"TrustMark has three primary model variants, each with different characteristics."}),"\n",(0,i.jsx)(t.p,{children:"Images encoded with one variant cannot be decoded with another variant, so you need to stick with the same variant throughout your pipeline."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Variant Q (Default)"})," Use in most cases, where you want a good balance between robustness and imperceptibility.  PSNR is 43-45 dB."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Variant P"})," - Use when image quality is the top priority. PSNR is 48-50 dB."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Variant C (Compact)"})," - Use if you need to minimize model size and can live with slightly lower visual quality. PSNR is 38-39 dB."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"The general recommendation is to use either:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Variant Q for most use cases."}),"\n",(0,i.jsx)(t.li,{children:"Variant P when visual quality is paramount."}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"about-psnr",children:"About PSNR"}),"\n",(0,i.jsx)(t.p,{children:"PSNR (Peak Signal-to-Noise Ratio) is a measure of image quality when comparing an original image to the watermarked image. PSNR is measured in decibels (dB), with higher values indicating better quality:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Values around 45+ dB typically indicate very good quality."}),"\n",(0,i.jsx)(t.li,{children:"Values around 40 dB indicate acceptable quality."}),"\n",(0,i.jsx)(t.li,{children:"Values below 30 dB indicate poor quality, unacceptable for most uses."}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.