@srsergio/taptapp-ar 1.0.8 → 1.0.10

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.
Files changed (125) hide show
  1. package/dist/compiler/controller.d.ts +15 -22
  2. package/dist/compiler/controller.js +73 -92
  3. package/dist/compiler/detector/crop-detector.d.ts +20 -51
  4. package/dist/compiler/detector/crop-detector.js +21 -15
  5. package/dist/compiler/input-loader.d.ts +15 -17
  6. package/dist/compiler/input-loader.js +58 -76
  7. package/dist/compiler/matching/hamming-distance.js +4 -4
  8. package/dist/compiler/matching/matcher.js +2 -2
  9. package/dist/compiler/matching/matching.d.ts +2 -16
  10. package/dist/compiler/matching/matching.js +72 -60
  11. package/dist/compiler/offline-compiler.d.ts +14 -65
  12. package/dist/compiler/offline-compiler.js +86 -55
  13. package/dist/compiler/three.js +0 -4
  14. package/dist/compiler/tracker/tracker.d.ts +26 -12
  15. package/dist/compiler/tracker/tracker.js +158 -259
  16. package/dist/compiler/utils/worker-pool.d.ts +2 -1
  17. package/dist/compiler/utils/worker-pool.js +4 -8
  18. package/package.json +1 -1
  19. package/src/compiler/controller.js +71 -93
  20. package/src/compiler/detector/crop-detector.js +26 -15
  21. package/src/compiler/input-loader.js +62 -88
  22. package/src/compiler/matching/hamming-distance.js +4 -4
  23. package/src/compiler/matching/hough.js +1 -1
  24. package/src/compiler/matching/matcher.js +2 -2
  25. package/src/compiler/matching/matching.js +80 -72
  26. package/src/compiler/offline-compiler.js +92 -58
  27. package/src/compiler/three.js +0 -4
  28. package/src/compiler/tracker/tracker.js +183 -283
  29. package/src/compiler/utils/worker-pool.js +4 -8
  30. package/dist/compiler/compiler-base.d.ts +0 -8
  31. package/dist/compiler/compiler-base.js +0 -179
  32. package/dist/compiler/compiler.d.ts +0 -9
  33. package/dist/compiler/compiler.js +0 -24
  34. package/dist/compiler/compiler.worker.d.ts +0 -1
  35. package/dist/compiler/compiler.worker.js +0 -28
  36. package/dist/compiler/detector/detector.d.ts +0 -97
  37. package/dist/compiler/detector/detector.js +0 -1042
  38. package/dist/compiler/detector/kernels/cpu/binomialFilter.d.ts +0 -6
  39. package/dist/compiler/detector/kernels/cpu/binomialFilter.js +0 -50
  40. package/dist/compiler/detector/kernels/cpu/buildExtremas.d.ts +0 -6
  41. package/dist/compiler/detector/kernels/cpu/buildExtremas.js +0 -89
  42. package/dist/compiler/detector/kernels/cpu/computeExtremaAngles.d.ts +0 -7
  43. package/dist/compiler/detector/kernels/cpu/computeExtremaAngles.js +0 -79
  44. package/dist/compiler/detector/kernels/cpu/computeExtremaFreak.d.ts +0 -6
  45. package/dist/compiler/detector/kernels/cpu/computeExtremaFreak.js +0 -68
  46. package/dist/compiler/detector/kernels/cpu/computeFreakDescriptors.d.ts +0 -6
  47. package/dist/compiler/detector/kernels/cpu/computeFreakDescriptors.js +0 -57
  48. package/dist/compiler/detector/kernels/cpu/computeLocalization.d.ts +0 -6
  49. package/dist/compiler/detector/kernels/cpu/computeLocalization.js +0 -50
  50. package/dist/compiler/detector/kernels/cpu/computeOrientationHistograms.d.ts +0 -6
  51. package/dist/compiler/detector/kernels/cpu/computeOrientationHistograms.js +0 -100
  52. package/dist/compiler/detector/kernels/cpu/downsampleBilinear.d.ts +0 -6
  53. package/dist/compiler/detector/kernels/cpu/downsampleBilinear.js +0 -29
  54. package/dist/compiler/detector/kernels/cpu/extremaReduction.d.ts +0 -6
  55. package/dist/compiler/detector/kernels/cpu/extremaReduction.js +0 -50
  56. package/dist/compiler/detector/kernels/cpu/fakeShader.d.ts +0 -20
  57. package/dist/compiler/detector/kernels/cpu/fakeShader.js +0 -80
  58. package/dist/compiler/detector/kernels/cpu/index.d.ts +0 -1
  59. package/dist/compiler/detector/kernels/cpu/index.js +0 -25
  60. package/dist/compiler/detector/kernels/cpu/prune.d.ts +0 -7
  61. package/dist/compiler/detector/kernels/cpu/prune.js +0 -62
  62. package/dist/compiler/detector/kernels/cpu/smoothHistograms.d.ts +0 -6
  63. package/dist/compiler/detector/kernels/cpu/smoothHistograms.js +0 -47
  64. package/dist/compiler/detector/kernels/cpu/upsampleBilinear.d.ts +0 -6
  65. package/dist/compiler/detector/kernels/cpu/upsampleBilinear.js +0 -43
  66. package/dist/compiler/detector/kernels/index.d.ts +0 -1
  67. package/dist/compiler/detector/kernels/index.js +0 -2
  68. package/dist/compiler/detector/kernels/webgl/binomialFilter.d.ts +0 -6
  69. package/dist/compiler/detector/kernels/webgl/binomialFilter.js +0 -67
  70. package/dist/compiler/detector/kernels/webgl/buildExtremas.d.ts +0 -6
  71. package/dist/compiler/detector/kernels/webgl/buildExtremas.js +0 -101
  72. package/dist/compiler/detector/kernels/webgl/computeExtremaAngles.d.ts +0 -6
  73. package/dist/compiler/detector/kernels/webgl/computeExtremaAngles.js +0 -78
  74. package/dist/compiler/detector/kernels/webgl/computeExtremaFreak.d.ts +0 -6
  75. package/dist/compiler/detector/kernels/webgl/computeExtremaFreak.js +0 -86
  76. package/dist/compiler/detector/kernels/webgl/computeFreakDescriptors.d.ts +0 -6
  77. package/dist/compiler/detector/kernels/webgl/computeFreakDescriptors.js +0 -52
  78. package/dist/compiler/detector/kernels/webgl/computeLocalization.d.ts +0 -6
  79. package/dist/compiler/detector/kernels/webgl/computeLocalization.js +0 -58
  80. package/dist/compiler/detector/kernels/webgl/computeOrientationHistograms.d.ts +0 -6
  81. package/dist/compiler/detector/kernels/webgl/computeOrientationHistograms.js +0 -116
  82. package/dist/compiler/detector/kernels/webgl/downsampleBilinear.d.ts +0 -6
  83. package/dist/compiler/detector/kernels/webgl/downsampleBilinear.js +0 -46
  84. package/dist/compiler/detector/kernels/webgl/extremaReduction.d.ts +0 -6
  85. package/dist/compiler/detector/kernels/webgl/extremaReduction.js +0 -48
  86. package/dist/compiler/detector/kernels/webgl/index.d.ts +0 -1
  87. package/dist/compiler/detector/kernels/webgl/index.js +0 -25
  88. package/dist/compiler/detector/kernels/webgl/smoothHistograms.d.ts +0 -6
  89. package/dist/compiler/detector/kernels/webgl/smoothHistograms.js +0 -49
  90. package/dist/compiler/detector/kernels/webgl/upsampleBilinear.d.ts +0 -6
  91. package/dist/compiler/detector/kernels/webgl/upsampleBilinear.js +0 -56
  92. package/dist/compiler/tensorflow-setup.d.ts +0 -6
  93. package/dist/compiler/tensorflow-setup.js +0 -99
  94. package/src/compiler/compiler-base.js +0 -210
  95. package/src/compiler/compiler.js +0 -25
  96. package/src/compiler/compiler.worker.js +0 -30
  97. package/src/compiler/detector/detector.js +0 -1119
  98. package/src/compiler/detector/kernels/cpu/binomialFilter.js +0 -58
  99. package/src/compiler/detector/kernels/cpu/buildExtremas.js +0 -108
  100. package/src/compiler/detector/kernels/cpu/computeExtremaAngles.js +0 -91
  101. package/src/compiler/detector/kernels/cpu/computeExtremaFreak.js +0 -92
  102. package/src/compiler/detector/kernels/cpu/computeFreakDescriptors.js +0 -68
  103. package/src/compiler/detector/kernels/cpu/computeLocalization.js +0 -67
  104. package/src/compiler/detector/kernels/cpu/computeOrientationHistograms.js +0 -124
  105. package/src/compiler/detector/kernels/cpu/downsampleBilinear.js +0 -33
  106. package/src/compiler/detector/kernels/cpu/extremaReduction.js +0 -53
  107. package/src/compiler/detector/kernels/cpu/fakeShader.js +0 -88
  108. package/src/compiler/detector/kernels/cpu/index.js +0 -26
  109. package/src/compiler/detector/kernels/cpu/prune.js +0 -78
  110. package/src/compiler/detector/kernels/cpu/smoothHistograms.js +0 -57
  111. package/src/compiler/detector/kernels/cpu/upsampleBilinear.js +0 -51
  112. package/src/compiler/detector/kernels/index.js +0 -2
  113. package/src/compiler/detector/kernels/webgl/binomialFilter.js +0 -72
  114. package/src/compiler/detector/kernels/webgl/buildExtremas.js +0 -109
  115. package/src/compiler/detector/kernels/webgl/computeExtremaAngles.js +0 -82
  116. package/src/compiler/detector/kernels/webgl/computeExtremaFreak.js +0 -105
  117. package/src/compiler/detector/kernels/webgl/computeFreakDescriptors.js +0 -56
  118. package/src/compiler/detector/kernels/webgl/computeLocalization.js +0 -70
  119. package/src/compiler/detector/kernels/webgl/computeOrientationHistograms.js +0 -129
  120. package/src/compiler/detector/kernels/webgl/downsampleBilinear.js +0 -50
  121. package/src/compiler/detector/kernels/webgl/extremaReduction.js +0 -50
  122. package/src/compiler/detector/kernels/webgl/index.js +0 -26
  123. package/src/compiler/detector/kernels/webgl/smoothHistograms.js +0 -53
  124. package/src/compiler/detector/kernels/webgl/upsampleBilinear.js +0 -62
  125. package/src/compiler/tensorflow-setup.js +0 -116
