New Free Add-on

Image Similarity Suite

A professional desktop tool for visual side-by-side comparison of two images with real-time analysis — quantitative metrics and visual insight, all running locally on your machine.

Image Similarity Suite — side-by-side comparison with histograms

Features

Side-by-Side Comparison

Left / Right image panels with synchronized zoom and pan at full resolution.

Swap Compare Mode

Full-canvas toggle between images for quick visual comparison of subtle differences.

Difference Visualization

Per-pixel diff with selectable channels (RGB, R, G, B, Luminance) and adjustable amplification up to 32×.

4-Channel Histograms

Real-time Red, Green, Blue, and Lightness histograms with difference highlighting.

Perceptual Hash (pHash)

64-bit DCT-based hash with Hamming distance and 8×8 bit grid visualization.

SSIM Analysis

Structural Similarity Index decomposed into Luminance, Contrast, and Structural components.

MSE Metrics

Mean Squared Error computed at original image resolution for maximum accuracy.

Crosshair Inspector

Pixel-level color readout with RGB values and per-channel histogram cursor lines.

Export Options

Self-contained HTML reports, difference images as PNG, and application screenshots.

Dark / Light / System Themes

Full theme support with native dark mode via .NET 10 Application.SetColorMode().

Auto-Upscale Display

Smaller image is visually upscaled to match the larger one for comparison (display only).

Drag & Drop

Load images by dragging files onto Left/Right panels. Built-in template images for testing.

Pricing

Free

Free Tier

All features available with image resolution limited to 1.92 MP (1600 × 1200 px).

  • Side-by-side comparison
  • SSIM, MSE, pHash metrics
  • Histograms & Diff visualization
  • Export & Swap mode
Pro

Pro — One-Time Purchase

No resolution limit — unlock full-resolution comparison with a single in-app purchase.

  • Everything in Free
  • Unlimited image resolution
  • One-time durable purchase

Supported Formats

JPG JPEG PNG BMP GIF TIFF WebP ICO

Keyboard Shortcuts

FToggle Fit / Actual Size (1:1)
DShow / hide Diff panel
HShow / hide Histogram
CShow / hide Crosshair cursors
SToggle Swap Mode
ASwitch Left / Right image (in Swap Mode)

Implementation of Techniques

1. Perceptual Hash (pHash)

Quick determination of visual similarity between two images based on frequency content. The result is a 64-bit hash; similar images have similar hashes.

Algorithm

  1. Downscale to 32×32 px — high-quality bicubic interpolation with anti-aliasing pre-filter. Reduces details while preserving overall structure.
  2. Convert to grayscale — luminance using BT.601:
    Y = 0.299 × R + 0.587 × G + 0.114 × B
  3. 2D Discrete Cosine Transform (DCT) — separable computation (rows first, then columns):
    DCT[v,u] = k · C(u) · C(v) · Σx Σy f(y,x) · cos((2x+1)·u·π / 2N) · cos((2y+1)·v·π / 2N)
    where k = √(2/N), C(0) = 1/√2, C(n>0) = 1, N = 32. DCT transforms spatial pixel values into the frequency domain. Low frequencies (top-left corner) represent the overall structure.
  4. Extract 8×8 block — from the top-left corner of the DCT matrix (coefficients [0..7, 0..7]). The DC component [0,0] is zeroed because it represents only average brightness.
  5. Mean thresholding — average of 64 coefficients is computed. Each coefficient > average → bit 1, otherwise → bit 0. Result: ulong (64 bits).

Hamming Distance

ulong x = a ^ b;         // XOR — ones where hashes differ
int count = 0;
while (x != 0) { count += (int)(x & 1); x >>= 1; }  // popcount

Similarity percentage: (64 − distance) × 100 / 64

0–10 bits: very similar 11–20 bits: moderate >20 bits: significantly different

Visualization: Two 8×8 grids — Left (orange) and Right (violet).

2. SSIM (Structural Similarity Index)

Measures structural similarity in a way that better correlates with human perception than MSE. Value 1.0 = identical, 0.0 = completely different.

