@nodetool-ai/base-nodes 0.7.0-rc.22 → 0.8.1
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/README.md +21 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/index.d.ts +61 -67
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +179 -173
- package/dist/index.js.map +1 -1
- package/dist/platforms/browser.d.ts +19 -0
- package/dist/platforms/browser.d.ts.map +1 -0
- package/dist/platforms/browser.js +29 -0
- package/dist/platforms/browser.js.map +1 -0
- package/package.json +53 -65
- package/dist/lib/audio-wav.d.ts +0 -66
- package/dist/lib/audio-wav.d.ts.map +0 -1
- package/dist/lib/audio-wav.js +0 -215
- package/dist/lib/audio-wav.js.map +0 -1
- package/dist/nodes/agent-tool-hydration.d.ts +0 -10
- package/dist/nodes/agent-tool-hydration.d.ts.map +0 -1
- package/dist/nodes/agent-tool-hydration.js +0 -43
- package/dist/nodes/agent-tool-hydration.js.map +0 -1
- package/dist/nodes/agents.d.ts +0 -262
- package/dist/nodes/agents.d.ts.map +0 -1
- package/dist/nodes/agents.js +0 -2856
- package/dist/nodes/agents.js.map +0 -1
- package/dist/nodes/anthropic.d.ts +0 -26
- package/dist/nodes/anthropic.d.ts.map +0 -1
- package/dist/nodes/anthropic.js +0 -133
- package/dist/nodes/anthropic.js.map +0 -1
- package/dist/nodes/apify.d.ts +0 -120
- package/dist/nodes/apify.d.ts.map +0 -1
- package/dist/nodes/apify.js +0 -618
- package/dist/nodes/apify.js.map +0 -1
- package/dist/nodes/audio.d.ts +0 -301
- package/dist/nodes/audio.d.ts.map +0 -1
- package/dist/nodes/audio.js +0 -1274
- package/dist/nodes/audio.js.map +0 -1
- package/dist/nodes/code-node.d.ts +0 -34
- package/dist/nodes/code-node.d.ts.map +0 -1
- package/dist/nodes/code-node.js +0 -343
- package/dist/nodes/code-node.js.map +0 -1
- package/dist/nodes/code.d.ts +0 -301
- package/dist/nodes/code.d.ts.map +0 -1
- package/dist/nodes/code.js +0 -850
- package/dist/nodes/code.js.map +0 -1
- package/dist/nodes/compare.d.ts +0 -18
- package/dist/nodes/compare.d.ts.map +0 -1
- package/dist/nodes/compare.js +0 -122
- package/dist/nodes/compare.js.map +0 -1
- package/dist/nodes/constant.d.ts +0 -315
- package/dist/nodes/constant.d.ts.map +0 -1
- package/dist/nodes/constant.js +0 -715
- package/dist/nodes/constant.js.map +0 -1
- package/dist/nodes/control.d.ts +0 -83
- package/dist/nodes/control.d.ts.map +0 -1
- package/dist/nodes/control.js +0 -212
- package/dist/nodes/control.js.map +0 -1
- package/dist/nodes/data.d.ts +0 -369
- package/dist/nodes/data.d.ts.map +0 -1
- package/dist/nodes/data.js +0 -1590
- package/dist/nodes/data.js.map +0 -1
- package/dist/nodes/document.d.ts +0 -134
- package/dist/nodes/document.d.ts.map +0 -1
- package/dist/nodes/document.js +0 -984
- package/dist/nodes/document.js.map +0 -1
- package/dist/nodes/extended-placeholders.d.ts +0 -6
- package/dist/nodes/extended-placeholders.d.ts.map +0 -1
- package/dist/nodes/extended-placeholders.js +0 -19
- package/dist/nodes/extended-placeholders.js.map +0 -1
- package/dist/nodes/gemini.d.ts +0 -110
- package/dist/nodes/gemini.d.ts.map +0 -1
- package/dist/nodes/gemini.js +0 -871
- package/dist/nodes/gemini.js.map +0 -1
- package/dist/nodes/generators.d.ts +0 -84
- package/dist/nodes/generators.d.ts.map +0 -1
- package/dist/nodes/generators.js +0 -968
- package/dist/nodes/generators.js.map +0 -1
- package/dist/nodes/image.d.ts +0 -232
- package/dist/nodes/image.d.ts.map +0 -1
- package/dist/nodes/image.js +0 -1395
- package/dist/nodes/image.js.map +0 -1
- package/dist/nodes/input.d.ts +0 -445
- package/dist/nodes/input.d.ts.map +0 -1
- package/dist/nodes/input.js +0 -1459
- package/dist/nodes/input.js.map +0 -1
- package/dist/nodes/kie-dynamic.d.ts +0 -31
- package/dist/nodes/kie-dynamic.d.ts.map +0 -1
- package/dist/nodes/kie-dynamic.js +0 -270
- package/dist/nodes/kie-dynamic.js.map +0 -1
- package/dist/nodes/lib-audio-dsp.d.ts +0 -85
- package/dist/nodes/lib-audio-dsp.d.ts.map +0 -1
- package/dist/nodes/lib-audio-dsp.js +0 -450
- package/dist/nodes/lib-audio-dsp.js.map +0 -1
- package/dist/nodes/lib-audio-effects.d.ts +0 -116
- package/dist/nodes/lib-audio-effects.d.ts.map +0 -1
- package/dist/nodes/lib-audio-effects.js +0 -905
- package/dist/nodes/lib-audio-effects.js.map +0 -1
- package/dist/nodes/lib-browser.d.ts +0 -99
- package/dist/nodes/lib-browser.d.ts.map +0 -1
- package/dist/nodes/lib-browser.js +0 -692
- package/dist/nodes/lib-browser.js.map +0 -1
- package/dist/nodes/lib-charts.d.ts +0 -20
- package/dist/nodes/lib-charts.d.ts.map +0 -1
- package/dist/nodes/lib-charts.js +0 -245
- package/dist/nodes/lib-charts.js.map +0 -1
- package/dist/nodes/lib-datetime.d.ts +0 -108
- package/dist/nodes/lib-datetime.d.ts.map +0 -1
- package/dist/nodes/lib-datetime.js +0 -421
- package/dist/nodes/lib-datetime.js.map +0 -1
- package/dist/nodes/lib-doc-convert.d.ts +0 -19
- package/dist/nodes/lib-doc-convert.d.ts.map +0 -1
- package/dist/nodes/lib-doc-convert.js +0 -257
- package/dist/nodes/lib-doc-convert.js.map +0 -1
- package/dist/nodes/lib-doc-transform.d.ts +0 -39
- package/dist/nodes/lib-doc-transform.d.ts.map +0 -1
- package/dist/nodes/lib-doc-transform.js +0 -335
- package/dist/nodes/lib-doc-transform.js.map +0 -1
- package/dist/nodes/lib-docx.d.ts +0 -106
- package/dist/nodes/lib-docx.d.ts.map +0 -1
- package/dist/nodes/lib-docx.js +0 -595
- package/dist/nodes/lib-docx.js.map +0 -1
- package/dist/nodes/lib-epub.d.ts +0 -55
- package/dist/nodes/lib-epub.d.ts.map +0 -1
- package/dist/nodes/lib-epub.js +0 -220
- package/dist/nodes/lib-epub.js.map +0 -1
- package/dist/nodes/lib-excel.d.ts +0 -74
- package/dist/nodes/lib-excel.d.ts.map +0 -1
- package/dist/nodes/lib-excel.js +0 -448
- package/dist/nodes/lib-excel.js.map +0 -1
- package/dist/nodes/lib-graphql.d.ts +0 -66
- package/dist/nodes/lib-graphql.d.ts.map +0 -1
- package/dist/nodes/lib-graphql.js +0 -333
- package/dist/nodes/lib-graphql.js.map +0 -1
- package/dist/nodes/lib-grid.d.ts +0 -27
- package/dist/nodes/lib-grid.d.ts.map +0 -1
- package/dist/nodes/lib-grid.js +0 -172
- package/dist/nodes/lib-grid.js.map +0 -1
- package/dist/nodes/lib-html-parse.d.ts +0 -108
- package/dist/nodes/lib-html-parse.d.ts.map +0 -1
- package/dist/nodes/lib-html-parse.js +0 -365
- package/dist/nodes/lib-html-parse.js.map +0 -1
- package/dist/nodes/lib-http.d.ts +0 -98
- package/dist/nodes/lib-http.d.ts.map +0 -1
- package/dist/nodes/lib-http.js +0 -267
- package/dist/nodes/lib-http.js.map +0 -1
- package/dist/nodes/lib-image-color-grading.d.ts +0 -3
- package/dist/nodes/lib-image-color-grading.d.ts.map +0 -1
- package/dist/nodes/lib-image-color-grading.js +0 -1386
- package/dist/nodes/lib-image-color-grading.js.map +0 -1
- package/dist/nodes/lib-image-draw.d.ts +0 -3
- package/dist/nodes/lib-image-draw.d.ts.map +0 -1
- package/dist/nodes/lib-image-draw.js +0 -470
- package/dist/nodes/lib-image-draw.js.map +0 -1
- package/dist/nodes/lib-image-enhance.d.ts +0 -3
- package/dist/nodes/lib-image-enhance.d.ts.map +0 -1
- package/dist/nodes/lib-image-enhance.js +0 -731
- package/dist/nodes/lib-image-enhance.js.map +0 -1
- package/dist/nodes/lib-image-filter.d.ts +0 -3
- package/dist/nodes/lib-image-filter.d.ts.map +0 -1
- package/dist/nodes/lib-image-filter.js +0 -684
- package/dist/nodes/lib-image-filter.js.map +0 -1
- package/dist/nodes/lib-image-utils.d.ts +0 -24
- package/dist/nodes/lib-image-utils.d.ts.map +0 -1
- package/dist/nodes/lib-image-utils.js +0 -150
- package/dist/nodes/lib-image-utils.js.map +0 -1
- package/dist/nodes/lib-mail.d.ts +0 -74
- package/dist/nodes/lib-mail.d.ts.map +0 -1
- package/dist/nodes/lib-mail.js +0 -452
- package/dist/nodes/lib-mail.js.map +0 -1
- package/dist/nodes/lib-markdown.d.ts +0 -70
- package/dist/nodes/lib-markdown.d.ts.map +0 -1
- package/dist/nodes/lib-markdown.js +0 -236
- package/dist/nodes/lib-markdown.js.map +0 -1
- package/dist/nodes/lib-nlp.d.ts +0 -98
- package/dist/nodes/lib-nlp.d.ts.map +0 -1
- package/dist/nodes/lib-nlp.js +0 -374
- package/dist/nodes/lib-nlp.js.map +0 -1
- package/dist/nodes/lib-notion.d.ts +0 -99
- package/dist/nodes/lib-notion.d.ts.map +0 -1
- package/dist/nodes/lib-notion.js +0 -601
- package/dist/nodes/lib-notion.js.map +0 -1
- package/dist/nodes/lib-ocr.d.ts +0 -31
- package/dist/nodes/lib-ocr.d.ts.map +0 -1
- package/dist/nodes/lib-ocr.js +0 -143
- package/dist/nodes/lib-ocr.js.map +0 -1
- package/dist/nodes/lib-os.d.ts +0 -312
- package/dist/nodes/lib-os.d.ts.map +0 -1
- package/dist/nodes/lib-os.js +0 -909
- package/dist/nodes/lib-os.js.map +0 -1
- package/dist/nodes/lib-pdf.d.ts +0 -142
- package/dist/nodes/lib-pdf.d.ts.map +0 -1
- package/dist/nodes/lib-pdf.js +0 -871
- package/dist/nodes/lib-pdf.js.map +0 -1
- package/dist/nodes/lib-pptx.d.ts +0 -29
- package/dist/nodes/lib-pptx.d.ts.map +0 -1
- package/dist/nodes/lib-pptx.js +0 -122
- package/dist/nodes/lib-pptx.js.map +0 -1
- package/dist/nodes/lib-rss.d.ts +0 -31
- package/dist/nodes/lib-rss.d.ts.map +0 -1
- package/dist/nodes/lib-rss.js +0 -163
- package/dist/nodes/lib-rss.js.map +0 -1
- package/dist/nodes/lib-s3.d.ts +0 -112
- package/dist/nodes/lib-s3.d.ts.map +0 -1
- package/dist/nodes/lib-s3.js +0 -521
- package/dist/nodes/lib-s3.js.map +0 -1
- package/dist/nodes/lib-secret.d.ts +0 -15
- package/dist/nodes/lib-secret.d.ts.map +0 -1
- package/dist/nodes/lib-secret.js +0 -42
- package/dist/nodes/lib-secret.js.map +0 -1
- package/dist/nodes/lib-sqlite.d.ts +0 -102
- package/dist/nodes/lib-sqlite.d.ts.map +0 -1
- package/dist/nodes/lib-sqlite.js +0 -532
- package/dist/nodes/lib-sqlite.js.map +0 -1
- package/dist/nodes/lib-supabase.d.ts +0 -86
- package/dist/nodes/lib-supabase.d.ts.map +0 -1
- package/dist/nodes/lib-supabase.js +0 -425
- package/dist/nodes/lib-supabase.js.map +0 -1
- package/dist/nodes/lib-svg.d.ts +0 -199
- package/dist/nodes/lib-svg.d.ts.map +0 -1
- package/dist/nodes/lib-svg.js +0 -1027
- package/dist/nodes/lib-svg.js.map +0 -1
- package/dist/nodes/lib-tensorflow.d.ts +0 -71
- package/dist/nodes/lib-tensorflow.d.ts.map +0 -1
- package/dist/nodes/lib-tensorflow.js +0 -351
- package/dist/nodes/lib-tensorflow.js.map +0 -1
- package/dist/nodes/lib-twilio.d.ts +0 -71
- package/dist/nodes/lib-twilio.d.ts.map +0 -1
- package/dist/nodes/lib-twilio.js +0 -469
- package/dist/nodes/lib-twilio.js.map +0 -1
- package/dist/nodes/lib-validate.d.ts +0 -84
- package/dist/nodes/lib-validate.d.ts.map +0 -1
- package/dist/nodes/lib-validate.js +0 -215
- package/dist/nodes/lib-validate.js.map +0 -1
- package/dist/nodes/lib-video-download.d.ts +0 -26
- package/dist/nodes/lib-video-download.d.ts.map +0 -1
- package/dist/nodes/lib-video-download.js +0 -299
- package/dist/nodes/lib-video-download.js.map +0 -1
- package/dist/nodes/messaging.d.ts +0 -88
- package/dist/nodes/messaging.d.ts.map +0 -1
- package/dist/nodes/messaging.js +0 -418
- package/dist/nodes/messaging.js.map +0 -1
- package/dist/nodes/mistral.d.ts +0 -83
- package/dist/nodes/mistral.d.ts.map +0 -1
- package/dist/nodes/mistral.js +0 -450
- package/dist/nodes/mistral.js.map +0 -1
- package/dist/nodes/model3d/analysis.d.ts +0 -13
- package/dist/nodes/model3d/analysis.d.ts.map +0 -1
- package/dist/nodes/model3d/analysis.js +0 -36
- package/dist/nodes/model3d/analysis.js.map +0 -1
- package/dist/nodes/model3d/base.d.ts +0 -11
- package/dist/nodes/model3d/base.d.ts.map +0 -1
- package/dist/nodes/model3d/base.js +0 -20
- package/dist/nodes/model3d/base.js.map +0 -1
- package/dist/nodes/model3d/boolean-ops.d.ts +0 -2
- package/dist/nodes/model3d/boolean-ops.d.ts.map +0 -1
- package/dist/nodes/model3d/boolean-ops.js +0 -172
- package/dist/nodes/model3d/boolean-ops.js.map +0 -1
- package/dist/nodes/model3d/cleanup.d.ts +0 -47
- package/dist/nodes/model3d/cleanup.d.ts.map +0 -1
- package/dist/nodes/model3d/cleanup.js +0 -136
- package/dist/nodes/model3d/cleanup.js.map +0 -1
- package/dist/nodes/model3d/convert.d.ts +0 -14
- package/dist/nodes/model3d/convert.d.ts.map +0 -1
- package/dist/nodes/model3d/convert.js +0 -64
- package/dist/nodes/model3d/convert.js.map +0 -1
- package/dist/nodes/model3d/defaults.d.ts +0 -34
- package/dist/nodes/model3d/defaults.d.ts.map +0 -1
- package/dist/nodes/model3d/defaults.js +0 -28
- package/dist/nodes/model3d/defaults.js.map +0 -1
- package/dist/nodes/model3d/document-ops.d.ts +0 -4
- package/dist/nodes/model3d/document-ops.d.ts.map +0 -1
- package/dist/nodes/model3d/document-ops.js +0 -40
- package/dist/nodes/model3d/document-ops.js.map +0 -1
- package/dist/nodes/model3d/generation.d.ts +0 -39
- package/dist/nodes/model3d/generation.d.ts.map +0 -1
- package/dist/nodes/model3d/generation.js +0 -179
- package/dist/nodes/model3d/generation.js.map +0 -1
- package/dist/nodes/model3d/glb.d.ts +0 -29
- package/dist/nodes/model3d/glb.d.ts.map +0 -1
- package/dist/nodes/model3d/glb.js +0 -255
- package/dist/nodes/model3d/glb.js.map +0 -1
- package/dist/nodes/model3d/index.d.ts +0 -20
- package/dist/nodes/model3d/index.d.ts.map +0 -1
- package/dist/nodes/model3d/index.js +0 -38
- package/dist/nodes/model3d/index.js.map +0 -1
- package/dist/nodes/model3d/io.d.ts +0 -38
- package/dist/nodes/model3d/io.d.ts.map +0 -1
- package/dist/nodes/model3d/io.js +0 -162
- package/dist/nodes/model3d/io.js.map +0 -1
- package/dist/nodes/model3d/mesh-ops.d.ts +0 -40
- package/dist/nodes/model3d/mesh-ops.d.ts.map +0 -1
- package/dist/nodes/model3d/mesh-ops.js +0 -775
- package/dist/nodes/model3d/mesh-ops.js.map +0 -1
- package/dist/nodes/model3d/nodes.d.ts +0 -2
- package/dist/nodes/model3d/nodes.d.ts.map +0 -1
- package/dist/nodes/model3d/nodes.js +0 -2
- package/dist/nodes/model3d/nodes.js.map +0 -1
- package/dist/nodes/model3d/ops.d.ts +0 -37
- package/dist/nodes/model3d/ops.d.ts.map +0 -1
- package/dist/nodes/model3d/ops.js +0 -137
- package/dist/nodes/model3d/ops.js.map +0 -1
- package/dist/nodes/model3d/transforms.d.ts +0 -49
- package/dist/nodes/model3d/transforms.d.ts.map +0 -1
- package/dist/nodes/model3d/transforms.js +0 -142
- package/dist/nodes/model3d/transforms.js.map +0 -1
- package/dist/nodes/model3d/types.d.ts +0 -81
- package/dist/nodes/model3d/types.d.ts.map +0 -1
- package/dist/nodes/model3d/types.js +0 -2
- package/dist/nodes/model3d/types.js.map +0 -1
- package/dist/nodes/model3d/utils.d.ts +0 -34
- package/dist/nodes/model3d/utils.d.ts.map +0 -1
- package/dist/nodes/model3d/utils.js +0 -185
- package/dist/nodes/model3d/utils.js.map +0 -1
- package/dist/nodes/model3d.d.ts +0 -2
- package/dist/nodes/model3d.d.ts.map +0 -1
- package/dist/nodes/model3d.js +0 -2
- package/dist/nodes/model3d.js.map +0 -1
- package/dist/nodes/openai.d.ts +0 -172
- package/dist/nodes/openai.d.ts.map +0 -1
- package/dist/nodes/openai.js +0 -1294
- package/dist/nodes/openai.js.map +0 -1
- package/dist/nodes/output.d.ts +0 -29
- package/dist/nodes/output.d.ts.map +0 -1
- package/dist/nodes/output.js +0 -87
- package/dist/nodes/output.js.map +0 -1
- package/dist/nodes/sandbox.d.ts +0 -63
- package/dist/nodes/sandbox.d.ts.map +0 -1
- package/dist/nodes/sandbox.js +0 -633
- package/dist/nodes/sandbox.js.map +0 -1
- package/dist/nodes/search.d.ts +0 -117
- package/dist/nodes/search.d.ts.map +0 -1
- package/dist/nodes/search.js +0 -607
- package/dist/nodes/search.js.map +0 -1
- package/dist/nodes/team.d.ts +0 -74
- package/dist/nodes/team.d.ts.map +0 -1
- package/dist/nodes/team.js +0 -309
- package/dist/nodes/team.js.map +0 -1
- package/dist/nodes/text-extra.d.ts +0 -633
- package/dist/nodes/text-extra.d.ts.map +0 -1
- package/dist/nodes/text-extra.js +0 -2226
- package/dist/nodes/text-extra.js.map +0 -1
- package/dist/nodes/tool-agents.d.ts +0 -334
- package/dist/nodes/tool-agents.d.ts.map +0 -1
- package/dist/nodes/tool-agents.js +0 -1861
- package/dist/nodes/tool-agents.js.map +0 -1
- package/dist/nodes/triggers.d.ts +0 -107
- package/dist/nodes/triggers.d.ts.map +0 -1
- package/dist/nodes/triggers.js +0 -706
- package/dist/nodes/triggers.js.map +0 -1
- package/dist/nodes/vector.d.ts +0 -168
- package/dist/nodes/vector.d.ts.map +0 -1
- package/dist/nodes/vector.js +0 -1121
- package/dist/nodes/vector.js.map +0 -1
- package/dist/nodes/video.d.ts +0 -387
- package/dist/nodes/video.d.ts.map +0 -1
- package/dist/nodes/video.js +0 -2383
- package/dist/nodes/video.js.map +0 -1
- package/dist/nodes/workflow.d.ts +0 -24
- package/dist/nodes/workflow.d.ts.map +0 -1
- package/dist/nodes/workflow.js +0 -146
- package/dist/nodes/workflow.js.map +0 -1
- package/dist/nodes/workspace.d.ts +0 -203
- package/dist/nodes/workspace.d.ts.map +0 -1
- package/dist/nodes/workspace.js +0 -795
- package/dist/nodes/workspace.js.map +0 -1
|
@@ -1,731 +0,0 @@
|
|
|
1
|
-
import { BaseNode, registerDeclaredProperty } from "@nodetool-ai/node-sdk";
|
|
2
|
-
import sharp from "sharp";
|
|
3
|
-
import { decodeImage, toRef, pickImage } from "./lib-image-utils.js";
|
|
4
|
-
function createEnhanceNode(desc) {
|
|
5
|
-
const C = class extends BaseNode {
|
|
6
|
-
static nodeType = desc.nodeType;
|
|
7
|
-
static title = desc.title;
|
|
8
|
-
static description = desc.description;
|
|
9
|
-
static basicFields = desc.basicFields;
|
|
10
|
-
static metadataOutputTypes = desc.outputs;
|
|
11
|
-
async process(context) {
|
|
12
|
-
const t = desc.nodeType;
|
|
13
|
-
const props = this.serialize();
|
|
14
|
-
const baseObj = pickImage(this.serialize(), props);
|
|
15
|
-
const baseBytes = await decodeImage(baseObj, context);
|
|
16
|
-
if (!baseBytes) {
|
|
17
|
-
return { output: baseObj ?? {} };
|
|
18
|
-
}
|
|
19
|
-
let img = sharp(baseBytes, { failOn: "none" });
|
|
20
|
-
if (t.endsWith(".Brightness")) {
|
|
21
|
-
const factor = Number(this.factor ?? 1);
|
|
22
|
-
img = img.modulate({ brightness: factor });
|
|
23
|
-
}
|
|
24
|
-
else if (t.endsWith(".Color")) {
|
|
25
|
-
const factor = Number(this.factor ?? 1);
|
|
26
|
-
img = img.modulate({ saturation: factor });
|
|
27
|
-
}
|
|
28
|
-
else if (t.endsWith(".Contrast")) {
|
|
29
|
-
const factor = Number(this.factor ?? 1);
|
|
30
|
-
img = img.linear(factor, -(128 * (factor - 1)));
|
|
31
|
-
}
|
|
32
|
-
else if (t.endsWith(".Sharpen")) {
|
|
33
|
-
img = img.convolve({
|
|
34
|
-
width: 3,
|
|
35
|
-
height: 3,
|
|
36
|
-
kernel: [-1, -1, -1, -1, 9, -1, -1, -1, -1]
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
else if (t.endsWith(".Sharpness")) {
|
|
40
|
-
const factor = Number(this.factor ?? 1);
|
|
41
|
-
img = img.sharpen({ sigma: 1, m1: Math.max(0, factor), m2: 0.5 });
|
|
42
|
-
}
|
|
43
|
-
else if (t.endsWith(".UnsharpMask")) {
|
|
44
|
-
const radius = Number(this.radius ?? 2);
|
|
45
|
-
const percent = Number(this.percent ?? 150);
|
|
46
|
-
const threshold = Number(this.threshold ?? 3);
|
|
47
|
-
img = img.sharpen({
|
|
48
|
-
sigma: Math.max(0.5, radius),
|
|
49
|
-
m1: percent / 100,
|
|
50
|
-
m2: threshold
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
else if (t.endsWith(".AutoContrast")) {
|
|
54
|
-
// Proper autocontrast with cutoff
|
|
55
|
-
const cutoff = Number(this.cutoff ?? 0);
|
|
56
|
-
const { data: raw, info } = await img
|
|
57
|
-
.removeAlpha()
|
|
58
|
-
.raw()
|
|
59
|
-
.toBuffer({ resolveWithObject: true });
|
|
60
|
-
const w = info.width;
|
|
61
|
-
const h = info.height;
|
|
62
|
-
const totalPixels = w * h;
|
|
63
|
-
const channels = 3;
|
|
64
|
-
const cutCount = Math.floor((totalPixels * cutoff) / 100);
|
|
65
|
-
for (let c = 0; c < channels; c++) {
|
|
66
|
-
// Build histogram for this channel
|
|
67
|
-
const hist = new Uint32Array(256);
|
|
68
|
-
for (let i = c; i < raw.length; i += channels) {
|
|
69
|
-
hist[raw[i]]++;
|
|
70
|
-
}
|
|
71
|
-
// Find low cutoff
|
|
72
|
-
let lo = 0;
|
|
73
|
-
let cumLo = 0;
|
|
74
|
-
while (lo < 255 && cumLo + hist[lo] <= cutCount) {
|
|
75
|
-
cumLo += hist[lo];
|
|
76
|
-
lo++;
|
|
77
|
-
}
|
|
78
|
-
// Find high cutoff
|
|
79
|
-
let hi = 255;
|
|
80
|
-
let cumHi = 0;
|
|
81
|
-
while (hi > 0 && cumHi + hist[hi] <= cutCount) {
|
|
82
|
-
cumHi += hist[hi];
|
|
83
|
-
hi--;
|
|
84
|
-
}
|
|
85
|
-
if (lo >= hi)
|
|
86
|
-
continue;
|
|
87
|
-
// Linear map remaining range to 0-255
|
|
88
|
-
const scale = 255.0 / (hi - lo);
|
|
89
|
-
for (let i = c; i < raw.length; i += channels) {
|
|
90
|
-
raw[i] = Math.max(0, Math.min(255, Math.round((raw[i] - lo) * scale)));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const out = await sharp(raw, {
|
|
94
|
-
raw: { width: w, height: h, channels: channels }
|
|
95
|
-
})
|
|
96
|
-
.png()
|
|
97
|
-
.toBuffer();
|
|
98
|
-
return { output: toRef(out, baseObj) };
|
|
99
|
-
}
|
|
100
|
-
else if (t.endsWith(".Equalize")) {
|
|
101
|
-
// Proper histogram equalization
|
|
102
|
-
const { data: raw, info } = await img
|
|
103
|
-
.removeAlpha()
|
|
104
|
-
.raw()
|
|
105
|
-
.toBuffer({ resolveWithObject: true });
|
|
106
|
-
const w = info.width;
|
|
107
|
-
const h = info.height;
|
|
108
|
-
const totalPixels = w * h;
|
|
109
|
-
const channels = 3;
|
|
110
|
-
for (let c = 0; c < channels; c++) {
|
|
111
|
-
// Build histogram
|
|
112
|
-
const hist = new Uint32Array(256);
|
|
113
|
-
for (let i = c; i < raw.length; i += channels) {
|
|
114
|
-
hist[raw[i]]++;
|
|
115
|
-
}
|
|
116
|
-
// Compute CDF
|
|
117
|
-
const cdf = new Uint32Array(256);
|
|
118
|
-
cdf[0] = hist[0];
|
|
119
|
-
for (let j = 1; j < 256; j++) {
|
|
120
|
-
cdf[j] = cdf[j - 1] + hist[j];
|
|
121
|
-
}
|
|
122
|
-
// Find min non-zero CDF value
|
|
123
|
-
let cdfMin = 0;
|
|
124
|
-
for (let j = 0; j < 256; j++) {
|
|
125
|
-
if (cdf[j] > 0) {
|
|
126
|
-
cdfMin = cdf[j];
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// Build lookup table
|
|
131
|
-
const lut = new Uint8Array(256);
|
|
132
|
-
const denom = totalPixels - cdfMin;
|
|
133
|
-
if (denom > 0) {
|
|
134
|
-
for (let j = 0; j < 256; j++) {
|
|
135
|
-
lut[j] = Math.round(((cdf[j] - cdfMin) / denom) * 255);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
// Apply LUT
|
|
139
|
-
for (let i = c; i < raw.length; i += channels) {
|
|
140
|
-
raw[i] = lut[raw[i]];
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
const out = await sharp(raw, {
|
|
144
|
-
raw: { width: w, height: h, channels: channels }
|
|
145
|
-
})
|
|
146
|
-
.png()
|
|
147
|
-
.toBuffer();
|
|
148
|
-
return { output: toRef(out, baseObj) };
|
|
149
|
-
}
|
|
150
|
-
else if (t.endsWith(".AdaptiveContrast")) {
|
|
151
|
-
// CLAHE (Contrast Limited Adaptive Histogram Equalization)
|
|
152
|
-
const clipLimit = Number(this.clip_limit ?? 2);
|
|
153
|
-
const gridSize = Math.max(1, Math.round(Number(this.grid_size ?? 8)));
|
|
154
|
-
const { data: raw, info } = await img
|
|
155
|
-
.removeAlpha()
|
|
156
|
-
.raw()
|
|
157
|
-
.toBuffer({ resolveWithObject: true });
|
|
158
|
-
const w = info.width;
|
|
159
|
-
const h = info.height;
|
|
160
|
-
const channels = 3;
|
|
161
|
-
const tileW = Math.ceil(w / gridSize);
|
|
162
|
-
const tileH = Math.ceil(h / gridSize);
|
|
163
|
-
// Build CDFs for each tile and channel
|
|
164
|
-
const tileCDFs = [];
|
|
165
|
-
for (let ty = 0; ty < gridSize; ty++) {
|
|
166
|
-
tileCDFs[ty] = [];
|
|
167
|
-
for (let tx = 0; tx < gridSize; tx++) {
|
|
168
|
-
tileCDFs[ty][tx] = [];
|
|
169
|
-
const x0 = tx * tileW;
|
|
170
|
-
const y0 = ty * tileH;
|
|
171
|
-
const x1 = Math.min(x0 + tileW, w);
|
|
172
|
-
const y1 = Math.min(y0 + tileH, h);
|
|
173
|
-
const tilePixels = (x1 - x0) * (y1 - y0);
|
|
174
|
-
for (let c = 0; c < channels; c++) {
|
|
175
|
-
const hist = new Uint32Array(256);
|
|
176
|
-
for (let y = y0; y < y1; y++) {
|
|
177
|
-
for (let x = x0; x < x1; x++) {
|
|
178
|
-
hist[raw[(y * w + x) * channels + c]]++;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// Clip histogram and redistribute
|
|
182
|
-
const limit = Math.max(1, Math.round((clipLimit * tilePixels) / 256));
|
|
183
|
-
let excess = 0;
|
|
184
|
-
for (let j = 0; j < 256; j++) {
|
|
185
|
-
if (hist[j] > limit) {
|
|
186
|
-
excess += hist[j] - limit;
|
|
187
|
-
hist[j] = limit;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
const increment = Math.floor(excess / 256);
|
|
191
|
-
for (let j = 0; j < 256; j++) {
|
|
192
|
-
hist[j] += increment;
|
|
193
|
-
}
|
|
194
|
-
// Compute CDF
|
|
195
|
-
const cdf = new Float32Array(256);
|
|
196
|
-
cdf[0] = hist[0];
|
|
197
|
-
for (let j = 1; j < 256; j++) {
|
|
198
|
-
cdf[j] = cdf[j - 1] + hist[j];
|
|
199
|
-
}
|
|
200
|
-
// Normalize CDF to 0-255
|
|
201
|
-
const cdfMax = cdf[255];
|
|
202
|
-
if (cdfMax > 0) {
|
|
203
|
-
for (let j = 0; j < 256; j++) {
|
|
204
|
-
cdf[j] = (cdf[j] / cdfMax) * 255;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
tileCDFs[ty][tx][c] = cdf;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
// Apply with bilinear interpolation between tile CDFs
|
|
212
|
-
const result = Buffer.alloc(raw.length);
|
|
213
|
-
for (let y = 0; y < h; y++) {
|
|
214
|
-
for (let x = 0; x < w; x++) {
|
|
215
|
-
// Find tile coordinates
|
|
216
|
-
const ftx = (x + 0.5) / tileW - 0.5;
|
|
217
|
-
const fty = (y + 0.5) / tileH - 0.5;
|
|
218
|
-
const tx0 = Math.max(0, Math.floor(ftx));
|
|
219
|
-
const ty0 = Math.max(0, Math.floor(fty));
|
|
220
|
-
const tx1 = Math.min(gridSize - 1, tx0 + 1);
|
|
221
|
-
const ty1 = Math.min(gridSize - 1, ty0 + 1);
|
|
222
|
-
const fx = Math.max(0, Math.min(1, ftx - tx0));
|
|
223
|
-
const fy = Math.max(0, Math.min(1, fty - ty0));
|
|
224
|
-
for (let c = 0; c < channels; c++) {
|
|
225
|
-
const val = raw[(y * w + x) * channels + c];
|
|
226
|
-
const tl = tileCDFs[ty0][tx0][c][val];
|
|
227
|
-
const tr = tileCDFs[ty0][tx1][c][val];
|
|
228
|
-
const bl = tileCDFs[ty1][tx0][c][val];
|
|
229
|
-
const br = tileCDFs[ty1][tx1][c][val];
|
|
230
|
-
const top = tl * (1 - fx) + tr * fx;
|
|
231
|
-
const bot = bl * (1 - fx) + br * fx;
|
|
232
|
-
result[(y * w + x) * channels + c] = Math.round(top * (1 - fy) + bot * fy);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
const out = await sharp(result, {
|
|
237
|
-
raw: { width: w, height: h, channels: channels }
|
|
238
|
-
})
|
|
239
|
-
.png()
|
|
240
|
-
.toBuffer();
|
|
241
|
-
return { output: toRef(out, baseObj) };
|
|
242
|
-
}
|
|
243
|
-
else if (t.endsWith(".Detail") || t.endsWith(".EdgeEnhance")) {
|
|
244
|
-
img = img.sharpen({ sigma: 0.5, m1: 0.5, m2: 0.3 });
|
|
245
|
-
}
|
|
246
|
-
else if (t.endsWith(".RankFilter")) {
|
|
247
|
-
// Proper rank filter with configurable rank
|
|
248
|
-
const size = Math.max(1, Number(this.size ?? 3));
|
|
249
|
-
const rank = Number(this.rank ?? 3);
|
|
250
|
-
const { data: raw, info } = await img
|
|
251
|
-
.removeAlpha()
|
|
252
|
-
.raw()
|
|
253
|
-
.toBuffer({ resolveWithObject: true });
|
|
254
|
-
const w = info.width;
|
|
255
|
-
const h = info.height;
|
|
256
|
-
const channels = 3;
|
|
257
|
-
const half = Math.floor(size / 2);
|
|
258
|
-
const result = Buffer.alloc(raw.length);
|
|
259
|
-
for (let y = 0; y < h; y++) {
|
|
260
|
-
for (let x = 0; x < w; x++) {
|
|
261
|
-
for (let c = 0; c < channels; c++) {
|
|
262
|
-
const neighbors = [];
|
|
263
|
-
for (let ky = -half; ky <= half; ky++) {
|
|
264
|
-
for (let kx = -half; kx <= half; kx++) {
|
|
265
|
-
const ny = Math.min(h - 1, Math.max(0, y + ky));
|
|
266
|
-
const nx = Math.min(w - 1, Math.max(0, x + kx));
|
|
267
|
-
neighbors.push(raw[(ny * w + nx) * channels + c]);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
neighbors.sort((a, b) => a - b);
|
|
271
|
-
const idx = Math.min(rank, neighbors.length - 1);
|
|
272
|
-
result[(y * w + x) * channels + c] = neighbors[idx];
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
const out = await sharp(result, {
|
|
277
|
-
raw: { width: w, height: h, channels: channels }
|
|
278
|
-
})
|
|
279
|
-
.png()
|
|
280
|
-
.toBuffer();
|
|
281
|
-
return { output: toRef(out, baseObj) };
|
|
282
|
-
}
|
|
283
|
-
const out = await img.png().toBuffer();
|
|
284
|
-
return { output: toRef(out, baseObj) };
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
for (const property of desc.properties) {
|
|
288
|
-
registerDeclaredProperty(C, property.name, property.options);
|
|
289
|
-
}
|
|
290
|
-
return C;
|
|
291
|
-
}
|
|
292
|
-
const DESCRIPTORS = [
|
|
293
|
-
{
|
|
294
|
-
nodeType: "lib.image.enhance.AdaptiveContrast",
|
|
295
|
-
title: "Adaptive Contrast",
|
|
296
|
-
description: "Applies localized contrast enhancement using adaptive techniques.\n image, contrast, enhance\n\n Use cases:\n - Improve visibility in images with varying lighting conditions\n - Prepare images for improved feature detection in computer vision",
|
|
297
|
-
basicFields: ["image", "clip_limit", "grid_size"],
|
|
298
|
-
outputs: {
|
|
299
|
-
output: "image"
|
|
300
|
-
},
|
|
301
|
-
properties: [
|
|
302
|
-
{
|
|
303
|
-
name: "image",
|
|
304
|
-
options: {
|
|
305
|
-
type: "image",
|
|
306
|
-
default: {
|
|
307
|
-
type: "image",
|
|
308
|
-
uri: "",
|
|
309
|
-
asset_id: null,
|
|
310
|
-
data: null,
|
|
311
|
-
metadata: null
|
|
312
|
-
},
|
|
313
|
-
title: "Image",
|
|
314
|
-
description: "The image to adjust the contrast for."
|
|
315
|
-
}
|
|
316
|
-
},
|
|
317
|
-
{
|
|
318
|
-
name: "clip_limit",
|
|
319
|
-
options: {
|
|
320
|
-
type: "float",
|
|
321
|
-
default: 2,
|
|
322
|
-
title: "Clip Limit",
|
|
323
|
-
description: "Clip limit for adaptive contrast.",
|
|
324
|
-
min: 0,
|
|
325
|
-
max: 100
|
|
326
|
-
}
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
name: "grid_size",
|
|
330
|
-
options: {
|
|
331
|
-
type: "int",
|
|
332
|
-
default: 8,
|
|
333
|
-
title: "Grid Size",
|
|
334
|
-
description: "Grid size for adaptive contrast.",
|
|
335
|
-
min: 1,
|
|
336
|
-
max: 64
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
]
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
nodeType: "lib.image.enhance.AutoContrast",
|
|
343
|
-
title: "Auto Contrast",
|
|
344
|
-
description: "Automatically adjusts image contrast for enhanced visual quality.\n image, contrast, balance\n\n Use cases:\n - Enhance image clarity for better visual perception\n - Pre-process images for computer vision tasks\n - Improve photo aesthetics in editing workflows",
|
|
345
|
-
basicFields: ["image", "cutoff"],
|
|
346
|
-
outputs: {
|
|
347
|
-
output: "image"
|
|
348
|
-
},
|
|
349
|
-
properties: [
|
|
350
|
-
{
|
|
351
|
-
name: "image",
|
|
352
|
-
options: {
|
|
353
|
-
type: "image",
|
|
354
|
-
default: {
|
|
355
|
-
type: "image",
|
|
356
|
-
uri: "",
|
|
357
|
-
asset_id: null,
|
|
358
|
-
data: null,
|
|
359
|
-
metadata: null
|
|
360
|
-
},
|
|
361
|
-
title: "Image",
|
|
362
|
-
description: "The image to adjust the contrast for."
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
name: "cutoff",
|
|
367
|
-
options: {
|
|
368
|
-
type: "int",
|
|
369
|
-
default: 0,
|
|
370
|
-
title: "Cutoff",
|
|
371
|
-
description: "Represents the percentage of pixels to ignore at both the darkest and lightest ends of the histogram. A cutoff value of 5 means ignoring the darkest 5% and the lightest 5% of pixels, enhancing overall contrast by stretching the remaining pixel values across the full brightness range.",
|
|
372
|
-
min: 0,
|
|
373
|
-
max: 255
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
]
|
|
377
|
-
},
|
|
378
|
-
{
|
|
379
|
-
nodeType: "lib.image.enhance.Brightness",
|
|
380
|
-
title: "Brightness",
|
|
381
|
-
description: "Adjusts overall image brightness to lighten or darken.\n image, brightness, enhance\n\n Use cases:\n - Correct underexposed or overexposed photographs\n - Enhance visibility of dark image regions\n - Prepare images for consistent display across devices",
|
|
382
|
-
basicFields: ["image", "factor"],
|
|
383
|
-
outputs: {
|
|
384
|
-
output: "image"
|
|
385
|
-
},
|
|
386
|
-
properties: [
|
|
387
|
-
{
|
|
388
|
-
name: "image",
|
|
389
|
-
options: {
|
|
390
|
-
type: "image",
|
|
391
|
-
default: {
|
|
392
|
-
type: "image",
|
|
393
|
-
uri: "",
|
|
394
|
-
asset_id: null,
|
|
395
|
-
data: null,
|
|
396
|
-
metadata: null
|
|
397
|
-
},
|
|
398
|
-
title: "Image",
|
|
399
|
-
description: "The image to adjust the brightness for."
|
|
400
|
-
}
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
name: "factor",
|
|
404
|
-
options: {
|
|
405
|
-
type: "union[float, int]",
|
|
406
|
-
default: 1,
|
|
407
|
-
title: "Factor",
|
|
408
|
-
description: "Factor to adjust the brightness. 1.0 means no change."
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
]
|
|
412
|
-
},
|
|
413
|
-
{
|
|
414
|
-
nodeType: "lib.image.enhance.Color",
|
|
415
|
-
title: "Color",
|
|
416
|
-
description: "Adjusts color intensity of an image.\n image, color, enhance\n\n Use cases:\n - Enhance color vibrancy in photographs\n - Correct color imbalances in digital images\n - Prepare images for consistent brand color representation",
|
|
417
|
-
basicFields: ["image", "factor"],
|
|
418
|
-
outputs: {
|
|
419
|
-
output: "image"
|
|
420
|
-
},
|
|
421
|
-
properties: [
|
|
422
|
-
{
|
|
423
|
-
name: "image",
|
|
424
|
-
options: {
|
|
425
|
-
type: "image",
|
|
426
|
-
default: {
|
|
427
|
-
type: "image",
|
|
428
|
-
uri: "",
|
|
429
|
-
asset_id: null,
|
|
430
|
-
data: null,
|
|
431
|
-
metadata: null
|
|
432
|
-
},
|
|
433
|
-
title: "Image",
|
|
434
|
-
description: "The image to adjust the brightness for."
|
|
435
|
-
}
|
|
436
|
-
},
|
|
437
|
-
{
|
|
438
|
-
name: "factor",
|
|
439
|
-
options: {
|
|
440
|
-
type: "float",
|
|
441
|
-
default: 1,
|
|
442
|
-
title: "Factor",
|
|
443
|
-
description: "Factor to adjust the contrast. 1.0 means no change."
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
]
|
|
447
|
-
},
|
|
448
|
-
{
|
|
449
|
-
nodeType: "lib.image.enhance.Contrast",
|
|
450
|
-
title: "Contrast",
|
|
451
|
-
description: "Adjusts image contrast to modify light-dark differences.\n image, contrast, enhance\n\n Use cases:\n - Enhance visibility of details in low-contrast images\n - Prepare images for visual analysis or recognition tasks\n - Create dramatic effects in artistic photography",
|
|
452
|
-
basicFields: ["image", "factor"],
|
|
453
|
-
outputs: {
|
|
454
|
-
output: "image"
|
|
455
|
-
},
|
|
456
|
-
properties: [
|
|
457
|
-
{
|
|
458
|
-
name: "image",
|
|
459
|
-
options: {
|
|
460
|
-
type: "image",
|
|
461
|
-
default: {
|
|
462
|
-
type: "image",
|
|
463
|
-
uri: "",
|
|
464
|
-
asset_id: null,
|
|
465
|
-
data: null,
|
|
466
|
-
metadata: null
|
|
467
|
-
},
|
|
468
|
-
title: "Image",
|
|
469
|
-
description: "The image to adjust the brightness for."
|
|
470
|
-
}
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
name: "factor",
|
|
474
|
-
options: {
|
|
475
|
-
type: "float",
|
|
476
|
-
default: 1,
|
|
477
|
-
title: "Factor",
|
|
478
|
-
description: "Factor to adjust the contrast. 1.0 means no change."
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
]
|
|
482
|
-
},
|
|
483
|
-
{
|
|
484
|
-
nodeType: "lib.image.enhance.Detail",
|
|
485
|
-
title: "Detail",
|
|
486
|
-
description: "Enhances fine details in images.\n image, detail, enhance\n\n Use cases:\n - Improve clarity of textural elements in photographs\n - Enhance visibility of small features for analysis\n - Prepare images for high-resolution display or printing",
|
|
487
|
-
basicFields: ["image"],
|
|
488
|
-
outputs: {
|
|
489
|
-
output: "image"
|
|
490
|
-
},
|
|
491
|
-
properties: [
|
|
492
|
-
{
|
|
493
|
-
name: "image",
|
|
494
|
-
options: {
|
|
495
|
-
type: "image",
|
|
496
|
-
default: {
|
|
497
|
-
type: "image",
|
|
498
|
-
uri: "",
|
|
499
|
-
asset_id: null,
|
|
500
|
-
data: null,
|
|
501
|
-
metadata: null
|
|
502
|
-
},
|
|
503
|
-
title: "Image",
|
|
504
|
-
description: "The image to detail."
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
]
|
|
508
|
-
},
|
|
509
|
-
{
|
|
510
|
-
nodeType: "lib.image.enhance.EdgeEnhance",
|
|
511
|
-
title: "Edge Enhance",
|
|
512
|
-
description: "Enhances edge visibility by increasing contrast along boundaries.\n image, edge, enhance\n\n Use cases:\n - Improve object boundary detection for computer vision\n - Highlight structural elements in technical drawings\n - Prepare images for feature extraction in image analysis",
|
|
513
|
-
basicFields: ["image"],
|
|
514
|
-
outputs: {
|
|
515
|
-
output: "image"
|
|
516
|
-
},
|
|
517
|
-
properties: [
|
|
518
|
-
{
|
|
519
|
-
name: "image",
|
|
520
|
-
options: {
|
|
521
|
-
type: "image",
|
|
522
|
-
default: {
|
|
523
|
-
type: "image",
|
|
524
|
-
uri: "",
|
|
525
|
-
asset_id: null,
|
|
526
|
-
data: null,
|
|
527
|
-
metadata: null
|
|
528
|
-
},
|
|
529
|
-
title: "Image",
|
|
530
|
-
description: "The image to edge enhance."
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
]
|
|
534
|
-
},
|
|
535
|
-
{
|
|
536
|
-
nodeType: "lib.image.enhance.Equalize",
|
|
537
|
-
title: "Equalize",
|
|
538
|
-
description: "Enhances image contrast by equalizing intensity distribution.\n image, contrast, histogram\n\n Use cases:\n - Improve visibility in poorly lit images\n - Enhance details for image analysis tasks\n - Normalize image data for machine learning",
|
|
539
|
-
basicFields: ["image"],
|
|
540
|
-
outputs: {
|
|
541
|
-
output: "image"
|
|
542
|
-
},
|
|
543
|
-
properties: [
|
|
544
|
-
{
|
|
545
|
-
name: "image",
|
|
546
|
-
options: {
|
|
547
|
-
type: "image",
|
|
548
|
-
default: {
|
|
549
|
-
type: "image",
|
|
550
|
-
uri: "",
|
|
551
|
-
asset_id: null,
|
|
552
|
-
data: null,
|
|
553
|
-
metadata: null
|
|
554
|
-
},
|
|
555
|
-
title: "Image",
|
|
556
|
-
description: "The image to equalize."
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
]
|
|
560
|
-
},
|
|
561
|
-
{
|
|
562
|
-
nodeType: "lib.image.enhance.RankFilter",
|
|
563
|
-
title: "Rank Filter",
|
|
564
|
-
description: "Applies rank-based filtering to enhance or smooth image features.\n image, filter, enhance\n\n Use cases:\n - Reduce noise while preserving edges in images\n - Enhance specific image features based on local intensity\n - Pre-process images for improved segmentation results",
|
|
565
|
-
basicFields: ["image", "size", "rank"],
|
|
566
|
-
outputs: {
|
|
567
|
-
output: "image"
|
|
568
|
-
},
|
|
569
|
-
properties: [
|
|
570
|
-
{
|
|
571
|
-
name: "image",
|
|
572
|
-
options: {
|
|
573
|
-
type: "image",
|
|
574
|
-
default: {
|
|
575
|
-
type: "image",
|
|
576
|
-
uri: "",
|
|
577
|
-
asset_id: null,
|
|
578
|
-
data: null,
|
|
579
|
-
metadata: null
|
|
580
|
-
},
|
|
581
|
-
title: "Image",
|
|
582
|
-
description: "The image to rank filter."
|
|
583
|
-
}
|
|
584
|
-
},
|
|
585
|
-
{
|
|
586
|
-
name: "size",
|
|
587
|
-
options: {
|
|
588
|
-
type: "int",
|
|
589
|
-
default: 3,
|
|
590
|
-
title: "Size",
|
|
591
|
-
description: "Rank filter size.",
|
|
592
|
-
min: 1,
|
|
593
|
-
max: 512
|
|
594
|
-
}
|
|
595
|
-
},
|
|
596
|
-
{
|
|
597
|
-
name: "rank",
|
|
598
|
-
options: {
|
|
599
|
-
type: "int",
|
|
600
|
-
default: 3,
|
|
601
|
-
title: "Rank",
|
|
602
|
-
description: "Rank filter rank.",
|
|
603
|
-
min: 1,
|
|
604
|
-
max: 512
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
]
|
|
608
|
-
},
|
|
609
|
-
{
|
|
610
|
-
nodeType: "lib.image.enhance.Sharpen",
|
|
611
|
-
title: "Sharpen",
|
|
612
|
-
description: "Enhances image detail by intensifying local pixel contrast.\n image, sharpen, clarity\n\n Use cases:\n - Improve clarity of photographs for print or display\n - Refine texture details in product photography\n - Enhance readability of text in document images",
|
|
613
|
-
basicFields: ["image"],
|
|
614
|
-
outputs: {
|
|
615
|
-
output: "image"
|
|
616
|
-
},
|
|
617
|
-
properties: [
|
|
618
|
-
{
|
|
619
|
-
name: "image",
|
|
620
|
-
options: {
|
|
621
|
-
type: "image",
|
|
622
|
-
default: {
|
|
623
|
-
type: "image",
|
|
624
|
-
uri: "",
|
|
625
|
-
asset_id: null,
|
|
626
|
-
data: null,
|
|
627
|
-
metadata: null
|
|
628
|
-
},
|
|
629
|
-
title: "Image",
|
|
630
|
-
description: "The image to sharpen."
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
]
|
|
634
|
-
},
|
|
635
|
-
{
|
|
636
|
-
nodeType: "lib.image.enhance.Sharpness",
|
|
637
|
-
title: "Sharpness",
|
|
638
|
-
description: "Adjusts image sharpness to enhance or reduce detail clarity.\n image, clarity, sharpness\n\n Use cases:\n - Enhance photo details for improved visual appeal\n - Refine images for object detection tasks\n - Correct slightly blurred images",
|
|
639
|
-
basicFields: ["image", "factor"],
|
|
640
|
-
outputs: {
|
|
641
|
-
output: "image"
|
|
642
|
-
},
|
|
643
|
-
properties: [
|
|
644
|
-
{
|
|
645
|
-
name: "image",
|
|
646
|
-
options: {
|
|
647
|
-
type: "image",
|
|
648
|
-
default: {
|
|
649
|
-
type: "image",
|
|
650
|
-
uri: "",
|
|
651
|
-
asset_id: null,
|
|
652
|
-
data: null,
|
|
653
|
-
metadata: null
|
|
654
|
-
},
|
|
655
|
-
title: "Image",
|
|
656
|
-
description: "The image to adjust the brightness for."
|
|
657
|
-
}
|
|
658
|
-
},
|
|
659
|
-
{
|
|
660
|
-
name: "factor",
|
|
661
|
-
options: {
|
|
662
|
-
type: "float",
|
|
663
|
-
default: 1,
|
|
664
|
-
title: "Factor",
|
|
665
|
-
description: "Factor to adjust the contrast. 1.0 means no change."
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
]
|
|
669
|
-
},
|
|
670
|
-
{
|
|
671
|
-
nodeType: "lib.image.enhance.UnsharpMask",
|
|
672
|
-
title: "Unsharp Mask",
|
|
673
|
-
description: "Sharpens images using the unsharp mask technique.\n image, sharpen, enhance\n\n Use cases:\n - Enhance edge definition in photographs\n - Improve perceived sharpness of digital artwork\n - Prepare images for high-quality printing or display",
|
|
674
|
-
basicFields: ["image", "radius", "percent", "threshold"],
|
|
675
|
-
outputs: {
|
|
676
|
-
output: "image"
|
|
677
|
-
},
|
|
678
|
-
properties: [
|
|
679
|
-
{
|
|
680
|
-
name: "image",
|
|
681
|
-
options: {
|
|
682
|
-
type: "image",
|
|
683
|
-
default: {
|
|
684
|
-
type: "image",
|
|
685
|
-
uri: "",
|
|
686
|
-
asset_id: null,
|
|
687
|
-
data: null,
|
|
688
|
-
metadata: null
|
|
689
|
-
},
|
|
690
|
-
title: "Image",
|
|
691
|
-
description: "The image to unsharp mask."
|
|
692
|
-
}
|
|
693
|
-
},
|
|
694
|
-
{
|
|
695
|
-
name: "radius",
|
|
696
|
-
options: {
|
|
697
|
-
type: "int",
|
|
698
|
-
default: 2,
|
|
699
|
-
title: "Radius",
|
|
700
|
-
description: "Unsharp mask radius.",
|
|
701
|
-
min: 0,
|
|
702
|
-
max: 512
|
|
703
|
-
}
|
|
704
|
-
},
|
|
705
|
-
{
|
|
706
|
-
name: "percent",
|
|
707
|
-
options: {
|
|
708
|
-
type: "int",
|
|
709
|
-
default: 150,
|
|
710
|
-
title: "Percent",
|
|
711
|
-
description: "Unsharp mask percent.",
|
|
712
|
-
min: 0,
|
|
713
|
-
max: 1000
|
|
714
|
-
}
|
|
715
|
-
},
|
|
716
|
-
{
|
|
717
|
-
name: "threshold",
|
|
718
|
-
options: {
|
|
719
|
-
type: "int",
|
|
720
|
-
default: 3,
|
|
721
|
-
title: "Threshold",
|
|
722
|
-
description: "Unsharp mask threshold.",
|
|
723
|
-
min: 0,
|
|
724
|
-
max: 512
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
]
|
|
728
|
-
}
|
|
729
|
-
];
|
|
730
|
-
export const LIB_IMAGE_ENHANCE_NODES = DESCRIPTORS.map(createEnhanceNode);
|
|
731
|
-
//# sourceMappingURL=lib-image-enhance.js.map
|