image-js 0.35.1 → 0.35.3

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 (173) hide show
  1. package/index.d.ts +99 -35
  2. package/lib/browser/environment.js +0 -6
  3. package/lib/browser/worker/extend.js +0 -3
  4. package/lib/browser/worker/process/background.js +0 -12
  5. package/lib/browser/worker/worker.js +0 -17
  6. package/lib/image/Image.js +18 -51
  7. package/lib/image/compute/colorHistogram.js +0 -8
  8. package/lib/image/compute/countAlphaPixels.js +0 -3
  9. package/lib/image/compute/extendedPoints.js +2 -7
  10. package/lib/image/compute/histogram.js +6 -25
  11. package/lib/image/compute/localMaxima.js +2 -10
  12. package/lib/image/compute/max.js +0 -5
  13. package/lib/image/compute/mean.js +0 -4
  14. package/lib/image/compute/median.js +0 -4
  15. package/lib/image/compute/min.js +0 -5
  16. package/lib/image/compute/minimalBoundingRectangle.js +5 -18
  17. package/lib/image/compute/moment.js +0 -3
  18. package/lib/image/compute/monotoneChainConvexHull.js +0 -3
  19. package/lib/image/compute/points.js +0 -3
  20. package/lib/image/compute/relativePosition.js +2 -8
  21. package/lib/image/compute/sum.js +0 -5
  22. package/lib/image/core/bitMethods.js +0 -11
  23. package/lib/image/core/checkProcessable.js +0 -13
  24. package/lib/image/core/environment.js +0 -8
  25. package/lib/image/core/export.js +0 -38
  26. package/lib/image/core/extend.js +0 -13
  27. package/lib/image/core/getRGBAData.js +0 -15
  28. package/lib/image/core/kind.js +4 -28
  29. package/lib/image/core/kindNames.js +1 -0
  30. package/lib/image/core/load.js +1 -53
  31. package/lib/image/core/mediaTypes.js +0 -2
  32. package/lib/image/core/valueMethods.js +0 -13
  33. package/lib/image/extend.js +7 -83
  34. package/lib/image/filter/abs.js +0 -3
  35. package/lib/image/filter/add.js +2 -8
  36. package/lib/image/filter/background.js +0 -9
  37. package/lib/image/filter/blurFilter.js +0 -6
  38. package/lib/image/filter/divide.js +0 -8
  39. package/lib/image/filter/flipX.js +0 -5
  40. package/lib/image/filter/flipY.js +0 -4
  41. package/lib/image/filter/gaussianFilter.js +0 -5
  42. package/lib/image/filter/gradientFilter.js +0 -10
  43. package/lib/image/filter/hypotenuse.js +0 -13
  44. package/lib/image/filter/invert.js +0 -9
  45. package/lib/image/filter/level.js +1 -19
  46. package/lib/image/filter/medianFilter.js +0 -15
  47. package/lib/image/filter/multiply.js +0 -10
  48. package/lib/image/filter/scharrFilter.js +0 -4
  49. package/lib/image/filter/sobelFilter.js +0 -4
  50. package/lib/image/filter/subtract.js +0 -8
  51. package/lib/image/filter/subtractImage.js +0 -10
  52. package/lib/image/internal/checks.js +1 -9
  53. package/lib/image/internal/clamp.js +0 -1
  54. package/lib/image/internal/copy.js +0 -2
  55. package/lib/image/internal/copyAlphaChannel.js +0 -1
  56. package/lib/image/internal/getImageParameters.js +0 -1
  57. package/lib/image/internal/getOutputImage.js +1 -13
  58. package/lib/image/model/model.js +1 -1
  59. package/lib/image/morphology/blackHat.js +0 -5
  60. package/lib/image/morphology/close.js +0 -5
  61. package/lib/image/morphology/dilate.js +0 -40
  62. package/lib/image/morphology/erode.js +0 -40
  63. package/lib/image/morphology/morphologicalGradient.js +0 -5
  64. package/lib/image/morphology/open.js +0 -5
  65. package/lib/image/morphology/topHat.js +0 -5
  66. package/lib/image/operator/cannyEdge.js +0 -3
  67. package/lib/image/operator/convolution.js +9 -34
  68. package/lib/image/operator/convolutionSeparable.js +0 -10
  69. package/lib/image/operator/extract.js +4 -13
  70. package/lib/image/operator/floodFill.js +2 -15
  71. package/lib/image/operator/getSeparatedKernel.js +0 -2
  72. package/lib/image/operator/paintLabels.js +8 -19
  73. package/lib/image/operator/paintMasks.js +2 -12
  74. package/lib/image/operator/paintPoints.js +0 -9
  75. package/lib/image/operator/paintPolygon.js +1 -15
  76. package/lib/image/operator/paintPolygons.js +2 -6
  77. package/lib/image/operator/paintPolyline.js +0 -7
  78. package/lib/image/operator/paintPolylines.js +1 -5
  79. package/lib/image/roi/Roi.js +27 -207
  80. package/lib/image/roi/RoiLayer.js +1 -22
  81. package/lib/image/roi/RoiMap.js +5 -38
  82. package/lib/image/roi/creator/fromMask.js +4 -22
  83. package/lib/image/roi/creator/fromMaskConnectedComponentLabelingAlgorithm.js +2 -20
  84. package/lib/image/roi/creator/fromMaxima.js +10 -43
  85. package/lib/image/roi/creator/fromPoints.js +2 -10
  86. package/lib/image/roi/creator/fromWaterShed.js +6 -17
  87. package/lib/image/roi/feretDiameters.js +9 -21
  88. package/lib/image/roi/manager.js +30 -119
  89. package/lib/image/roi/util/commonBorderLength.js +5 -16
  90. package/lib/image/roi/util/mergeRoi.js +2 -21
  91. package/lib/image/transform/cmyk.js +0 -9
  92. package/lib/image/transform/colorDepth.js +0 -12
  93. package/lib/image/transform/crop.js +0 -20
  94. package/lib/image/transform/cropAlpha.js +0 -11
  95. package/lib/image/transform/grey.js +0 -16
  96. package/lib/image/transform/greyAlgorithms.js +1 -24
  97. package/lib/image/transform/hsl.js +0 -16
  98. package/lib/image/transform/hsv.js +0 -15
  99. package/lib/image/transform/insert.js +0 -6
  100. package/lib/image/transform/mask/huang.js +3 -18
  101. package/lib/image/transform/mask/intermodes.js +3 -14
  102. package/lib/image/transform/mask/isodata.js +0 -14
  103. package/lib/image/transform/mask/li.js +12 -42
  104. package/lib/image/transform/mask/mask.js +1 -13
  105. package/lib/image/transform/mask/maxEntropy.js +8 -25
  106. package/lib/image/transform/mask/mean.js +1 -3
  107. package/lib/image/transform/mask/minError.js +10 -21
  108. package/lib/image/transform/mask/minimum.js +0 -20
  109. package/lib/image/transform/mask/moments.js +4 -17
  110. package/lib/image/transform/mask/otsu.js +1 -7
  111. package/lib/image/transform/mask/percentile.js +0 -8
  112. package/lib/image/transform/mask/renyiEntropy.js +8 -34
  113. package/lib/image/transform/mask/shanbhag.js +8 -25
  114. package/lib/image/transform/mask/thresholdAlgorithms.js +1 -17
  115. package/lib/image/transform/mask/triangle.js +13 -29
  116. package/lib/image/transform/mask/yen.js +2 -14
  117. package/lib/image/transform/pad.js +0 -20
  118. package/lib/image/transform/resize/nearestNeighbor.js +0 -6
  119. package/lib/image/transform/resize/resize.js +0 -16
  120. package/lib/image/transform/rgba.js +0 -9
  121. package/lib/image/transform/rgba8.js +0 -3
  122. package/lib/image/transform/rotate.js +0 -29
  123. package/lib/image/transform/rotateFree.js +0 -31
  124. package/lib/image/transform/warping.js +2 -35
  125. package/lib/image/utility/combineChannels.js +0 -11
  126. package/lib/image/utility/getBestMatch.js +2 -13
  127. package/lib/image/utility/getChannel.js +0 -10
  128. package/lib/image/utility/getClosestCommonParent.js +6 -23
  129. package/lib/image/utility/getColumn.js +0 -4
  130. package/lib/image/utility/getIntersection.js +2 -18
  131. package/lib/image/utility/getMatrix.js +0 -7
  132. package/lib/image/utility/getPixelsArray.js +0 -5
  133. package/lib/image/utility/getPixelsGrid.js +0 -11
  134. package/lib/image/utility/getRow.js +0 -4
  135. package/lib/image/utility/getSimilarity.js +3 -17
  136. package/lib/image/utility/getThreshold.js +0 -4
  137. package/lib/image/utility/setBorder.js +0 -16
  138. package/lib/image/utility/setChannel.js +0 -6
  139. package/lib/image/utility/setMatrix.js +0 -6
  140. package/lib/image/utility/split.js +2 -15
  141. package/lib/index.js +0 -12
  142. package/lib/kernel/kernel.js +0 -3
  143. package/lib/kernel/laplacianOfGaussian.js +1 -7
  144. package/lib/node_modules/test/binary.js +0 -3
  145. package/lib/node_modules/test/oneRoi.js +0 -2
  146. package/lib/stack/Stack.js +2 -35
  147. package/lib/stack/compute/histogram.js +0 -4
  148. package/lib/stack/compute/histograms.js +0 -4
  149. package/lib/stack/compute/max.js +0 -3
  150. package/lib/stack/compute/median.js +0 -4
  151. package/lib/stack/compute/min.js +0 -3
  152. package/lib/stack/extend.js +1 -11
  153. package/lib/stack/transform/matchAndCrop.js +6 -19
  154. package/lib/stack/utility/averageImage.js +0 -9
  155. package/lib/stack/utility/maxImage.js +0 -7
  156. package/lib/stack/utility/minImage.js +0 -7
  157. package/lib/util/Shape.js +3 -40
  158. package/lib/util/base64.js +3 -14
  159. package/lib/util/channel.js +1 -35
  160. package/lib/util/color.js +1 -25
  161. package/lib/util/converter.js +1 -13
  162. package/lib/util/deepValue.js +0 -3
  163. package/lib/util/histogram.js +1 -12
  164. package/lib/util/kernel.js +2 -12
  165. package/lib/util/matrix.js +0 -13
  166. package/lib/util/points.js +12 -35
  167. package/lib/util/value.js +0 -7
  168. package/lib/util/zerosMatrix.js +0 -3
  169. package/package.json +2 -2
  170. package/src/image/operator/paintLabels.js +6 -6
  171. package/src/image/operator/paintPolygon.js +1 -1
  172. package/src/image/operator/paintPolygons.js +2 -2
  173. package/src/image/operator/paintPolylines.js +1 -1