@@ -1,210 +0,0 @@
1
- import { Detector } from "./detector/detector.js";
2
- import { buildImageList, buildTrackingImageList } from "./image-list.js";
3
- import { build as hierarchicalClusteringBuild } from "./matching/hierarchical-clustering.js";
4
- import * as msgpack from "@msgpack/msgpack";
5
- import { tf } from "./tensorflow-setup.js";
6
-
7
- // TODO: better compression method. now grey image saved in pixels, which could be larger than original image
8
-
9
- const CURRENT_VERSION = 2;
10
-
11
- class CompilerBase {
12
- constructor() {
13
- this.data = null;
14
- }
15
-
16
- // input images con formato {width, height, data}
17
- compileImageTargets(images, progressCallback) {
18
- return new Promise(async (resolve, reject) => {
19
- try {
20
- const targetImages = [];
21
- for (let i = 0; i < images.length; i++) {
22
- const img = images[i];
23
-
24
- if (!img || !img.width || !img.height || !img.data) {
25
- reject(
26
- new Error(
27
- `Imagen inválida en posición ${i}. Debe tener propiedades width, height y data.`,
28
- ),
29
- );
30
- return;
31
- }
32
-
33
- // Convertir a escala de grises si aún no lo está
34
- // Buffer alineado para optimización SIMD
35
- const greyImageData = new Uint8Array(
36
- new SharedArrayBuffer(Math.ceil((img.width * img.height) / 16) * 16),
37
- );
38
-
39
- // Si los datos ya están en escala de grises (1 byte por píxel)
40
- if (img.data.length === img.width * img.height) {
41
- greyImageData.set(img.data);
42
- }
43
- // Si los datos están en formato RGBA (4 bytes por píxel)
44
- else if (img.data.length === img.width * img.height * 4) {
45
- for (let j = 0; j < greyImageData.length; j++) {
46
- const offset = j * 4;
47
- greyImageData[j] = Math.floor(
48
- (img.data[offset] + img.data[offset + 1] + img.data[offset + 2]) / 3,
49
- );
50
- }
51
- }
52
- // Si los datos están en otro formato, rechazar
53
- else {
54
- reject(new Error(`Formato de datos de imagen no soportado en posición ${i}`));
55
- return;
56
- }
57
-
58
- const targetImage = {
59
- data: greyImageData,
60
- height: img.height,
61
- width: img.width,
62
- };
63
-
64
- targetImages.push(targetImage);
65
- }
66
-
67
- // compute matching data: 50% progress
68
- let matchingDataList;
69
- if (this.compileMatch) {
70
- matchingDataList = await this.compileMatch({
71
- progressCallback,
72
- targetImages,
73
- basePercent: 0,
74
- });
75
- } else {
76
- const percentPerImage = 50.0 / targetImages.length;
77
- let percent = 0.0;
78
- const matchingPromises = targetImages.map(async (targetImage, i) => {
79
- const imageList = buildImageList(targetImage);
80
- const percentPerAction = percentPerImage / imageList.length;
81
-
82
- const matchingData = await _extractMatchingFeatures(imageList, () => {
83
- percent += percentPerAction;
84
- progressCallback(percent);
85
- });
86
- return matchingData;
87
- });
88
- matchingDataList = await Promise.all(matchingPromises);
89
- }
90
-
91
- this.data = [];
92
- for (let i = 0; i < targetImages.length; i++) {
93
- this.data.push({
94
- targetImage: targetImages[i],
95
- imageList: buildImageList(targetImages[i]),
96
- matchingData: matchingDataList[i],
97
- });
98
- }
99
-
100
- for (let i = 0; i < targetImages.length; i++) {
101
- const trackingImageList = buildTrackingImageList(targetImages[i]);
102
- this.data[i].trackingImageList = trackingImageList;
103
- }
104
-
105
- const trackingDataList = await this.compileTrack({
106
- progressCallback,
107
- targetImages,
108
- basePercent: 50,
109
- });
110
-
111
- for (let i = 0; i < targetImages.length; i++) {
112
- this.data[i].trackingData = trackingDataList[i];
113
- }
114
- resolve(this.data);
115
- } catch (error) {
116
- reject(error);
117
- }
118
- });
119
- }
120
-
121
- // not exporting imageList because too large. rebuild this using targetImage
122
- exportData() {
123
- const dataList = [];
124
- for (let i = 0; i < this.data.length; i++) {
125
- dataList.push({
126
- //targetImage: this.data[i].targetImage,
127
- targetImage: {
128
- width: this.data[i].targetImage.width,
129
- height: this.data[i].targetImage.height,
130
- },
131
- trackingData: this.data[i].trackingData,
132
- matchingData: this.data[i].matchingData,
133
- });
134
- }
135
- const buffer = msgpack.encode({
136
- v: CURRENT_VERSION,
137
- dataList,
138
- });
139
- return buffer;
140
- }
141
-
142
- importData(buffer) {
143
- const content = msgpack.decode(new Uint8Array(buffer));
144
- //console.log("import", content);
145
-
146
- if (!content.v || content.v !== CURRENT_VERSION) {
147
- console.error("Your compiled .mind might be outdated. Please recompile");
148
- return [];
149
- }
150
- const { dataList } = content;
151
- this.data = [];
152
- for (let i = 0; i < dataList.length; i++) {
153
- this.data.push({
154
- targetImage: dataList[i].targetImage,
155
- trackingData: dataList[i].trackingData,
156
- matchingData: dataList[i].matchingData,
157
- });
158
- }
159
- return this.data;
160
- }
161
-
162
- createProcessCanvas() {
163
- // sub-class implements
164
- console.warn("missing createProcessCanvas implementation");
165
- }
166
-
167
- compileTrack() {
168
- // sub-class implements
169
- console.warn("missing compileTrack implementation");
170
- return Promise.resolve([]);
171
- }
172
- }
173
-
174
- const _extractMatchingFeatures = async (imageList, doneCallback) => {
175
- const keyframes = [];
176
- for (let i = 0; i < imageList.length; i++) {
177
- const image = imageList[i];
178
- // TODO: can improve performance greatly if reuse the same detector. just need to handle resizing the kernel outputs
179
- const detector = new Detector(image.width, image.height);
180
-
181
- await tf.nextFrame();
182
- tf.tidy(() => {
183
- //const inputT = tf.tensor(image.data, [image.data.length]).reshape([image.height, image.width]);
184
- const inputT = tf
185
- .tensor(image.data, [image.data.length], "float32")
186
- .reshape([image.height, image.width]);
187
- //const ps = detector.detectImageData(image.data);
188
- const { featurePoints: ps } = detector.detect(inputT);
189
-
190
- const maximaPoints = ps.filter((p) => p.maxima);
191
- const minimaPoints = ps.filter((p) => !p.maxima);
192
- const maximaPointsCluster = hierarchicalClusteringBuild({ points: maximaPoints });
193
- const minimaPointsCluster = hierarchicalClusteringBuild({ points: minimaPoints });
194
-
195
- keyframes.push({
196
- maximaPoints,
197
- minimaPoints,
198
- maximaPointsCluster,
199
- minimaPointsCluster,
200
- width: image.width,
201
- height: image.height,
202
- scale: image.scale,
203
- });
204
- doneCallback(i);
205
- });
206
- }
207
- return keyframes;
208
- };
209
-
210
- export { CompilerBase };
@@ -1,25 +0,0 @@
1
- import { CompilerBase } from "./compiler-base.js";
2
- import CompilerWorker from "./compiler.worker.js?worker&inline";
3
-
4
- export class Compiler extends CompilerBase {
5
- createProcessCanvas(img) {
6
- const processCanvas = document.createElement("canvas");
7
- processCanvas.width = img.width;
8
- processCanvas.height = img.height;
9
- return processCanvas;
10
- }
11
-
12
- compileTrack({ progressCallback, targetImages, basePercent }) {
13
- return new Promise((resolve) => {
14
- const worker = new CompilerWorker();
15
- worker.onmessage = (e) => {
16
- if (e.data.type === "progress") {
17
- progressCallback(basePercent + (e.data.percent * basePercent) / 100);
18
- } else if (e.data.type === "compileDone") {
19
- resolve(e.data.list);
20
- }
21
- };
22
- worker.postMessage({ type: "compile", targetImages });
23
- });
24
- }
25
- }
@@ -1,30 +0,0 @@
1
- import { extractTrackingFeatures } from "./tracker/extract-utils.js";
2
- import { buildTrackingImageList } from "./image-list.js";
3
-
4
- onmessage = (msg) => {
5
- const { data } = msg;
6
- if (data.type === "compile") {
7
- //console.log("worker compile...");
8
- const { targetImages } = data;
9
- const percentPerImage = 100.0 / targetImages.length;
10
- let percent = 0.0;
11
- const list = [];
12
- for (let i = 0; i < targetImages.length; i++) {
13
- const targetImage = targetImages[i];
14
- const imageList = buildTrackingImageList(targetImage);
15
- const percentPerAction = percentPerImage / imageList.length;
16
-
17
- //console.log("compiling tracking...", i);
18
- const trackingData = extractTrackingFeatures(imageList, () => {
19
- //console.log("done tracking", i, index);
20
- percent += percentPerAction;
21
- postMessage({ type: "progress", percent });
22
- });
23
- list.push(trackingData);
24
- }
25
- postMessage({
26
- type: "compileDone",
27
- list,
28
- });
29
- }
30
- };