neuquant.d.ts
2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/**
* @preserve TypeScript port:
* Copyright 2015-2016 Igor Bezkrovnyi
* All rights reserved. (MIT Licensed)
*
* neuquant.ts - part of Image Quantization Library
*/
import { Palette } from "../../utils/palette";
import { PointContainer } from "../../utils/pointContainer";
import { AbstractDistanceCalculator } from "../../distance/abstractDistanceCalculator";
import { IPaletteQuantizer } from "../common";
export declare class NeuQuant implements IPaletteQuantizer {
private static readonly _prime1;
private static readonly _prime2;
private static readonly _prime3;
private static readonly _prime4;
private static readonly _minpicturebytes;
private static readonly _nCycles;
private static readonly _initialBiasShift;
private static readonly _initialBias;
private static readonly _gammaShift;
private static readonly _betaShift;
private static readonly _beta;
private static readonly _betaGamma;
private static readonly _radiusBiasShift;
private static readonly _radiusBias;
private static readonly _radiusDecrease;
private static readonly _alphaBiasShift;
private static readonly _initAlpha;
private static readonly _radBiasShift;
private static readonly _radBias;
private static readonly _alphaRadBiasShift;
private static readonly _alphaRadBias;
private _pointArray;
private readonly _networkSize;
private _network;
/** sampling factor 1..30 */
private readonly _sampleFactor;
private _radPower;
private _freq;
private _bias;
private readonly _distance;
constructor(colorDistanceCalculator: AbstractDistanceCalculator, colors?: number);
sample(pointBuffer: PointContainer): void;
quantize(): Palette;
private _init();
/**
* Main Learning Loop
*/
private _learn();
private _buildPalette();
/**
* Move adjacent neurons by precomputed alpha*(1-((i-j)^2/[r]^2)) in radpower[|i-j|]
*/
private _alterNeighbour(rad, i, b, g, r, al);
/**
* Move neuron i towards biased (b,g,r) by factor alpha
*/
private _alterSingle(alpha, i, b, g, r, a);
/**
* Search for biased BGR values
* description:
* finds closest neuron (min dist) and updates freq
* finds best neuron (min dist-bias) and returns position
* for frequently chosen neurons, freq[i] is high and bias[i] is negative
* bias[i] = _gamma*((1/this._networkSize)-freq[i])
*
* Original distance equation:
* dist = abs(dR) + abs(dG) + abs(dB)
*/
private _contest(b, g, r, a);
}