Algorithm

  1. Resample to 512×512 px — both images are downscaled to the same size. HighQualityBicubic interpolation with anti-aliasing pre-filter.
  2. Convert to grayscale signal — BT.601 luminance:
    Y = 0.299 × R + 0.587 × G + 0.114 × B
    Output: double[262144] array (512 × 512 pixels).
  3. Statistics — single-pass computation over the entire image (N = 262,144):
    • Means: μA = (1/N) Σ pA[i], μB = (1/N) Σ pB[i]
    • Variances: σ²A = (1/N) Σ (pA[i] − μA)²
    • Covariance: cov = (1/N) Σ (pA[i] − μA)(pB[i] − μB)
  4. SSIM formula — decomposed into three independent components:

    Constants: L = 255, K1 = 0.01, K2 = 0.03 (Wang et al. 2004)

    C1 = (K1·L)² = 6.5025, C2 = (K2·L)² = 58.5225, C3 = C2/2 = 29.26125

    Luminance:  l(A,B) = (2·μA·μB + C1) / (μA² + μB² + C1)
    Contrast:   c(A,B) = (2·σA·σB + C2) / (σ²A + σ²B + C2)
    Structural: s(A,B) = (cov + C3) / (σA·σB + C3)
    
    SSIM = l(A,B) × c(A,B) × s(A,B)

Note: This implementation computes global SSIM over the entire image (faster than the Wang et al. sliding-window approach, but less accurate for local artifacts).

≥ 0.95: very similar 0.80–0.95 0.60–0.80 < 0.60: significantly different

3. MSE (Mean Squared Error)

Average squared difference between pixels of two images. A simple, widely used metric. MSE = 0 means identical images.

Algorithm

MSE is computed at the original image resolution (not downsampled like SSIM):

  1. If images have the same dimensions, they are compared directly. If dimensions differ, both are resampled to max(widthA, widthB) × max(heightA, heightB).
  2. Pixel data extracted via LockBits + Marshal.Copy in Format32bppArgb.
  3. For each pixel, BT.601 luminance is computed:
    MSE = (1/N) Σ (YA[i] − YB[i])²
< 50: nearly identical 50–500 500–2000 > 2000

Visualization: progress bar displays 1 − MSE/5000 (inverted, capped at 5000).

4. Histograms

Distribution of pixel values in individual channels for quick visual analysis of exposure, contrast, and color balance.

Computation

Pixel data is extracted via LockBits with Format32bppArgb. Four channels are computed (int[4][256]):

  • Redhistogram[0][r]++
  • Greenhistogram[1][g]++
  • Bluehistogram[2][b]++
  • Lightnesshistogram[3][Y]++ where Y = 0.299R + 0.587G + 0.114B

Memory layout (BGRA): pixels[i]=B, pixels[i+1]=G, pixels[i+2]=R, pixels[i+3]=A (alpha ignored).

Visualization

4 charts side by side (R, G, B, Lightness) in a resizable panel. Rendering layers (back to front):

  1. Right fill (semi-transparent)
  2. Left fill (semi-transparent, overlaps Right)
  3. Difference highlight (yellow area between curves)
  4. Right line, then Left line (on top)

Cursor lines appear on histograms at the position corresponding to the channel value of the current pixel (orange for Left, violet for Right).

5. Difference Image (Diff)

Per-pixel difference visualization. Black = no difference, bright colors = large differences.

Channel Modes

  • delta RGB (default) — diff = |A − B| × amp for each channel separately
  • delta Red — red channel only, others zero
  • delta Green — green channel only
  • delta Blue — blue channel only
  • delta Y (Luminance) — diff = |YA − YB| × amp, grayscale output

Amplification

×1, ×2, ×4 (default), ×8, ×16, ×32. Higher amplification reveals subtle differences but saturates large ones.

Result: min(255, |channelA − channelB| × amp) — clamped to 0–255.

6. Swap Compare Mode

Quick visual comparison by toggling full-canvas view between two images. Useful for detecting subtle differences between nearly identical images.

SToggle Swap Mode on/off
A or Left clickSwitch between Left and Right image

7. Export Options

HTML Report

Self-contained HTML file with embedded images (base64), histograms, and all metrics. Two variants:

  • Original — full resolution, PNG format
  • Compact — images downscaled to max 800px, JPEG quality 85

Report includes: images (Left, Right, Diff), 4 histograms, SSIM table with components, MSE, pHash distance + similarity, and 8×8 bit grid visualization.

Difference Image Export

Saves the current difference bitmap as a PNG file.

Screenshot Export

Captures the entire application window as a 24-bit RGB PNG.

System Requirements

PlatformWindows
Minimum OSWindows 10 version 17763.0 or higher
Framework.NET 10.0
Architecturex64