Skip to content

RohanFredriksson/agglomerative-clustering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agglomerative Clustering

A high-performance implementation of hierarchical agglomerative clustering (HAC), optimized for speed and scalability. This package uses WebAssembly (WASM) to accelerate computation, making it suitable for large datasets and real-time clustering tasks in the browser or Node.js environments.

It includes an interface for performing image clustering, palette extraction, and color quantization directly on raw image data, making it a powerful tool for graphics processing, image analysis, and visual data simplification.

Features

  • ✅ Extract clustering information from image data
  • 🎨 Generate color palettes from raw images or clustering
  • ✂️ Quantize images using clustering or palette data
  • 🕹️ Async interface with lazy WASM initialization
  • 💾 Works directly with raw Uint8Array image buffers (rgb or rgba)

Installation

npm install agglomerative-clustering

Usage

import { quantize } from 'agglomerative-clustering';
import sharp from 'sharp';

async function loadImage(path) {
    const image = sharp(path);
    const { data, info } = await image.raw().ensureAlpha().toBuffer({ resolveWithObject: true });
    return { width: info.width, height: info.height, data: data }
}

async function saveImage(path, width, height, data) {
    await sharp(data, {
        raw: {
            width: width,
            height: height,
            channels: 4,
        }
    }).toFile(path);
}

(async () => {

    // Number of clusters
    const k = 8;

    // Load the image
    const { width, height, data } = await loadImage('example.png');
    const array = new Uint8Array(data.length);
    array.set(data);

    // Perform the image quantization
    const processed = await quantize(array, k);
    const buffer = Buffer.from(processed);
    
    // Save the result
    await saveImage('example_quantized.png', width, height, buffer);

})();
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy