{"adoption": {"forks": 397, "observed_at": "2026-08-28T04:04:10.369309+00:00", "stars": 1263}, "canonical_url": "https://ross.abutalabs.com/products/automatic-watermark-detection", "card": {"archived": false, "artifact_type": "library", "description": "Project for Digital Image Processing", "domain": ["computer-vision", "image-processing"], "enriched": true, "function": ["image-processing", "computer-vision"], "health_score": 20, "homepage": null, "language": "Jupyter Notebook", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["rohitrango/automatic-watermark-detection"], "name": "rohitrango/automatic-watermark-detection", "platform": ["python", "cross-platform"], "pushed_at": "2022-05-22T16:03:19+00:00", "repo": "rohitrango/automatic-watermark-detection", "stars": 1263, "tags": ["watermark-removal", "watermark-detection", "poisson-reconstruction", "image-matting", "research-project", "jupyter-notebook"], "topics": ["image-processing", "python", "watermark-detection", "watermark", "image-matting", "poisson-reconstruction", "irls", "numpy", "scipy-stack"], "urls": [], "use_cases": ["remove visible watermarks from a batch of images", "detect watermark location in images", "estimate watermark alpha matte", "reproduce the CVPR 2017 watermark removal paper", "clean watermarked stock photo datasets"], "what_it_is": "A Python implementation of the CVPR 2017 paper 'On The Effectiveness Of Visible Watermarks' that detects and removes visible watermarks from collections of images. It estimates the watermark and its alpha matte by exploiting consistency across multiple watermarked images, then reconstructs clean images via Poisson reconstruction.", "when_to_avoid": ["you need to remove a watermark from a single image (the algorithm needs multiple images)", "you want a production-supported tool with a license and active maintenance", "you need robustness against novel or semi-transparent watermark types"], "when_to_choose": ["you have many images sharing the same watermark", "you want a research-grade Python implementation of the Dekel et al. CVPR 2017 algorithm", "you need watermark detection plus image reconstruction in numpy/scipy"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/automatic-watermark-detection", "repo": "rohitrango/automatic-watermark-detection", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.369309+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:04:10.043947+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8de53b97152cd5468d6c055fedd02f979485c7645c810d0728bf55b74cdc8b40", "fetched_at": "2026-08-28T04:04:10.369309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rohitrango/automatic-watermark-detection"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3270, "days_push": 1564, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}