@@ -4,30 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = load;
7
-
8
7
  var _fastJpeg = require("fast-jpeg");
9
-
10
8
  var _fastPng = require("fast-png");
11
-
12
9
  var _imageType = _interopRequireDefault(require("image-type"));
13
-
14
10
  var _jpegJs = require("jpeg-js");
15
-
16
11
  var _tiff = require("tiff");
17
-
18
12
  var _Stack = _interopRequireDefault(require("../../stack/Stack"));
19
-
20
13
  var _base = require("../../util/base64");
21
-
22
14
  var _Image = _interopRequireDefault(require("../Image"));
23
-
24
15
  var _model = require("../model/model");
25
-
26
16
  var _environment = require("./environment");
27
-
28
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
18
  const isDataURL = /^data:[a-z]+\/(?:[a-z]+);base64,/;
19
+
31
20
  /**
32
21
  * Load an image
33
22
  * @memberof Image
@@ -42,7 +31,6 @@ const isDataURL = /^data:[a-z]+\/(?:[a-z]+);base64,/;
42
31
  * @example
43
32
  * const image = await Image.load('https://example.com/image.png');
44
33
  */
45
-
46
34
  function load(image, options) {
47
35
  if (typeof image === 'string') {
48
36
  return loadURL(image, options);
@@ -54,28 +42,21 @@ function load(image, options) {
54
42
  throw new Error('argument to "load" must be a string or buffer.');
55
43
  }
56
44
  }
57
-
58
45
  function loadBinary(image, base64Url, ignorePalette) {
59
46
  const type = (0, _imageType.default)(image);
60
-
61
47
  if (type) {
62
48
  switch (type.mime) {
63
49
  case 'image/png':
64
50
  return loadPNG(image);
65
-
66
51
  case 'image/jpeg':
67
52
  return loadJPEG(image);
68
-
69
53
  case 'image/tiff':
70
54
  return loadTIFF(image, ignorePalette);
71
-
72
55
  default:
73
56
  return loadGeneric(getBase64(type.mime));
74
57
  }
75
58
  }
76
-
77
59
  return loadGeneric(getBase64('application/octet-stream'));
78
-
79
60
  function getBase64(type) {
80
61
  if (base64Url) {
81
62
  return base64Url;
@@ -84,47 +65,39 @@ function loadBinary(image, base64Url, ignorePalette) {
84
65
  }
85
66
  }
86
67
  }
87
-
88
68
  function loadURL(url, options) {
89
69
  const dataURL = url.slice(0, 64).match(isDataURL);
90
70
  let binaryDataP;
91
-
92
71
  if (dataURL !== null) {
93
72
  binaryDataP = Promise.resolve((0, _base.decode)(url.slice(dataURL[0].length)));
94
73
  } else {
95
74
  binaryDataP = (0, _environment.fetchBinary)(url, options);
96
75
  }
97
-
98
76
  return binaryDataP.then(binaryData => {
99
77
  const uint8 = new Uint8Array(binaryData);
100
78
  return loadBinary(uint8, dataURL ? url : undefined, options && options.ignorePalette);
101
79
  });
102
80
  }
103
-
104
81
  function loadPNG(data) {
105
82
  const png = (0, _fastPng.decode)(data);
106
83
  let channels = png.channels;
107
84
  let components;
108
85
  let alpha = 0;
109
-
110
86
  if (channels === 2 || channels === 4) {
111
87
  components = channels - 1;
112
88
  alpha = 1;
113
89
  } else {
114
90
  components = channels;
115
91
  }
116
-
117
92
  if (png.palette) {
118
93
  return loadPNGFromPalette(png);
119
94
  }
120
-
121
95
  return new _Image.default(png.width, png.height, png.data, {
122
96
  components,
123
97
  alpha,
124
98
  bitDepth: png.depth
125
99
  });
126
100
  }
127
-
128
101
  function loadPNGFromPalette(png) {
129
102
  const pixels = png.width * png.height;
130
103
  const channels = png.palette[0].length;
@@ -134,40 +107,32 @@ function loadPNGFromPalette(png) {
134
107
  const mask = parseInt('1'.repeat(png.depth), 2);
135
108
  const hasAlpha = channels === 4;
136
109
  let dataIndex = 0;
137
-
138
110
  for (let i = 0; i < pixels; i++) {
139
111
  const index = Math.floor(i / factor);
140
112
  let value = png.data[index];
141
-
142
113
  if (png.depth < 8) {
143
114
  value = value >>> png.depth * (pixelsPerByte - 1 - i % pixelsPerByte) & mask;
144
115
  }
145
-
146
116
  const paletteValue = png.palette[value];
147
117
  data[dataIndex++] = paletteValue[0];
148
118
  data[dataIndex++] = paletteValue[1];
149
119
  data[dataIndex++] = paletteValue[2];
150
-
151
120
  if (hasAlpha) {
152
121
  data[dataIndex++] = paletteValue[3];
153
122
  }
154
123
  }
155
-
156
124
  return new _Image.default(png.width, png.height, data, {
157
125
  components: 3,
158
126
  alpha: hasAlpha,
159
127
  bitDepth: 8
160
128
  });
161
129
  }
162
-
163
130
  function loadJPEG(data) {
164
131
  const decodedExif = (0, _fastJpeg.decode)(data);
165
132
  let meta;
166
-
167
133
  if (decodedExif.exif) {
168
134
  meta = getMetadata(decodedExif.exif);
169
135
  }
170
-
171
136
  const jpeg = (0, _jpegJs.decode)(data, {
172
137
  useTArray: true,
173
138
  maxMemoryUsageInMB: 1024
@@ -175,10 +140,8 @@ function loadJPEG(data) {
175
140
  let image = new _Image.default(jpeg.width, jpeg.height, jpeg.data, {
176
141
  meta
177
142
  });
178
-
179
143
  if (meta && meta.tiff.tags.Orientation) {
180
144
  const orientation = meta.tiff.tags.Orientation;
181
-
182
145
  if (orientation > 2) {
183
146
  image = image.rotate({
184
147
  3: 180,
@@ -189,18 +152,14 @@ function loadJPEG(data) {
189
152
  8: 270
190
153
  }[orientation]);
191
154
  }
192
-
193
155
  if ([2, 4, 5, 7].includes(orientation)) {
194
156
  image = image.flipX();
195
157
  }
196
158
  }
197
-
198
159
  return image;
199
160
  }
200
-
201
161
  function loadTIFF(data, ignorePalette) {
202
162
  let result = (0, _tiff.decode)(data);
203
-
204
163
  if (result.length === 1) {
205
164
  return getImageFromIFD(result[0], ignorePalette);
206
165
  } else {
@@ -209,7 +168,6 @@ function loadTIFF(data, ignorePalette) {
209
168
  }));
210
169
  }
211
170
  }
212
-
213
171
  function getMetadata(image) {
214
172
  const metadata = {
215
173
  tiff: {
@@ -217,25 +175,20 @@ function getMetadata(image) {
217
175
  tags: image.map
218
176
  }
219
177
  };
220
-
221
178
  if (image.exif) {
222
179
  metadata.exif = image.exif;
223
180
  }
224
-
225
181
  if (image.gps) {
226
182
  metadata.gps = image.gps;
227
183
  }
228
-
229
184
  return metadata;
230
185
  }
231
-
232
186
  function getImageFromIFD(image, ignorePalette) {
233
187
  if (!ignorePalette && image.type === 3) {
234
188
  // Palette
235
189
  const data = new Uint16Array(3 * image.width * image.height);
236
190
  const palette = image.palette;
237
191
  let ptr = 0;
238
-
239
192
  for (let i = 0; i < image.data.length; i++) {
240
193
  const index = image.data[i];
241
194
  const color = palette[index];
@@ -243,7 +196,6 @@ function getImageFromIFD(image, ignorePalette) {
243
196
  data[ptr++] = color[1];
244
197
  data[ptr++] = color[2];
245
198
  }
246
-
247
199
  return new _Image.default(image.width, image.height, data, {
248
200
  components: 3,
249
201
  alpha: image.alpha,
@@ -261,12 +213,10 @@ function getImageFromIFD(image, ignorePalette) {
261
213
  });
262
214
  }
263
215
  }
264
-
265
216
  function loadGeneric(url, options) {
266
217
  options = options || {};
267
218
  return new Promise(function (resolve, reject) {
268
219
  let image = new _environment.DOMImage();
269
-
270
220
  image.onload = function () {
271
221
  let w = image.width;
272
222
  let h = image.height;
@@ -276,11 +226,9 @@ function loadGeneric(url, options) {
276
226
  let data = ctx.getImageData(0, 0, w, h).data;
277
227
  resolve(new _Image.default(w, h, data, options));
278
228
  };
279
-
280
229
  image.onerror = function () {
281
230
  reject(new Error(`Could not load ${url}`));
282
231
  };
283
-
284
232
  image.src = url;
285
233
  });
286
234
  }
@@ -4,11 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getType = getType;
7
-
8
7
  function getType(type) {
9
8
  if (!type.includes('/')) {
10
9
  type = `image/${type}`;
11
10
  }
12
-
13
11
  return type;
14
12
  }
@@ -17,7 +17,6 @@ const valueMethods = {
17
17
  getValueXY(x, y, channel) {
18
18
  return this.data[(y * this.width + x) * this.channels + channel];
19
19
  },
20
-
21
20
  /**
22
21
  * Set the value of specific pixel channel
23
22
  * @memberof Image
@@ -33,7 +32,6 @@ const valueMethods = {
33
32
  this.computed = null;
34
33
  return this;
35
34
  },
36
-
37
35
  /**
38
36
  * Get the value of specific pixel channel
39
37
  * @memberof Image
@@ -45,7 +43,6 @@ const valueMethods = {
45
43
  getValue(index, channel) {
46
44
  return this.data[index * this.channels + channel];
47
45
  },
48
-
49
46
  /**
50
47
  * Set the value of specific pixel channel
51
48
  * @memberof Image
@@ -60,7 +57,6 @@ const valueMethods = {
60
57
  this.computed = null;
61
58
  return this;
62
59
  },
63
-
64
60
  /**
65
61
  * Get the value of an entire pixel
66
62
  * @memberof Image
@@ -72,7 +68,6 @@ const valueMethods = {
72
68
  getPixelXY(x, y) {
73
69
  return this.getPixel(y * this.width + x);
74
70
  },
75
-
76
71
  /**
77
72
  * Set the value of an entire pixel
78
73
  * @memberof Image
@@ -85,7 +80,6 @@ const valueMethods = {
85
80
  setPixelXY(x, y, value) {
86
81
  return this.setPixel(y * this.width + x, value);
87
82
  },
88
-
89
83
  /**
90
84
  * Get the value of an entire pixel
91
85
  * @memberof Image
@@ -96,14 +90,11 @@ const valueMethods = {
96
90
  getPixel(index) {
97
91
  const value = new Array(this.channels);
98
92
  const target = index * this.channels;
99
-
100
93
  for (let i = 0; i < this.channels; i++) {
101
94
  value[i] = this.data[target + i];
102
95
  }
103
-
104
96
  return value;
105
97
  },
106
-
107
98
  /**
108
99
  * Set the value of an entire pixel
109
100
  * @memberof Image
@@ -114,17 +105,13 @@ const valueMethods = {
114
105
  */
115
106
  setPixel(index, value) {
116
107
  const target = index * this.channels;
117
-
118
108
  for (let i = 0; i < value.length; i++) {
119
109
  this.data[target + i] = value[i];
120
110
  }
121
-
122
111
  this.computed = null;
123
112
  return this;
124
113
  }
125
-
126
114
  };
127
-
128
115
  function setValueMethods(Image) {
129
116
  for (const i in valueMethods) {
130
117
  Image.prototype[i] = valueMethods[i];
@@ -4,178 +4,102 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = extend;
7
-
8
7
  var _abs = _interopRequireDefault(require("./filter/abs"));
9
-
10
8
  var _invert = _interopRequireDefault(require("./filter/invert"));
11
-
12
9
  var _flipX = _interopRequireDefault(require("./filter/flipX"));
13
-
14
10
  var _flipY = _interopRequireDefault(require("./filter/flipY"));
15
-
16
11
  var _blurFilter = _interopRequireDefault(require("./filter/blurFilter"));
17
-
18
12
  var _medianFilter = _interopRequireDefault(require("./filter/medianFilter"));
19
-
20
13
  var _gaussianFilter = _interopRequireDefault(require("./filter/gaussianFilter"));
21
-
22
14
  var _sobelFilter = _interopRequireDefault(require("./filter/sobelFilter"));
23
-
24
15
  var _scharrFilter = _interopRequireDefault(require("./filter/scharrFilter"));
25
-
26
16
  var _gradientFilter = _interopRequireDefault(require("./filter/gradientFilter"));
27
-
28
17
  var _level = _interopRequireDefault(require("./filter/level"));
29
-
30
18
  var _add = _interopRequireDefault(require("./filter/add"));
31
-
32
19
  var _subtract = _interopRequireDefault(require("./filter/subtract"));
33
-
34
20
  var _subtractImage = _interopRequireDefault(require("./filter/subtractImage"));
35
-
36
21
  var _hypotenuse = _interopRequireDefault(require("./filter/hypotenuse"));
37
-
38
22
  var _multiply = _interopRequireDefault(require("./filter/multiply"));
39
-
40
23
  var _divide = _interopRequireDefault(require("./filter/divide"));
41
-
42
24
  var _background = _interopRequireDefault(require("./filter/background"));
43
-
44
25
  var _dilate = _interopRequireDefault(require("./morphology/dilate"));
45
-
46
26
  var _erode = _interopRequireDefault(require("./morphology/erode"));
47
-
48
27
  var _open = _interopRequireDefault(require("./morphology/open"));
49
-
50
28
  var _close = _interopRequireDefault(require("./morphology/close"));
51
-
52
29
  var _topHat = _interopRequireDefault(require("./morphology/topHat"));
53
-
54
30
  var _blackHat = _interopRequireDefault(require("./morphology/blackHat"));
55
-
56
31
  var _morphologicalGradient = _interopRequireDefault(require("./morphology/morphologicalGradient"));
57
-
58
32
  var _warping = _interopRequireDefault(require("./transform/warping"));
59
-
60
33
  var _crop = _interopRequireDefault(require("./transform/crop"));
61
-
62
34
  var _cropAlpha = _interopRequireDefault(require("./transform/cropAlpha"));
63
-
64
35
  var _resize = _interopRequireDefault(require("./transform/resize/resize"));
65
-
66
36
  var _hsv = _interopRequireDefault(require("./transform/hsv"));
67
-
68
37
  var _hsl = _interopRequireDefault(require("./transform/hsl"));
69
-
70
38
  var _cmyk = _interopRequireDefault(require("./transform/cmyk"));
71
-
72
39
  var _rgba = _interopRequireDefault(require("./transform/rgba8"));
73
-
74
40
  var _grey = _interopRequireDefault(require("./transform/grey"));
75
-
76
41
  var _mask = _interopRequireDefault(require("./transform/mask/mask"));
77
-
78
42
  var _pad = _interopRequireDefault(require("./transform/pad"));
79
-
80
43
  var _colorDepth = _interopRequireDefault(require("./transform/colorDepth"));
81
-
82
44
  var _rotate = require("./transform/rotate");
83
-
84
45
  var _insert = _interopRequireDefault(require("./transform/insert"));
85
-
86
46
  var _setBorder = _interopRequireDefault(require("./utility/setBorder"));
87
-
88
47
  var _split = _interopRequireDefault(require("./utility/split"));
89
-
90
48
  var _getChannel = _interopRequireDefault(require("./utility/getChannel"));
91
-
92
49
  var _combineChannels = _interopRequireDefault(require("./utility/combineChannels"));
93
-
94
50
  var _setChannel = _interopRequireDefault(require("./utility/setChannel"));
95
-
96
51
  var _getSimilarity = _interopRequireDefault(require("./utility/getSimilarity"));
97
-
98
52
  var _getPixelsGrid = _interopRequireDefault(require("./utility/getPixelsGrid"));
99
-
100
53
  var _getBestMatch = _interopRequireDefault(require("./utility/getBestMatch"));
101
-
102
54
  var _getRow = _interopRequireDefault(require("./utility/getRow"));
103
-
104
55
  var _getColumn = _interopRequireDefault(require("./utility/getColumn"));
105
-
106
56
  var _getMatrix = _interopRequireDefault(require("./utility/getMatrix"));
107
-
108
57
  var _setMatrix = _interopRequireDefault(require("./utility/setMatrix"));
109
-
110
58
  var _getPixelsArray = _interopRequireDefault(require("./utility/getPixelsArray"));
111
-
112
59
  var _getIntersection = _interopRequireDefault(require("./utility/getIntersection"));
113
-
114
60
  var _getClosestCommonParent = _interopRequireDefault(require("./utility/getClosestCommonParent"));
115
-
116
61
  var _getThreshold = _interopRequireDefault(require("./utility/getThreshold"));
117
-
118
62
  var _cannyEdge = _interopRequireDefault(require("./operator/cannyEdge"));
119
-
120
63
  var _convolution = _interopRequireDefault(require("./operator/convolution"));
121
-
122
64
  var _extract = _interopRequireDefault(require("./operator/extract"));
123
-
124
65
  var _floodFill = _interopRequireDefault(require("./operator/floodFill"));
125
-
126
66
  var _paintLabels = _interopRequireDefault(require("./operator/paintLabels"));
127
-
128
67
  var _paintMasks = _interopRequireDefault(require("./operator/paintMasks"));
129
-
130
68
  var _paintPoints = _interopRequireDefault(require("./operator/paintPoints"));
131
-
132
69
  var _paintPolyline = _interopRequireDefault(require("./operator/paintPolyline"));
133
-
134
70
  var _paintPolylines = _interopRequireDefault(require("./operator/paintPolylines"));
135
-
136
71
  var _paintPolygon = _interopRequireDefault(require("./operator/paintPolygon"));
137
-
138
72
  var _paintPolygons = _interopRequireDefault(require("./operator/paintPolygons"));
139
-
140
73
  var _histogram = require("./compute/histogram");
141
-
142
74
  var _colorHistogram = _interopRequireDefault(require("./compute/colorHistogram"));
143
-
144
75
  var _min = _interopRequireDefault(require("./compute/min"));
145
-
146
76
  var _max = _interopRequireDefault(require("./compute/max"));
147
-
148
77
  var _sum = _interopRequireDefault(require("./compute/sum"));
149
-
150
78
  var _moment = _interopRequireDefault(require("./compute/moment"));
151
-
152
79
  var _localMaxima = _interopRequireDefault(require("./compute/localMaxima"));
153
-
154
80
  var _mean = _interopRequireDefault(require("./compute/mean"));
155
-
156
81
  var _median = _interopRequireDefault(require("./compute/median"));
157
-
158
82
  var _points = _interopRequireDefault(require("./compute/points"));
159
-
160
83
  var _extendedPoints = _interopRequireDefault(require("./compute/extendedPoints"));
161
-
162
84
  var _relativePosition = _interopRequireDefault(require("./compute/relativePosition"));
163
-
164
85
  var _countAlphaPixels = _interopRequireDefault(require("./compute/countAlphaPixels"));
165
-
166
86
  var _monotoneChainConvexHull = _interopRequireDefault(require("./compute/monotoneChainConvexHull"));
167
-
168
87
  var _minimalBoundingRectangle = _interopRequireDefault(require("./compute/minimalBoundingRectangle"));
169
-
170
88
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
171
-
172
89
  /* eslint-disable import/order */
90
+
173
91
  // filters
92
+
174
93
  // morphology transforms
94
+
175
95
  // transforms
96
+
176
97
  // utility
98
+
177
99
  // operators
100
+
178
101
  // computers
102
+
179
103
  function extend(Image) {
180
104
  let inPlace = {
181
105
  inPlace: true
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = abs;
7
-
8
7
  var _getOutputImage = require("../internal/getOutputImage");
9
-
10
8
  /**
11
9
  * Calculate the absolute values of an image.
12
10
  * Only works on 32-bit images.
@@ -25,7 +23,6 @@ function abs(options = {}) {
25
23
  absolute(this, out);
26
24
  return out;
27
25
  }
28
-
29
26
  function absolute(image, out) {
30
27
  for (let i = 0; i < image.data.length; i++) {
31
28
  out.data[i] = Math.abs(image.data[i]);
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = add;
7
-
8
7
  var _channel = require("../../util/channel");
9
-
10
8
  var _value = require("../../util/value");
11
-
12
9
  /**
13
10
  * Add a specific integer on the specified points of the specified channels
14
11
  * @memberof Image
@@ -27,12 +24,12 @@ function add(value, options = {}) {
27
24
  channels = (0, _channel.validateArrayOfChannels)(this, {
28
25
  channels: channels
29
26
  });
30
- value = (0, _value.checkNumberArray)(value); // we allow 3 cases, the value may be an array (1D), an image or a single value
27
+ value = (0, _value.checkNumberArray)(value);
31
28
 
29
+ // we allow 3 cases, the value may be an array (1D), an image or a single value
32
30
  if (!isNaN(value)) {
33
31
  for (let j = 0; j < channels.length; j++) {
34
32
  let c = channels[j];
35
-
36
33
  for (let i = 0; i < this.data.length; i += this.channels) {
37
34
  this.data[i + c] = Math.min(this.maxValue, this.data[i + c] + value >> 0);
38
35
  }
@@ -41,15 +38,12 @@ function add(value, options = {}) {
41
38
  if (this.data.length !== value.length) {
42
39
  throw new Error('add: the data size is different');
43
40
  }
44
-
45
41
  for (let j = 0; j < channels.length; j++) {
46
42
  let c = channels[j];
47
-
48
43
  for (let i = 0; i < this.data.length; i += this.channels) {
49
44
  this.data[i + c] = Math.max(0, Math.min(this.maxValue, this.data[i + c] + value[i + c] >> 0));
50
45
  }
51
46
  }
52
47
  }
53
-
54
48
  return this;
55
49
  }
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = background;
7
-
8
7
  var _mlRegression = require("ml-regression");
9
-
10
8
  var _Image = _interopRequireDefault(require("../Image"));
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  /**
15
11
  * @memberof Image
16
12
  * @instance
@@ -22,20 +18,15 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
18
  function background(coordinates, values, options) {
23
19
  const model = new _mlRegression.KernelRidgeRegression(coordinates, values, options);
24
20
  const allCoordinates = new Array(this.size);
25
-
26
21
  for (let i = 0; i < this.width; i++) {
27
22
  for (let j = 0; j < this.height; j++) {
28
23
  allCoordinates[j * this.width + i] = [i, j];
29
24
  }
30
25
  }
31
-
32
26
  const result = model.predict(allCoordinates);
33
-
34
27
  const background = _Image.default.createFrom(this);
35
-
36
28
  for (let i = 0; i < this.size; i++) {
37
29
  background.data[i] = Math.min(this.maxValue, Math.max(0, result[i][0]));
38
30
  }
39
-
40
31
  return background;
41
32
  }
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = blurFilter;
7
-
8
7
  /**
9
8
  * Blurs the image by averaging the neighboring pixels.
10
9
  * @memberof Image
@@ -17,21 +16,16 @@ function blurFilter(options = {}) {
17
16
  const {
18
17
  radius = 1
19
18
  } = options;
20
-
21
19
  if (radius < 1) {
22
20
  throw new Error('radius must be greater than 1');
23
21
  }
24
-
25
22
  const n = 2 * radius + 1;
26
23
  const kernel = new Array(n);
27
-
28
24
  for (let i = 0; i < n; i++) {
29
25
  kernel[i] = new Array(n);
30
-
31
26
  for (let j = 0; j < n; j++) {
32
27
  kernel[i][j] = 1 / (n * n);
33
28
  }
34
29
  }
35
-
36
30
  return this.convolution(kernel);
37
31
  }
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = divide;
7
-
8
7
  var _channel = require("../../util/channel");
9
-
10
8
  var _value = require("../../util/value");
11
-
12
9
  /**
13
10
  * @memberof Image
14
11
  * @instance
@@ -27,11 +24,9 @@ function divide(value, options = {}) {
27
24
  channels: channels
28
25
  });
29
26
  value = (0, _value.checkNumberArray)(value);
30
-
31
27
  if (!isNaN(value)) {
32
28
  for (let j = 0; j < channels.length; j++) {
33
29
  let c = channels[j];
34
-
35
30
  for (let i = 0; i < this.data.length; i += this.channels) {
36
31
  this.data[i + c] = Math.min(this.maxValue, this.data[i + c] / value >> 0);
37
32
  }
@@ -40,15 +35,12 @@ function divide(value, options = {}) {
40
35
  if (this.data.length !== value.length) {
41
36
  throw new Error('divide: the: the data size is different');
42
37
  }
43
-
44
38
  for (let j = 0; j < channels.length; j++) {
45
39
  let c = channels[j];
46
-
47
40
  for (let i = 0; i < this.data.length; i += this.channels) {
48
41
  this.data[i + c] = Math.max(0, Math.min(this.maxValue, this.data[i + c] / value[i + c] >> 0));
49
42
  }
50
43
  }
51
44
  }
52
-
53
45
  return this;
54
46
  }