image-js 0.35.2 → 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 (169) hide show
  1. package/index.d.ts +2 -9
  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 +2 -13
  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 +0 -14
  76. package/lib/image/operator/paintPolygons.js +0 -4
  77. package/lib/image/operator/paintPolyline.js +0 -7
  78. package/lib/image/operator/paintPolylines.js +0 -4
  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 +1 -1
@@ -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
  }
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = flipX;
7
-
8
7
  /**
9
8
  * Flip an image horizontally.
10
9
  * @memberof Image
@@ -15,14 +14,11 @@ function flipX() {
15
14
  this.checkProcessable('flipX', {
16
15
  bitDepth: [8, 16]
17
16
  });
18
-
19
17
  for (let i = 0; i < this.height; i++) {
20
18
  let offsetY = i * this.width * this.channels;
21
-
22
19
  for (let j = 0; j < Math.floor(this.width / 2); j++) {
23
20
  let posCurrent = j * this.channels + offsetY;
24
21
  let posOpposite = (this.width - j - 1) * this.channels + offsetY;
25
-
26
22
  for (let k = 0; k < this.channels; k++) {
27
23
  let tmp = this.data[posCurrent + k];
28
24
  this.data[posCurrent + k] = this.data[posOpposite + k];
@@ -30,6 +26,5 @@ function flipX() {
30
26
  }
31
27
  }
32
28
  }
33
-
34
29
  return this;
35
30
  }
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = flipY;
7
-
8
7
  /**
9
8
  * Flip an image vertically. The image
10
9
  * @memberof Image
@@ -15,12 +14,10 @@ function flipY() {
15
14
  this.checkProcessable('flipY', {
16
15
  bitDepth: [8, 16]
17
16
  });
18
-
19
17
  for (let i = 0; i < Math.floor(this.height / 2); i++) {
20
18
  for (let j = 0; j < this.width; j++) {
21
19
  let posCurrent = j * this.channels + i * this.width * this.channels;
22
20
  let posOpposite = j * this.channels + (this.height - 1 - i) * this.channels * this.width;
23
-
24
21
  for (let k = 0; k < this.channels; k++) {
25
22
  let tmp = this.data[posCurrent + k];
26
23
  this.data[posCurrent + k] = this.data[posOpposite + k];
@@ -28,6 +25,5 @@ function flipY() {
28
25
  }
29
26
  }
30
27
  }
31
-
32
28
  return this;
33
29
  }
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = gaussianFilter;
7
-
8
7
  /**
9
8
  * Apply a gaussian filter to the image.
10
9
  * @memberof Image
@@ -33,24 +32,20 @@ function gaussianFilter(options = {}) {
33
32
  algorithm: 'separable'
34
33
  });
35
34
  }
36
-
37
35
  function getKernel(radius, sigma) {
38
36
  const n = radius * 2 + 1;
39
37
  const kernel = new Array(n);
40
38
  const sigmaX = sigma ? sigma : ((n - 1) * 0.5 - 1) * 0.3 + 0.8;
41
39
  const scale2X = -0.5 / (sigmaX * sigmaX);
42
40
  let sum = 0;
43
-
44
41
  for (let i = 0; i < n; i++) {
45
42
  const x = i - radius;
46
43
  const t = Math.exp(scale2X * x * x);
47
44
  kernel[i] = t;
48
45
  sum += t;
49
46
  }
50
-
51
47
  for (let i = 0; i < n; i++) {
52
48
  kernel[i] /= sum;
53
49
  }
54
-
55
50
  return kernel;
56
51
  }
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = gradientFilter;
7
-
8
7
  var _convolution = _interopRequireDefault(require("../operator/convolution"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  /**
13
10
  * Direction of a gradient filter
14
11
  * @typedef {('x'|'y'|'xy')} GradientDirection
@@ -38,7 +35,6 @@ function gradientFilter(options = {}) {
38
35
  this.checkProcessable('gradientFilter', {
39
36
  bitDepth: [8, 16]
40
37
  });
41
-
42
38
  switch (direction) {
43
39
  case 'x':
44
40
  if (!kernelX) throw new Error('kernelX option is missing');
@@ -47,7 +43,6 @@ function gradientFilter(options = {}) {
47
43
  border: border,
48
44
  bitDepth
49
45
  });
50
-
51
46
  case 'y':
52
47
  if (!kernelY) throw new Error('kernelY option is missing');
53
48
  return _convolution.default.call(this, kernelY, {
@@ -55,30 +50,25 @@ function gradientFilter(options = {}) {
55
50
  border: border,
56
51
  bitDepth
57
52
  });
58
-
59
53
  case 'xy':
60
54
  {
61
55
  if (!kernelX) throw new Error('kernelX option is missing');
62
56
  if (!kernelY) throw new Error('kernelY option is missing');
63
-
64
57
  const gX = _convolution.default.call(this, kernelX, {
65
58
  channels: channels,
66
59
  border: border,
67
60
  bitDepth: 32
68
61
  });
69
-
70
62
  const gY = _convolution.default.call(this, kernelY, {
71
63
  channels: channels,
72
64
  border: border,
73
65
  bitDepth: 32
74
66
  });
75
-
76
67
  return gX.hypotenuse(gY, {
77
68
  bitDepth,
78
69
  channels: channels
79
70
  });
80
71
  }
81
-
82
72
  default:
83
73
  throw new Error(`Unknown parameter direction: ${direction}`);
84
74
  }
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = hypotenuse;
7
-
8
7
  var _channel = require("../../util/channel");
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
  * Calculate a new image that is the hypotenuse between the current image and the otherImage.
16
12
  * @memberof Image
@@ -29,34 +25,26 @@ function hypotenuse(otherImage, options = {}) {
29
25
  this.checkProcessable('hypotenuse', {
30
26
  bitDepth: [8, 16, 32]
31
27
  });
32
-
33
28
  if (this.width !== otherImage.width || this.height !== otherImage.height) {
34
29
  throw new Error('hypotenuse: both images must have the same size');
35
30
  }
36
-
37
31
  if (this.alpha !== otherImage.alpha || this.bitDepth !== otherImage.bitDepth) {
38
32
  throw new Error('hypotenuse: both images must have the same alpha and bitDepth');
39
33
  }
40
-
41
34
  if (this.channels !== otherImage.channels) {
42
35
  throw new Error('hypotenuse: both images must have the same number of channels');
43
36
  }
44
-
45
37
  let newImage = _Image.default.createFrom(this, {
46
38
  bitDepth: bitDepth
47
39
  });
48
-
49
40
  channels = (0, _channel.validateArrayOfChannels)(this, {
50
41
  channels: channels
51
42
  });
52
43
  let clamped = newImage.isClamped;
53
-
54
44
  for (let j = 0; j < channels.length; j++) {
55
45
  let c = channels[j];
56
-
57
46
  for (let i = c; i < this.data.length; i += this.channels) {
58
47
  let value = Math.hypot(this.data[i], otherImage.data[i]);
59
-
60
48
  if (clamped) {
61
49
  // we calculate the clamped result
62
50
  newImage.data[i] = Math.min(Math.max(Math.round(value), 0), newImage.maxValue);
@@ -65,6 +53,5 @@ function hypotenuse(otherImage, options = {}) {
65
53
  }
66
54
  }
67
55
  }
68
-
69
56
  return newImage;
70
57
  }
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = invert;
7
-
8
7
  var _copyAlphaChannel = _interopRequireDefault(require("../internal/copyAlphaChannel"));
9
-
10
8
  var _getOutputImage = require("../internal/getOutputImage");
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  /**
15
11
  * Invert the colors of an image
16
12
  * @memberof Image
@@ -25,26 +21,21 @@ function invert(options = {}) {
25
21
  bitDepth: [1, 8, 16]
26
22
  });
27
23
  const out = (0, _getOutputImage.getOutputImageOrInPlace)(this, options);
28
-
29
24
  if (this.bitDepth === 1) {
30
25
  invertBinary(this, out);
31
26
  } else {
32
27
  invertColor(this, out);
33
-
34
28
  if (this !== out) {
35
29
  (0, _copyAlphaChannel.default)(this, out);
36
30
  }
37
31
  }
38
-
39
32
  return out;
40
33
  }
41
-
42
34
  function invertBinary(image, out) {
43
35
  for (let i = 0; i < image.data.length; i++) {
44
36
  out.data[i] = ~image.data[i];
45
37
  }
46
38
  }
47
-
48
39
  function invertColor(image, out) {
49
40
  for (let pixel = 0; pixel < image.data.length; pixel += image.channels) {
50
41
  for (let c = 0; c < image.components; c++) {