# tsukiyukiazusaqaq/anti-blindwatermark architecture

> Architecture diagram of the GitHub repository tsukiyukiazusaqaq/anti-blindwatermark, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tsukiyukiazusaqaq/anti-blindwatermark
- Repository: https://github.com/tsukiyukiazusaqaq/anti-blindwatermark

## Overview

Anti-BlindWatermark is a command-line image-processing tool that modifies image data to disrupt watermark extraction, with pixel, frequency-domain, and low-contrast spatial modes. The main workflow selects a mode, reads an image into a shared NumPy representation, dispatches that image to the chosen transform, and writes the result. PNG uses the built-in codec, while JPEG uses OpenCV. The README documents all three modes; sampled source confirms their dispatch and implementation. The frequency transform’s OpenCV/PyWavelets internals are shown at a useful algorithmic level.

Main entry points: [`main.py`](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/main.py) (Mode and CLI), [`blind_watermark_destroy.py`](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py) (Frequency disruption), [`image_io.py`](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/image_io.py) (Format dispatcher), [`low_contrast_spatial_destroy.py`](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/low_contrast_spatial_destroy.py) (Low-contrast cleanup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI orchestration"]
  node_cli["Mode and CLI<br/>[main.py]"]
  node_progress["Progress display<br/>[progress.py]"]
end

subgraph group_io["Image I/O"]
  node_image_io["Format dispatcher<br/>[image_io.py]"]
  node_png["PNG codec<br/>[png_io.py]"]
  node_jpeg["OpenCV JPEG<br/>[image_io.py]"]
end

subgraph group_modes["Disruption modes"]
  node_pixel["Pixel perturbation<br/>[pixel_destroy.py]"]
  node_spatial["Low-contrast cleanup"]
  node_frequency_transform["Frequency disruption"]
end

subgraph group_frequency["Frequency internals"]
  node_domain["Color conversion"]
  node_wavelet["Haar DWT"]
  node_blocks["Block attacks"]
  node_svd["SVD targeting"]
end

node_user(("Image user"))
node_opencv["OpenCV"]
node_pywavelets["PyWavelets"]

node_user -->|"chooses mode"| node_cli
node_cli -->|"reads image"| node_image_io
node_image_io -->|"PNG read/write"| node_png
node_image_io -->|"JPEG read/write"| node_jpeg
node_cli -->|"dispatches pixels"| node_pixel
node_cli -->|"dispatches spatial"| node_spatial
node_cli -->|"dispatches frequency"| node_frequency_transform
node_pixel -->|"returns image"| node_cli
node_spatial -->|"median and morphology"| node_opencv
node_spatial -->|"returns image"| node_cli
node_frequency_transform -->|"converts color"| node_domain
node_frequency_transform -->|"transforms channels"| node_wavelet
node_frequency_transform -->|"attacks low-frequency blocks"| node_blocks
node_blocks -->|"targets singular values"| node_svd
node_frequency_transform -->|"DCT and alignment"| node_opencv
node_frequency_transform -->|"DWT and inverse"| node_pywavelets
node_frequency_transform -->|"returns image"| node_cli
node_cli -->|"writes result"| node_image_io
node_cli -->|"updates status"| node_progress
node_user -->|"receives output"| node_cli

click node_cli "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/main.py"
click node_progress "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/progress.py"
click node_image_io "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/image_io.py"
click node_png "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/png_io.py"
click node_jpeg "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/image_io.py"
click node_pixel "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/pixel_destroy.py"
click node_spatial "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/low_contrast_spatial_destroy.py"
click node_frequency_transform "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py"
click node_domain "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py"
click node_wavelet "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py"
click node_blocks "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py"
click node_svd "https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_progress,node_user toneBlue
class node_image_io,node_png,node_jpeg toneAmber
class node_pixel,node_spatial,node_frequency_transform toneMint
class node_domain,node_wavelet,node_blocks,node_svd toneRose
class node_opencv,node_pywavelets toneIndigo
```

## Components

### CLI orchestration

- [Mode and CLI](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/main.py): `main.py`
- [Progress display](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/progress.py): `progress.py`

### Image I/O

- [Format dispatcher](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/image_io.py): `image_io.py`
- [PNG codec](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/png_io.py): `png_io.py`
- [OpenCV JPEG](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/image_io.py): `image_io.py`

### Disruption modes

- [Pixel perturbation](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/pixel_destroy.py): `pixel_destroy.py`
- [Low-contrast cleanup](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/low_contrast_spatial_destroy.py): `low_contrast_spatial_destroy.py`
- [Frequency disruption](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py): `blind_watermark_destroy.py`

### Frequency internals

- [Color conversion](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py): `blind_watermark_destroy.py`
- [Haar DWT](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py): `blind_watermark_destroy.py`
- [Block attacks](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py): `blind_watermark_destroy.py`
- [SVD targeting](https://github.com/tsukiyukiazusaqaq/anti-blindwatermark/blob/main/blind_watermark_destroy.py): `blind_watermark_destroy.py`

### Other components

- **Image user**
- **OpenCV**
- **PyWavelets**

## Connections

- Image user → Mode and CLI: chooses mode
- Mode and CLI → Format dispatcher: reads image
- Format dispatcher → PNG codec: PNG read/write
- Format dispatcher → OpenCV JPEG: JPEG read/write
- Mode and CLI → Pixel perturbation: dispatches pixels
- Mode and CLI → Low-contrast cleanup: dispatches spatial
- Mode and CLI → Frequency disruption: dispatches frequency
- Pixel perturbation → Mode and CLI: returns image
- Low-contrast cleanup → OpenCV: median and morphology
- Low-contrast cleanup → Mode and CLI: returns image
- Frequency disruption → Color conversion: converts color
- Frequency disruption → Haar DWT: transforms channels
- Frequency disruption → Block attacks: attacks low-frequency blocks
- Block attacks → SVD targeting: targets singular values
- Frequency disruption → OpenCV: DCT and alignment
- Frequency disruption → PyWavelets: DWT and inverse
- Frequency disruption → Mode and CLI: returns image
- Mode and CLI → Format dispatcher: writes result
- Mode and CLI → Progress display: updates status
- Image user → Mode and CLI: receives output
