@webex/ladon-ts 4.2.4 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/build/module/index.d.ts +1 -0
- package/build/module/index.js +2 -1
- package/build/module/lib/config.d.ts +54 -18
- package/build/module/lib/config.js +58 -32
- package/build/module/lib/generator.d.ts +19 -10
- package/build/module/lib/generator.js +107 -79
- package/build/module/lib/pipeline.d.ts +38 -6
- package/build/module/lib/pipeline.js +68 -22
- package/build/module/lib/renderer/blur-renderer.d.ts +2 -2
- package/build/module/lib/renderer/blur-renderer.js +24 -34
- package/build/module/lib/renderer/ladon-renderer.d.ts +2 -2
- package/build/module/lib/renderer/passthrough-renderer.d.ts +2 -2
- package/build/module/lib/renderer/passthrough-renderer.js +1 -1
- package/build/module/lib/renderer/replacement-renderer.d.ts +2 -2
- package/build/module/lib/renderer/replacement-renderer.js +20 -14
- package/build/module/lib/renderer/webgl-renderer.js +8 -6
- package/build/module/lib/shared-resource-manager.d.ts +84 -0
- package/build/module/lib/shared-resource-manager.js +189 -0
- package/build/module/lib/util.d.ts +32 -10
- package/build/module/lib/util.js +139 -61
- package/build/module/lib/version.d.ts +1 -1
- package/build/module/lib/version.js +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import * as ort from 'onnxruntime-web';
|
|
11
|
+
import { toAbsoluteURI } from './util';
|
|
12
|
+
/**
|
|
13
|
+
* Shared resource manager used to preload and share resources across different pipelines.
|
|
14
|
+
* This is useful when multiple pipelines are using the same model or when the model needs
|
|
15
|
+
* to be preloaded before the pipeline is created.
|
|
16
|
+
*/
|
|
17
|
+
class SharedResourceManager {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.modelSessions = {};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Initialize the worker using the provided configuration.
|
|
23
|
+
*
|
|
24
|
+
* @param {PreloadConfig} config The configuration object.
|
|
25
|
+
* @returns {Promise<Worker>} A promise that resolves when the worker is initialized.
|
|
26
|
+
* @example
|
|
27
|
+
* await initializeWorker(config);
|
|
28
|
+
*/
|
|
29
|
+
initializeWorker(config) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
if (typeof Worker === 'undefined') {
|
|
32
|
+
throw new Error('[ladon-ts] web workers are not supported in this environment');
|
|
33
|
+
}
|
|
34
|
+
const crossOriginScriptUrl = config.mask.worker_uri;
|
|
35
|
+
const content = yield (yield fetch(crossOriginScriptUrl, { cache: 'force-cache' })).text();
|
|
36
|
+
this.workerUrl = URL.createObjectURL(new Blob([content], { type: 'text/javascript' }));
|
|
37
|
+
this.worker = new Worker(this.workerUrl, { type: 'module' });
|
|
38
|
+
return this.worker;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Terminate the worker.
|
|
43
|
+
*/
|
|
44
|
+
terminateWorker() {
|
|
45
|
+
if (this.worker) {
|
|
46
|
+
this.worker.terminate();
|
|
47
|
+
this.worker = undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Preload the model using the provided configuration.
|
|
52
|
+
*
|
|
53
|
+
* @param {PreloadConfig} config The configuration object.
|
|
54
|
+
* @returns {Promise<void>} A promise that resolves when the model is preloaded.
|
|
55
|
+
* @example
|
|
56
|
+
* await preloadModel(config);
|
|
57
|
+
*/
|
|
58
|
+
preloadModel(config) {
|
|
59
|
+
var _a;
|
|
60
|
+
var _b;
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
if (config.wasm_uri) {
|
|
63
|
+
ort.env.wasm.wasmPaths = toAbsoluteURI(config.wasm_uri, config.base_url);
|
|
64
|
+
}
|
|
65
|
+
ort.env.wasm.numThreads = 1;
|
|
66
|
+
// Resolve the model URL based on the configuration.
|
|
67
|
+
const modelUrl = yield this.getModelUrl(config);
|
|
68
|
+
// Use the model session cache to avoid creating multiple sessions for the same model.
|
|
69
|
+
(_a = (_b = this.modelSessions)[modelUrl]) !== null && _a !== void 0 ? _a : (_b[modelUrl] = yield ort.InferenceSession.create(modelUrl, {
|
|
70
|
+
executionProviders: ['wasm'],
|
|
71
|
+
}));
|
|
72
|
+
// Warmup the model with a dummy input to avoid latency when running the model for the first time.
|
|
73
|
+
yield this.warmupModel(this.modelSessions[modelUrl], config.mask.input_size, config.mask.model_rank);
|
|
74
|
+
return this.modelSessions[modelUrl];
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Preload the worker using the provided configuration.
|
|
79
|
+
*
|
|
80
|
+
* @param {PreloadConfig} config The configuration object.
|
|
81
|
+
* @returns {Promise<void>} A promise that resolves when the worker is preloaded.
|
|
82
|
+
* @example
|
|
83
|
+
* await preloadWorker(config);
|
|
84
|
+
*/
|
|
85
|
+
preloadWorker(config) {
|
|
86
|
+
var _a;
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
// If the model URL resolver is a function, We can't send the function to the worker so
|
|
89
|
+
// we resolve the model URL here and send the resolved URL to the worker.
|
|
90
|
+
const modelUrl = yield this.getModelUrl(config);
|
|
91
|
+
const newConfig = Object.assign(Object.assign({}, config), { mask: Object.assign(Object.assign({}, config.mask), { model_url_resolver: modelUrl }) });
|
|
92
|
+
// Initialize the worker.
|
|
93
|
+
yield this.initializeWorker(newConfig);
|
|
94
|
+
// Send the preload message to the worker.
|
|
95
|
+
(_a = this.worker) === null || _a === void 0 ? void 0 : _a.postMessage({ type: 'preload', config: newConfig });
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Warmup the model session with a dummy input to avoid latency when running the model for the first time.
|
|
100
|
+
*
|
|
101
|
+
* @param {ort.InferenceSession} session The model session.
|
|
102
|
+
* @param {SizeConfig} inputSize The input size of the model.
|
|
103
|
+
* @param {number} inputChannels The number of input channels (e.g., RGB is 3).
|
|
104
|
+
* @param {ort.Tensor.Type} inputType The input tensor type.
|
|
105
|
+
* @returns {Promise<void>} A promise that resolves when the model is warmed up.
|
|
106
|
+
* @example
|
|
107
|
+
* await warmupModel(session, inputSize, inputChannels, inputType);
|
|
108
|
+
*/
|
|
109
|
+
warmupModel(session, inputSize = { width: 1280, height: 720 }, inputChannels = 3, inputType = 'float32') {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const numPixels = inputSize.height * inputSize.width;
|
|
112
|
+
const dummyInputData = new Float32Array(inputChannels * numPixels).fill(0);
|
|
113
|
+
const dummyInput = new ort.Tensor(inputType, dummyInputData, [
|
|
114
|
+
1,
|
|
115
|
+
inputChannels,
|
|
116
|
+
inputSize.height,
|
|
117
|
+
inputSize.width,
|
|
118
|
+
]);
|
|
119
|
+
const feed = { [session.inputNames[0]]: dummyInput };
|
|
120
|
+
// Use an additional dummy tensor if the model expects a previous mask.
|
|
121
|
+
if (inputChannels === 3) {
|
|
122
|
+
const dummyMaskData = new Float32Array(numPixels).fill(0);
|
|
123
|
+
const prevMaskTensor = new ort.Tensor(inputType, dummyMaskData, [
|
|
124
|
+
1,
|
|
125
|
+
1,
|
|
126
|
+
inputSize.height,
|
|
127
|
+
inputSize.width,
|
|
128
|
+
]);
|
|
129
|
+
feed[session.inputNames[1]] = prevMaskTensor;
|
|
130
|
+
}
|
|
131
|
+
// Run the model with the dummy input to warm it up.
|
|
132
|
+
yield session.run(feed);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get the model session for the provided model URL.
|
|
137
|
+
*
|
|
138
|
+
* @param {string} modelUrl The model URL.
|
|
139
|
+
* @returns {ort.InferenceSession} The model session.
|
|
140
|
+
* @example
|
|
141
|
+
* const session = getModelSession(modelUrl);
|
|
142
|
+
*/
|
|
143
|
+
getModelSession(modelUrl) {
|
|
144
|
+
return this.modelSessions[modelUrl];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolves the model URL based on the configuration.
|
|
148
|
+
*
|
|
149
|
+
* @param {PipelineConfig} config The configuration object.
|
|
150
|
+
* @returns {Promise<string>} The resolved model URL.
|
|
151
|
+
* @example
|
|
152
|
+
* const modelUrl = await getModelUrl(config);
|
|
153
|
+
*/
|
|
154
|
+
getModelUrl({ mask: { model_url_resolver, model_uri } }) {
|
|
155
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
let modelUrl;
|
|
157
|
+
if (typeof model_url_resolver === 'string') {
|
|
158
|
+
modelUrl = model_url_resolver;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
modelUrl = yield model_url_resolver(model_uri);
|
|
162
|
+
}
|
|
163
|
+
return modelUrl;
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
getWorker() {
|
|
167
|
+
return this.worker;
|
|
168
|
+
}
|
|
169
|
+
getWorkerUrl() {
|
|
170
|
+
return this.workerUrl;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Global instance of the shared resource manager.
|
|
174
|
+
export const sharedResourceManager = new SharedResourceManager();
|
|
175
|
+
/**
|
|
176
|
+
* Preload the resources using the provided configuration. This function is used to preload the model
|
|
177
|
+
* and the worker before creating the pipeline.
|
|
178
|
+
*
|
|
179
|
+
* @param config - The configuration object.
|
|
180
|
+
*/
|
|
181
|
+
export const preload = (config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
182
|
+
if (config.mask.generator === 'worker') {
|
|
183
|
+
yield sharedResourceManager.preloadWorker(config);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
yield sharedResourceManager.preloadModel(config);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLXJlc291cmNlLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NoYXJlZC1yZXNvdXJjZS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0saUJBQWlCLENBQUM7QUFHdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV2Qzs7OztHQUlHO0FBQ0gsTUFBTSxxQkFBcUI7SUFBM0I7UUFDWSxrQkFBYSxHQUF5QyxFQUFFLENBQUM7SUE0S3JFLENBQUM7SUF4S0c7Ozs7Ozs7T0FPRztJQUNHLGdCQUFnQixDQUFDLE1BQXFCOztZQUN4QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtnQkFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO2FBQ25GO1lBRUQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNwRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTNGLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBRTdELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDWCxJQUFJLElB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
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare function linkProgram(gl: WebGL2RenderingContext, vertex_shader: WebGLShader, fragment_shader: WebGLShader): WebGLProgram;
|
|
1
|
+
export declare enum InterpolationMethod {
|
|
2
|
+
Nearest = "nearest"
|
|
3
|
+
}
|
|
5
4
|
/**
|
|
6
5
|
* Resizes an image from the source dimensions to target dimensions.
|
|
7
6
|
*
|
|
@@ -21,11 +20,34 @@ export declare function linkProgram(gl: WebGL2RenderingContext, vertex_shader: W
|
|
|
21
20
|
*/
|
|
22
21
|
export declare const resizeImage: (imageData: Uint8ClampedArray, srcWidth: number, srcHeight: number, targetWidth: number, targetHeight: number) => Uint8ClampedArray;
|
|
23
22
|
/**
|
|
24
|
-
*
|
|
23
|
+
* Upsamples an image using the bilinear interpolation method. The input image is expected to be in
|
|
24
|
+
* Float32Array format. The output image is in Uint8ClampedArray format. The input image is expected
|
|
25
|
+
* to be in the [0, 1] range. The output image is in the [0, 255] range.
|
|
26
|
+
*
|
|
27
|
+
* @param {Float32Array} input The input image data in Float32Array format.
|
|
28
|
+
* @param {number} srcWidth The width of the source image.
|
|
29
|
+
* @param {number} srcHeight The height of the source image.
|
|
30
|
+
* @param {number} targetWidth The width of the target image.
|
|
31
|
+
* @param {number} targetHeight The height of the target image.
|
|
32
|
+
*
|
|
33
|
+
* @returns {Uint8ClampedArray} The upsampled image data in Uint8ClampedArray format.
|
|
25
34
|
*
|
|
26
|
-
* @param {PipelineConfig} config The configuration object.
|
|
27
|
-
* @returns {Promise<string>} The resolved model URL.
|
|
28
|
-
* @example
|
|
29
|
-
* const modelUrl = await getModelUrl(config);
|
|
30
35
|
*/
|
|
31
|
-
export declare
|
|
36
|
+
export declare function bilinearUpsample(input: Float32Array, srcWidth: number, srcHeight: number, targetWidth: number, targetHeight: number): Uint8ClampedArray;
|
|
37
|
+
/**
|
|
38
|
+
* Upsamples an image using the Lanczos3 interpolation method. The input image is expected to be in
|
|
39
|
+
* Float32Array format. The output image is in Uint8ClampedArray format. The input image is expected
|
|
40
|
+
* to be in the [0, 1] range. The output image is in the [0, 255] range.
|
|
41
|
+
*
|
|
42
|
+
* @param {Float32Array} input The input image data in Float32Array format.
|
|
43
|
+
* @param {number} srcWidth The width of the source image.
|
|
44
|
+
* @param {number} srcHeight The height of the source image.
|
|
45
|
+
* @param {number} targetWidth The width of the target image.
|
|
46
|
+
* @param {number} targetHeight The height of the target image.
|
|
47
|
+
*
|
|
48
|
+
* @returns {Uint8ClampedArray} The upsampled image data in Uint8ClampedArray format.
|
|
49
|
+
*/
|
|
50
|
+
export declare function lanczos3Upsample(input: Float32Array, srcWidth: number, srcHeight: number, targetWidth: number, targetHeight: number): Uint8ClampedArray;
|
|
51
|
+
export declare const toAbsoluteURI: (relativeURL: string, baseURL?: string) => string;
|
|
52
|
+
export declare function compileShader(gl: WebGL2RenderingContext, shader_type: number, source: string): WebGLShader;
|
|
53
|
+
export declare function linkProgram(gl: WebGL2RenderingContext, vertex_shader: WebGLShader, fragment_shader: WebGLShader): WebGLProgram;
|
package/build/module/lib/util.js
CHANGED
|
@@ -1,50 +1,7 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export const toAbsoluteURI = (relativeURL, baseURL) => {
|
|
11
|
-
// adapted from - https://github.com/axios/axios/blob/fe7d09bb08fa1c0e414956b7fc760c80459b0a43/lib/helpers/combineURLs.js
|
|
12
|
-
if (!baseURL || relativeURL.startsWith('http')) {
|
|
13
|
-
return new URL(relativeURL).href;
|
|
14
|
-
}
|
|
15
|
-
return relativeURL
|
|
16
|
-
? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
|
|
17
|
-
: baseURL;
|
|
18
|
-
};
|
|
19
|
-
export function compileShader(gl, shader_type, source) {
|
|
20
|
-
var _a;
|
|
21
|
-
const shader = gl.createShader(shader_type);
|
|
22
|
-
if (!shader) {
|
|
23
|
-
throw new Error('[ladon-ts] - error creating shader');
|
|
24
|
-
}
|
|
25
|
-
gl.shaderSource(shader, source);
|
|
26
|
-
gl.compileShader(shader);
|
|
27
|
-
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
28
|
-
const error = (_a = gl.getShaderInfoLog(shader)) !== null && _a !== void 0 ? _a : 'unknown error compiling shader.';
|
|
29
|
-
throw new Error('[ladon-ts] - ' + error);
|
|
30
|
-
}
|
|
31
|
-
return shader;
|
|
32
|
-
}
|
|
33
|
-
export function linkProgram(gl, vertex_shader, fragment_shader) {
|
|
34
|
-
var _a;
|
|
35
|
-
const program = gl.createProgram();
|
|
36
|
-
if (!program) {
|
|
37
|
-
throw new Error('[ladon-ts] - error creating GPU program');
|
|
38
|
-
}
|
|
39
|
-
gl.attachShader(program, vertex_shader);
|
|
40
|
-
gl.attachShader(program, fragment_shader);
|
|
41
|
-
gl.linkProgram(program);
|
|
42
|
-
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
43
|
-
const error = (_a = gl.getProgramInfoLog(program)) !== null && _a !== void 0 ? _a : 'unknown error linking program.';
|
|
44
|
-
throw new Error('[ladon-ts] - ' + error);
|
|
45
|
-
}
|
|
46
|
-
return program;
|
|
47
|
-
}
|
|
1
|
+
export var InterpolationMethod;
|
|
2
|
+
(function (InterpolationMethod) {
|
|
3
|
+
InterpolationMethod["Nearest"] = "nearest";
|
|
4
|
+
})(InterpolationMethod || (InterpolationMethod = {}));
|
|
48
5
|
/**
|
|
49
6
|
* Resizes an image from the source dimensions to target dimensions.
|
|
50
7
|
*
|
|
@@ -81,21 +38,142 @@ export const resizeImage = (imageData, srcWidth, srcHeight, targetWidth, targetH
|
|
|
81
38
|
return targetData;
|
|
82
39
|
};
|
|
83
40
|
/**
|
|
84
|
-
*
|
|
41
|
+
* Upsamples an image using the bilinear interpolation method. The input image is expected to be in
|
|
42
|
+
* Float32Array format. The output image is in Uint8ClampedArray format. The input image is expected
|
|
43
|
+
* to be in the [0, 1] range. The output image is in the [0, 255] range.
|
|
44
|
+
*
|
|
45
|
+
* @param {Float32Array} input The input image data in Float32Array format.
|
|
46
|
+
* @param {number} srcWidth The width of the source image.
|
|
47
|
+
* @param {number} srcHeight The height of the source image.
|
|
48
|
+
* @param {number} targetWidth The width of the target image.
|
|
49
|
+
* @param {number} targetHeight The height of the target image.
|
|
50
|
+
*
|
|
51
|
+
* @returns {Uint8ClampedArray} The upsampled image data in Uint8ClampedArray format.
|
|
85
52
|
*
|
|
86
|
-
* @param {PipelineConfig} config The configuration object.
|
|
87
|
-
* @returns {Promise<string>} The resolved model URL.
|
|
88
|
-
* @example
|
|
89
|
-
* const modelUrl = await getModelUrl(config);
|
|
90
53
|
*/
|
|
91
|
-
export
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
54
|
+
export function bilinearUpsample(input, srcWidth, srcHeight, targetWidth, targetHeight) {
|
|
55
|
+
const output = new Uint8ClampedArray(targetWidth * targetHeight);
|
|
56
|
+
// If the source and target dimensions are the same, just copy the input to the output.
|
|
57
|
+
// The output is expected to be in the [0, 255] range
|
|
58
|
+
if (srcWidth === targetWidth && srcHeight === targetHeight) {
|
|
59
|
+
for (let i = 0; i < input.length; i++) {
|
|
60
|
+
output[i] = Math.min(Math.max(input[i], 0), 255);
|
|
61
|
+
}
|
|
62
|
+
return output;
|
|
95
63
|
}
|
|
96
|
-
|
|
97
|
-
|
|
64
|
+
const xRatio = (srcWidth - 1) / (targetWidth - 1);
|
|
65
|
+
const yRatio = (srcHeight - 1) / (targetHeight - 1);
|
|
66
|
+
for (let i = 0; i < targetHeight; i++) {
|
|
67
|
+
for (let j = 0; j < targetWidth; j++) {
|
|
68
|
+
const x = xRatio * j;
|
|
69
|
+
const y = yRatio * i;
|
|
70
|
+
const xL = Math.floor(x);
|
|
71
|
+
const yL = Math.floor(y);
|
|
72
|
+
const xH = Math.min(Math.ceil(x), srcWidth - 1);
|
|
73
|
+
const yH = Math.min(Math.ceil(y), srcHeight - 1);
|
|
74
|
+
const xWeight = x - xL;
|
|
75
|
+
const yWeight = y - yL;
|
|
76
|
+
const a = input[yL * srcWidth + xL];
|
|
77
|
+
const b = input[yL * srcWidth + xH];
|
|
78
|
+
const c = input[yH * srcWidth + xL];
|
|
79
|
+
const d = input[yH * srcWidth + xH];
|
|
80
|
+
const value = a * (1 - xWeight) * (1 - yWeight) +
|
|
81
|
+
b * xWeight * (1 - yWeight) +
|
|
82
|
+
c * (1 - xWeight) * yWeight +
|
|
83
|
+
d * xWeight * yWeight;
|
|
84
|
+
output[i * targetWidth + j] = Math.min(Math.max(value, 0), 255);
|
|
85
|
+
}
|
|
98
86
|
}
|
|
99
|
-
return
|
|
100
|
-
}
|
|
101
|
-
|
|
87
|
+
return output;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Upsamples an image using the Lanczos3 interpolation method. The input image is expected to be in
|
|
91
|
+
* Float32Array format. The output image is in Uint8ClampedArray format. The input image is expected
|
|
92
|
+
* to be in the [0, 1] range. The output image is in the [0, 255] range.
|
|
93
|
+
*
|
|
94
|
+
* @param {Float32Array} input The input image data in Float32Array format.
|
|
95
|
+
* @param {number} srcWidth The width of the source image.
|
|
96
|
+
* @param {number} srcHeight The height of the source image.
|
|
97
|
+
* @param {number} targetWidth The width of the target image.
|
|
98
|
+
* @param {number} targetHeight The height of the target image.
|
|
99
|
+
*
|
|
100
|
+
* @returns {Uint8ClampedArray} The upsampled image data in Uint8ClampedArray format.
|
|
101
|
+
*/
|
|
102
|
+
export function lanczos3Upsample(input, srcWidth, srcHeight, targetWidth, targetHeight) {
|
|
103
|
+
const output = new Uint8ClampedArray(targetWidth * targetHeight);
|
|
104
|
+
const xRatio = srcWidth / targetWidth;
|
|
105
|
+
const yRatio = srcHeight / targetHeight;
|
|
106
|
+
const lanczos = (x, a) => {
|
|
107
|
+
if (x === 0)
|
|
108
|
+
return 1;
|
|
109
|
+
if (x < 0)
|
|
110
|
+
x = -x;
|
|
111
|
+
if (x < a) {
|
|
112
|
+
const piX = Math.PI * x;
|
|
113
|
+
return (a * Math.sin(piX) * Math.sin(piX / a)) / (piX * piX);
|
|
114
|
+
}
|
|
115
|
+
return 0;
|
|
116
|
+
};
|
|
117
|
+
const a = 3; // Lanczos parameter
|
|
118
|
+
for (let i = 0; i < targetHeight; i++) {
|
|
119
|
+
for (let j = 0; j < targetWidth; j++) {
|
|
120
|
+
const x = j * xRatio;
|
|
121
|
+
const y = i * yRatio;
|
|
122
|
+
const xL = Math.floor(x);
|
|
123
|
+
const yL = Math.floor(y);
|
|
124
|
+
let value = 0;
|
|
125
|
+
let weightSum = 0;
|
|
126
|
+
for (let ky = yL - a + 1; ky <= yL + a; ky++) {
|
|
127
|
+
for (let kx = xL - a + 1; kx <= xL + a; kx++) {
|
|
128
|
+
if (kx >= 0 && kx < srcWidth && ky >= 0 && ky < srcHeight) {
|
|
129
|
+
const pixel = input[ky * srcWidth + kx];
|
|
130
|
+
const weight = lanczos(x - kx, a) * lanczos(y - ky, a);
|
|
131
|
+
value += pixel * weight;
|
|
132
|
+
weightSum += weight;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
output[i * targetWidth + j] = weightSum !== 0 ? Math.round(value / weightSum) : 0;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return output;
|
|
140
|
+
}
|
|
141
|
+
export const toAbsoluteURI = (relativeURL, baseURL) => {
|
|
142
|
+
// adapted from - https://github.com/axios/axios/blob/fe7d09bb08fa1c0e414956b7fc760c80459b0a43/lib/helpers/combineURLs.js
|
|
143
|
+
if (!baseURL || relativeURL.startsWith('http')) {
|
|
144
|
+
return new URL(relativeURL).href;
|
|
145
|
+
}
|
|
146
|
+
return relativeURL
|
|
147
|
+
? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
|
|
148
|
+
: baseURL;
|
|
149
|
+
};
|
|
150
|
+
export function compileShader(gl, shader_type, source) {
|
|
151
|
+
var _a;
|
|
152
|
+
const shader = gl.createShader(shader_type);
|
|
153
|
+
if (!shader) {
|
|
154
|
+
throw new Error('[ladon-ts] - error creating shader');
|
|
155
|
+
}
|
|
156
|
+
gl.shaderSource(shader, source);
|
|
157
|
+
gl.compileShader(shader);
|
|
158
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
159
|
+
const error = (_a = gl.getShaderInfoLog(shader)) !== null && _a !== void 0 ? _a : 'unknown error compiling shader.';
|
|
160
|
+
throw new Error('[ladon-ts] - ' + error);
|
|
161
|
+
}
|
|
162
|
+
return shader;
|
|
163
|
+
}
|
|
164
|
+
export function linkProgram(gl, vertex_shader, fragment_shader) {
|
|
165
|
+
var _a;
|
|
166
|
+
const program = gl.createProgram();
|
|
167
|
+
if (!program) {
|
|
168
|
+
throw new Error('[ladon-ts] - error creating GPU program');
|
|
169
|
+
}
|
|
170
|
+
gl.attachShader(program, vertex_shader);
|
|
171
|
+
gl.attachShader(program, fragment_shader);
|
|
172
|
+
gl.linkProgram(program);
|
|
173
|
+
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
174
|
+
const error = (_a = gl.getProgramInfoLog(program)) !== null && _a !== void 0 ? _a : 'unknown error linking program.';
|
|
175
|
+
throw new Error('[ladon-ts] - ' + error);
|
|
176
|
+
}
|
|
177
|
+
return program;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxtQkFFWDtBQUZELFdBQVksbUJBQW1CO0lBQzNCLDBDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFGVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRTlCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FDdkIsU0FBNEIsRUFDNUIsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsWUFBb0IsRUFDSCxFQUFFO0lBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksaUJBQWlCLENBQUMsV0FBVyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLE1BQU0sR0FBRyxRQUFRLEdBQUcsV0FBVyxDQUFDO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLFNBQVMsR0FBRyxZQUFZLENBQUM7SUFDeEMsTUFBTSxjQUFjLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUNyRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFcEQsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "4.
|
|
1
|
+
export declare const LIB_VERSION = "4.4.0";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const LIB_VERSION = '4.
|
|
1
|
+
export const LIB_VERSION = '4.4.0';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/ladon-ts",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "WebexIntelligence computer vision library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/module/index.js",
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
"doc:publish": "gh-pages -m \"[ci skip] Updates\" -d build/docs",
|
|
31
31
|
"version": "standard-version",
|
|
32
32
|
"test-release": "run-s test build doc:html",
|
|
33
|
-
"prepare-release": "run-s test version update-version build doc:html doc:publish"
|
|
33
|
+
"prepare-release": "run-s test version update-version build doc:html doc:publish",
|
|
34
|
+
"serve:worker": "npm --prefix ./worker run serve"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@types/chai": "^4.3.0",
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"mocha": "^9.1.3",
|
|
49
50
|
"npm-run-all": "^4.1.5",
|
|
50
51
|
"open-cli": "^6.0.1",
|
|
51
|
-
"parcel": "^2.
|
|
52
|
+
"parcel": "^2.12.0",
|
|
52
53
|
"prettier": "^2.1.1",
|
|
53
54
|
"standard-version": "^9.0.0",
|
|
54
55
|
"typedoc": "^0.23.24",
|