image-js 1.0.0-alpha.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1476) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +37 -0
  3. package/dist/image-js.esm.js +33179 -0
  4. package/dist/image-js.esm.js.map +1 -0
  5. package/dist/image-js.esm.min.js +3 -0
  6. package/dist/image-js.esm.min.js.map +1 -0
  7. package/dist/image-js.umd.js +33324 -0
  8. package/dist/image-js.umd.js.map +1 -0
  9. package/dist/image-js.umd.min.js +3 -0
  10. package/dist/image-js.umd.min.js.map +1 -0
  11. package/dist-types/image-js.d.ts +4260 -0
  12. package/lib/Image.d.ts +447 -71
  13. package/lib/Image.d.ts.map +1 -1
  14. package/lib/Image.js +751 -127
  15. package/lib/Image.js.map +1 -1
  16. package/lib/Mask.d.ts +378 -0
  17. package/lib/Mask.d.ts.map +1 -0
  18. package/lib/Mask.js +557 -0
  19. package/lib/Mask.js.map +1 -0
  20. package/lib/Stack.d.ts +127 -0
  21. package/lib/Stack.d.ts.map +1 -0
  22. package/lib/Stack.js +165 -0
  23. package/lib/Stack.js.map +1 -0
  24. package/lib/align/affineTransfrom/affineFitFunction.d.ts +10 -0
  25. package/lib/align/affineTransfrom/affineFitFunction.d.ts.map +1 -0
  26. package/lib/align/affineTransfrom/affineFitFunction.js +21 -0
  27. package/lib/align/affineTransfrom/affineFitFunction.js.map +1 -0
  28. package/lib/align/affineTransfrom/applyAffineTransform.d.ts +10 -0
  29. package/lib/align/affineTransfrom/applyAffineTransform.d.ts.map +1 -0
  30. package/lib/align/affineTransfrom/applyAffineTransform.js +19 -0
  31. package/lib/align/affineTransfrom/applyAffineTransform.js.map +1 -0
  32. package/lib/align/affineTransfrom/createAffineTransformModel.d.ts +10 -0
  33. package/lib/align/affineTransfrom/createAffineTransformModel.d.ts.map +1 -0
  34. package/lib/align/affineTransfrom/createAffineTransformModel.js +23 -0
  35. package/lib/align/affineTransfrom/createAffineTransformModel.js.map +1 -0
  36. package/lib/align/affineTransfrom/drawResult.d.ts +12 -0
  37. package/lib/align/affineTransfrom/drawResult.d.ts.map +1 -0
  38. package/lib/align/affineTransfrom/drawResult.js +38 -0
  39. package/lib/align/affineTransfrom/drawResult.js.map +1 -0
  40. package/lib/align/affineTransfrom/getAffineTransform.d.ts +97 -0
  41. package/lib/align/affineTransfrom/getAffineTransform.d.ts.map +1 -0
  42. package/lib/align/affineTransfrom/getAffineTransform.js +145 -0
  43. package/lib/align/affineTransfrom/getAffineTransform.js.map +1 -0
  44. package/lib/align/affineTransfrom/getEuclideanDistance.d.ts +9 -0
  45. package/lib/align/affineTransfrom/getEuclideanDistance.d.ts.map +1 -0
  46. package/lib/align/affineTransfrom/getEuclideanDistance.js +10 -0
  47. package/lib/align/affineTransfrom/getEuclideanDistance.js.map +1 -0
  48. package/lib/align/affineTransfrom/getMatrixFromPoints.d.ts +10 -0
  49. package/lib/align/affineTransfrom/getMatrixFromPoints.d.ts.map +1 -0
  50. package/lib/align/affineTransfrom/getMatrixFromPoints.js +17 -0
  51. package/lib/align/affineTransfrom/getMatrixFromPoints.js.map +1 -0
  52. package/lib/align/affineTransfrom/getPointsFromMatrix.d.ts +9 -0
  53. package/lib/align/affineTransfrom/getPointsFromMatrix.d.ts.map +1 -0
  54. package/lib/align/affineTransfrom/getPointsFromMatrix.js +13 -0
  55. package/lib/align/affineTransfrom/getPointsFromMatrix.js.map +1 -0
  56. package/lib/align/affineTransfrom/utils/getSourceWithoutMargins.d.ts +11 -0
  57. package/lib/align/affineTransfrom/utils/getSourceWithoutMargins.d.ts.map +1 -0
  58. package/lib/align/affineTransfrom/utils/getSourceWithoutMargins.js +17 -0
  59. package/lib/align/affineTransfrom/utils/getSourceWithoutMargins.js.map +1 -0
  60. package/lib/align/alignMinDifference.d.ts +25 -0
  61. package/lib/align/alignMinDifference.d.ts.map +1 -0
  62. package/lib/align/alignMinDifference.js +79 -0
  63. package/lib/align/alignMinDifference.js.map +1 -0
  64. package/lib/align/index.d.ts +3 -0
  65. package/lib/align/index.d.ts.map +1 -0
  66. package/lib/align/index.js +3 -0
  67. package/lib/align/index.js.map +1 -0
  68. package/lib/compare/add.d.ts +10 -0
  69. package/lib/compare/add.d.ts.map +1 -0
  70. package/lib/compare/add.js +32 -0
  71. package/lib/compare/add.js.map +1 -0
  72. package/lib/compare/computePsnr.d.ts +11 -0
  73. package/lib/compare/computePsnr.d.ts.map +1 -0
  74. package/lib/compare/computePsnr.js +14 -0
  75. package/lib/compare/computePsnr.js.map +1 -0
  76. package/lib/compare/computeRmse.d.ts +18 -0
  77. package/lib/compare/computeRmse.d.ts.map +1 -0
  78. package/lib/compare/computeRmse.js +30 -0
  79. package/lib/compare/computeRmse.js.map +1 -0
  80. package/lib/compare/divide.d.ts +22 -0
  81. package/lib/compare/divide.d.ts.map +1 -0
  82. package/lib/compare/divide.js +31 -0
  83. package/lib/compare/divide.js.map +1 -0
  84. package/lib/compare/index.d.ts +7 -0
  85. package/lib/compare/index.d.ts.map +1 -0
  86. package/lib/compare/index.js +7 -0
  87. package/lib/compare/index.js.map +1 -0
  88. package/lib/compare/multiply.d.ts +22 -0
  89. package/lib/compare/multiply.d.ts.map +1 -0
  90. package/lib/compare/multiply.js +28 -0
  91. package/lib/compare/multiply.js.map +1 -0
  92. package/lib/compare/subtract.d.ts +13 -0
  93. package/lib/compare/subtract.d.ts.map +1 -0
  94. package/lib/compare/subtract.js +58 -0
  95. package/lib/compare/subtract.js.map +1 -0
  96. package/lib/compute/getExtrema.d.ts +33 -0
  97. package/lib/compute/getExtrema.d.ts.map +1 -0
  98. package/lib/compute/getExtrema.js +72 -0
  99. package/lib/compute/getExtrema.js.map +1 -0
  100. package/lib/compute/histogram.d.ts +12 -4
  101. package/lib/compute/histogram.d.ts.map +1 -1
  102. package/lib/compute/histogram.js +17 -11
  103. package/lib/compute/histogram.js.map +1 -1
  104. package/lib/compute/index.d.ts +5 -1
  105. package/lib/compute/index.d.ts.map +1 -1
  106. package/lib/compute/index.js +5 -6
  107. package/lib/compute/index.js.map +1 -1
  108. package/lib/compute/mean.d.ts +17 -0
  109. package/lib/compute/mean.d.ts.map +1 -0
  110. package/lib/compute/mean.js +37 -0
  111. package/lib/compute/mean.js.map +1 -0
  112. package/lib/compute/median.d.ts +16 -0
  113. package/lib/compute/median.d.ts.map +1 -0
  114. package/lib/compute/median.js +37 -0
  115. package/lib/compute/median.js.map +1 -0
  116. package/lib/compute/variance.d.ts +17 -0
  117. package/lib/compute/variance.d.ts.map +1 -0
  118. package/lib/compute/variance.js +33 -0
  119. package/lib/compute/variance.js.map +1 -0
  120. package/lib/correctColor/correctColor.d.ts +22 -0
  121. package/lib/correctColor/correctColor.d.ts.map +1 -0
  122. package/lib/correctColor/correctColor.js +75 -0
  123. package/lib/correctColor/correctColor.js.map +1 -0
  124. package/lib/correctColor/index.d.ts +2 -0
  125. package/lib/correctColor/index.d.ts.map +1 -0
  126. package/lib/correctColor/index.js +2 -0
  127. package/lib/correctColor/index.js.map +1 -0
  128. package/lib/correctColor/utils/formatData.d.ts +37 -0
  129. package/lib/correctColor/utils/formatData.d.ts.map +1 -0
  130. package/lib/correctColor/utils/formatData.js +60 -0
  131. package/lib/correctColor/utils/formatData.js.map +1 -0
  132. package/lib/correctColor/utils/getImageColors.d.ts +9 -0
  133. package/lib/correctColor/utils/getImageColors.d.ts.map +1 -0
  134. package/lib/correctColor/utils/getImageColors.js +19 -0
  135. package/lib/correctColor/utils/getImageColors.js.map +1 -0
  136. package/lib/correctColor/utils/referenceColorCard.d.ts +42 -0
  137. package/lib/correctColor/utils/referenceColorCard.d.ts.map +1 -0
  138. package/lib/correctColor/utils/referenceColorCard.js +146 -0
  139. package/lib/correctColor/utils/referenceColorCard.js.map +1 -0
  140. package/lib/draw/drawCircleOnImage.d.ts +28 -0
  141. package/lib/draw/drawCircleOnImage.d.ts.map +1 -0
  142. package/lib/draw/drawCircleOnImage.js +75 -0
  143. package/lib/draw/drawCircleOnImage.js.map +1 -0
  144. package/lib/draw/drawLineOnImage.d.ts +28 -0
  145. package/lib/draw/drawLineOnImage.d.ts.map +1 -0
  146. package/lib/draw/drawLineOnImage.js +27 -0
  147. package/lib/draw/drawLineOnImage.js.map +1 -0
  148. package/lib/draw/drawLineOnMask.d.ts +23 -0
  149. package/lib/draw/drawLineOnMask.d.ts.map +1 -0
  150. package/lib/draw/drawLineOnMask.js +19 -0
  151. package/lib/draw/drawLineOnMask.js.map +1 -0
  152. package/lib/draw/drawMarker.d.ts +36 -0
  153. package/lib/draw/drawMarker.d.ts.map +1 -0
  154. package/lib/draw/drawMarker.js +62 -0
  155. package/lib/draw/drawMarker.js.map +1 -0
  156. package/lib/draw/drawMarkers.d.ts +12 -0
  157. package/lib/draw/drawMarkers.d.ts.map +1 -0
  158. package/lib/draw/drawMarkers.js +17 -0
  159. package/lib/draw/drawMarkers.js.map +1 -0
  160. package/lib/draw/drawPoints.d.ts +22 -0
  161. package/lib/draw/drawPoints.d.ts.map +1 -0
  162. package/lib/draw/drawPoints.js +32 -0
  163. package/lib/draw/drawPoints.js.map +1 -0
  164. package/lib/draw/drawPolygonOnImage.d.ts +24 -0
  165. package/lib/draw/drawPolygonOnImage.d.ts.map +1 -0
  166. package/lib/draw/drawPolygonOnImage.js +44 -0
  167. package/lib/draw/drawPolygonOnImage.js.map +1 -0
  168. package/lib/draw/drawPolygonOnMask.d.ts +23 -0
  169. package/lib/draw/drawPolygonOnMask.d.ts.map +1 -0
  170. package/lib/draw/drawPolygonOnMask.js +35 -0
  171. package/lib/draw/drawPolygonOnMask.js.map +1 -0
  172. package/lib/draw/drawPolylineOnImage.d.ts +27 -0
  173. package/lib/draw/drawPolylineOnImage.d.ts.map +1 -0
  174. package/lib/draw/drawPolylineOnImage.js +26 -0
  175. package/lib/draw/drawPolylineOnImage.js.map +1 -0
  176. package/lib/draw/drawPolylineOnMask.d.ts +22 -0
  177. package/lib/draw/drawPolylineOnMask.d.ts.map +1 -0
  178. package/lib/draw/drawPolylineOnMask.js +18 -0
  179. package/lib/draw/drawPolylineOnMask.js.map +1 -0
  180. package/lib/draw/drawRectangle.d.ts +37 -0
  181. package/lib/draw/drawRectangle.d.ts.map +1 -0
  182. package/lib/draw/drawRectangle.js +50 -0
  183. package/lib/draw/drawRectangle.js.map +1 -0
  184. package/lib/draw/index.d.ts +12 -0
  185. package/lib/draw/index.d.ts.map +1 -0
  186. package/lib/draw/index.js +12 -0
  187. package/lib/draw/index.js.map +1 -0
  188. package/lib/draw/utils/deleteDuplicates.d.ts +8 -0
  189. package/lib/draw/utils/deleteDuplicates.d.ts.map +1 -0
  190. package/lib/draw/utils/deleteDuplicates.js +19 -0
  191. package/lib/draw/utils/deleteDuplicates.js.map +1 -0
  192. package/lib/draw/utils/roundPoint.d.ts +8 -0
  193. package/lib/draw/utils/roundPoint.d.ts.map +1 -0
  194. package/lib/draw/utils/roundPoint.js +12 -0
  195. package/lib/draw/utils/roundPoint.js.map +1 -0
  196. package/lib/featureMatching/descriptors/getBrief.d.ts +15 -0
  197. package/lib/featureMatching/descriptors/getBrief.d.ts.map +1 -0
  198. package/lib/featureMatching/descriptors/getBrief.js +29 -0
  199. package/lib/featureMatching/descriptors/getBrief.js.map +1 -0
  200. package/lib/featureMatching/descriptors/getBriefDescriptors.d.ts +43 -0
  201. package/lib/featureMatching/descriptors/getBriefDescriptors.d.ts.map +1 -0
  202. package/lib/featureMatching/descriptors/getBriefDescriptors.js +58 -0
  203. package/lib/featureMatching/descriptors/getBriefDescriptors.js.map +1 -0
  204. package/lib/featureMatching/descriptors/utils/getKeypointPatch.d.ts +18 -0
  205. package/lib/featureMatching/descriptors/utils/getKeypointPatch.d.ts.map +1 -0
  206. package/lib/featureMatching/descriptors/utils/getKeypointPatch.js +32 -0
  207. package/lib/featureMatching/descriptors/utils/getKeypointPatch.js.map +1 -0
  208. package/lib/featureMatching/descriptors/utils/sliceBrief.d.ts +21 -0
  209. package/lib/featureMatching/descriptors/utils/sliceBrief.d.ts.map +1 -0
  210. package/lib/featureMatching/descriptors/utils/sliceBrief.js +17 -0
  211. package/lib/featureMatching/descriptors/utils/sliceBrief.js.map +1 -0
  212. package/lib/featureMatching/featureMatching.types.d.ts +26 -0
  213. package/lib/featureMatching/featureMatching.types.d.ts.map +1 -0
  214. package/lib/featureMatching/featureMatching.types.js +2 -0
  215. package/lib/featureMatching/featureMatching.types.js.map +1 -0
  216. package/lib/featureMatching/index.d.ts +13 -0
  217. package/lib/featureMatching/index.d.ts.map +1 -0
  218. package/lib/featureMatching/index.js +13 -0
  219. package/lib/featureMatching/index.js.map +1 -0
  220. package/lib/featureMatching/keypoints/getBestKeypointsInRadius.d.ts +9 -0
  221. package/lib/featureMatching/keypoints/getBestKeypointsInRadius.d.ts.map +1 -0
  222. package/lib/featureMatching/keypoints/getBestKeypointsInRadius.js +30 -0
  223. package/lib/featureMatching/keypoints/getBestKeypointsInRadius.js.map +1 -0
  224. package/lib/featureMatching/keypoints/getFastKeypoints.d.ts +53 -0
  225. package/lib/featureMatching/keypoints/getFastKeypoints.d.ts.map +1 -0
  226. package/lib/featureMatching/keypoints/getFastKeypoints.js +71 -0
  227. package/lib/featureMatching/keypoints/getFastKeypoints.js.map +1 -0
  228. package/lib/featureMatching/keypoints/getFastScore.d.ts +13 -0
  229. package/lib/featureMatching/keypoints/getFastScore.d.ts.map +1 -0
  230. package/lib/featureMatching/keypoints/getFastScore.js +25 -0
  231. package/lib/featureMatching/keypoints/getFastScore.js.map +1 -0
  232. package/lib/featureMatching/keypoints/getHarrisScore.d.ts +20 -0
  233. package/lib/featureMatching/keypoints/getHarrisScore.d.ts.map +1 -0
  234. package/lib/featureMatching/keypoints/getHarrisScore.js +55 -0
  235. package/lib/featureMatching/keypoints/getHarrisScore.js.map +1 -0
  236. package/lib/featureMatching/keypoints/getIntensityCentroid.d.ts +11 -0
  237. package/lib/featureMatching/keypoints/getIntensityCentroid.d.ts.map +1 -0
  238. package/lib/featureMatching/keypoints/getIntensityCentroid.js +30 -0
  239. package/lib/featureMatching/keypoints/getIntensityCentroid.js.map +1 -0
  240. package/lib/featureMatching/keypoints/getIntensityMoment.d.ts +22 -0
  241. package/lib/featureMatching/keypoints/getIntensityMoment.d.ts.map +1 -0
  242. package/lib/featureMatching/keypoints/getIntensityMoment.js +27 -0
  243. package/lib/featureMatching/keypoints/getIntensityMoment.js.map +1 -0
  244. package/lib/featureMatching/keypoints/getOrientedFastKeypoints.d.ts +26 -0
  245. package/lib/featureMatching/keypoints/getOrientedFastKeypoints.d.ts.map +1 -0
  246. package/lib/featureMatching/keypoints/getOrientedFastKeypoints.js +38 -0
  247. package/lib/featureMatching/keypoints/getOrientedFastKeypoints.js.map +1 -0
  248. package/lib/featureMatching/keypoints/getPatchIntensityCentroid.d.ts +13 -0
  249. package/lib/featureMatching/keypoints/getPatchIntensityCentroid.d.ts.map +1 -0
  250. package/lib/featureMatching/keypoints/getPatchIntensityCentroid.js +31 -0
  251. package/lib/featureMatching/keypoints/getPatchIntensityCentroid.js.map +1 -0
  252. package/lib/featureMatching/keypoints/getPatchIntensityMoment.d.ts +27 -0
  253. package/lib/featureMatching/keypoints/getPatchIntensityMoment.d.ts.map +1 -0
  254. package/lib/featureMatching/keypoints/getPatchIntensityMoment.js +29 -0
  255. package/lib/featureMatching/keypoints/getPatchIntensityMoment.js.map +1 -0
  256. package/lib/featureMatching/keypoints/isFastKeypoint.d.ts +26 -0
  257. package/lib/featureMatching/keypoints/isFastKeypoint.d.ts.map +1 -0
  258. package/lib/featureMatching/keypoints/isFastKeypoint.js +74 -0
  259. package/lib/featureMatching/keypoints/isFastKeypoint.js.map +1 -0
  260. package/lib/featureMatching/keypoints/utils/getDistanceMatrix.d.ts +9 -0
  261. package/lib/featureMatching/keypoints/utils/getDistanceMatrix.d.ts.map +1 -0
  262. package/lib/featureMatching/keypoints/utils/getDistanceMatrix.js +26 -0
  263. package/lib/featureMatching/keypoints/utils/getDistanceMatrix.js.map +1 -0
  264. package/lib/featureMatching/keypoints/utils/getKeypointsInRadius.d.ts +10 -0
  265. package/lib/featureMatching/keypoints/utils/getKeypointsInRadius.d.ts.map +1 -0
  266. package/lib/featureMatching/keypoints/utils/getKeypointsInRadius.js +26 -0
  267. package/lib/featureMatching/keypoints/utils/getKeypointsInRadius.js.map +1 -0
  268. package/lib/featureMatching/matching/bruteForceMatch.d.ts +36 -0
  269. package/lib/featureMatching/matching/bruteForceMatch.d.ts.map +1 -0
  270. package/lib/featureMatching/matching/bruteForceMatch.js +33 -0
  271. package/lib/featureMatching/matching/bruteForceMatch.js.map +1 -0
  272. package/lib/featureMatching/matching/filterEuclideanDistance.d.ts +21 -0
  273. package/lib/featureMatching/matching/filterEuclideanDistance.d.ts.map +1 -0
  274. package/lib/featureMatching/matching/filterEuclideanDistance.js +43 -0
  275. package/lib/featureMatching/matching/filterEuclideanDistance.js.map +1 -0
  276. package/lib/featureMatching/matching/filterSmallestDistanceMatches.d.ts +9 -0
  277. package/lib/featureMatching/matching/filterSmallestDistanceMatches.d.ts.map +1 -0
  278. package/lib/featureMatching/matching/filterSmallestDistanceMatches.js +25 -0
  279. package/lib/featureMatching/matching/filterSmallestDistanceMatches.js.map +1 -0
  280. package/lib/featureMatching/matching/getCrosscheckMatches.d.ts +19 -0
  281. package/lib/featureMatching/matching/getCrosscheckMatches.d.ts.map +1 -0
  282. package/lib/featureMatching/matching/getCrosscheckMatches.js +55 -0
  283. package/lib/featureMatching/matching/getCrosscheckMatches.js.map +1 -0
  284. package/lib/featureMatching/matching/getHammingDistance.d.ts +10 -0
  285. package/lib/featureMatching/matching/getHammingDistance.d.ts.map +1 -0
  286. package/lib/featureMatching/matching/getHammingDistance.js +15 -0
  287. package/lib/featureMatching/matching/getHammingDistance.js.map +1 -0
  288. package/lib/featureMatching/utils/checkBorderDistance.d.ts +11 -0
  289. package/lib/featureMatching/utils/checkBorderDistance.d.ts.map +1 -0
  290. package/lib/featureMatching/utils/checkBorderDistance.js +14 -0
  291. package/lib/featureMatching/utils/checkBorderDistance.js.map +1 -0
  292. package/lib/featureMatching/utils/compareIntensity.d.ts +19 -0
  293. package/lib/featureMatching/utils/compareIntensity.d.ts.map +1 -0
  294. package/lib/featureMatching/utils/compareIntensity.js +18 -0
  295. package/lib/featureMatching/utils/compareIntensity.js.map +1 -0
  296. package/lib/featureMatching/utils/extractSquareImage.d.ts +11 -0
  297. package/lib/featureMatching/utils/extractSquareImage.d.ts.map +1 -0
  298. package/lib/featureMatching/utils/extractSquareImage.js +20 -0
  299. package/lib/featureMatching/utils/extractSquareImage.js.map +1 -0
  300. package/lib/featureMatching/utils/getColors.d.ts +11 -0
  301. package/lib/featureMatching/utils/getColors.d.ts.map +1 -0
  302. package/lib/featureMatching/utils/getColors.js +25 -0
  303. package/lib/featureMatching/utils/getColors.js.map +1 -0
  304. package/lib/featureMatching/utils/getGaussianPoints.d.ts +23 -0
  305. package/lib/featureMatching/utils/getGaussianPoints.d.ts.map +1 -0
  306. package/lib/featureMatching/utils/getGaussianPoints.js +46 -0
  307. package/lib/featureMatching/utils/getGaussianPoints.js.map +1 -0
  308. package/lib/featureMatching/utils/getKeypointColor.d.ts +11 -0
  309. package/lib/featureMatching/utils/getKeypointColor.d.ts.map +1 -0
  310. package/lib/featureMatching/utils/getKeypointColor.js +21 -0
  311. package/lib/featureMatching/utils/getKeypointColor.js.map +1 -0
  312. package/lib/featureMatching/utils/getMatchColor.d.ts +11 -0
  313. package/lib/featureMatching/utils/getMatchColor.d.ts.map +1 -0
  314. package/lib/featureMatching/utils/getMatchColor.js +20 -0
  315. package/lib/featureMatching/utils/getMatchColor.js.map +1 -0
  316. package/lib/featureMatching/utils/sortByDistance.d.ts +8 -0
  317. package/lib/featureMatching/utils/sortByDistance.d.ts.map +1 -0
  318. package/lib/featureMatching/utils/sortByDistance.js +11 -0
  319. package/lib/featureMatching/utils/sortByDistance.js.map +1 -0
  320. package/lib/featureMatching/utils/sortBySourceDest.d.ts +14 -0
  321. package/lib/featureMatching/utils/sortBySourceDest.d.ts.map +1 -0
  322. package/lib/featureMatching/utils/sortBySourceDest.js +29 -0
  323. package/lib/featureMatching/utils/sortBySourceDest.js.map +1 -0
  324. package/lib/featureMatching/visualize/Montage.d.ts +84 -0
  325. package/lib/featureMatching/visualize/Montage.d.ts.map +1 -0
  326. package/lib/featureMatching/visualize/Montage.js +113 -0
  327. package/lib/featureMatching/visualize/Montage.js.map +1 -0
  328. package/lib/featureMatching/visualize/drawKeypoints.d.ts +55 -0
  329. package/lib/featureMatching/visualize/drawKeypoints.d.ts.map +1 -0
  330. package/lib/featureMatching/visualize/drawKeypoints.js +58 -0
  331. package/lib/featureMatching/visualize/drawKeypoints.js.map +1 -0
  332. package/lib/featureMatching/visualize/drawMatches.d.ts +42 -0
  333. package/lib/featureMatching/visualize/drawMatches.d.ts.map +1 -0
  334. package/lib/featureMatching/visualize/drawMatches.js +52 -0
  335. package/lib/featureMatching/visualize/drawMatches.js.map +1 -0
  336. package/lib/featureMatching/visualize/overlapImages.d.ts +30 -0
  337. package/lib/featureMatching/visualize/overlapImages.d.ts.map +1 -0
  338. package/lib/featureMatching/visualize/overlapImages.js +35 -0
  339. package/lib/featureMatching/visualize/overlapImages.js.map +1 -0
  340. package/lib/featureMatching/visualize/scaleKeypoints.d.ts +9 -0
  341. package/lib/featureMatching/visualize/scaleKeypoints.d.ts.map +1 -0
  342. package/lib/featureMatching/visualize/scaleKeypoints.js +20 -0
  343. package/lib/featureMatching/visualize/scaleKeypoints.js.map +1 -0
  344. package/lib/filters/and.d.ts +16 -0
  345. package/lib/filters/and.d.ts.map +1 -0
  346. package/lib/filters/and.js +24 -0
  347. package/lib/filters/and.js.map +1 -0
  348. package/lib/filters/blur.d.ts +28 -4
  349. package/lib/filters/blur.d.ts.map +1 -1
  350. package/lib/filters/blur.js +16 -8
  351. package/lib/filters/blur.js.map +1 -1
  352. package/lib/filters/convolution.d.ts +67 -6
  353. package/lib/filters/convolution.d.ts.map +1 -1
  354. package/lib/filters/convolution.js +124 -81
  355. package/lib/filters/convolution.js.map +1 -1
  356. package/lib/filters/derivativeFilter.d.ts +38 -0
  357. package/lib/filters/derivativeFilter.d.ts.map +1 -0
  358. package/lib/filters/derivativeFilter.js +26 -0
  359. package/lib/filters/derivativeFilter.js.map +1 -0
  360. package/lib/filters/flip.d.ts +20 -0
  361. package/lib/filters/flip.d.ts.map +1 -0
  362. package/lib/filters/flip.js +23 -0
  363. package/lib/filters/flip.js.map +1 -0
  364. package/lib/filters/flipX.d.ts +8 -0
  365. package/lib/filters/flipX.d.ts.map +1 -0
  366. package/lib/filters/flipX.js +24 -0
  367. package/lib/filters/flipX.js.map +1 -0
  368. package/lib/filters/flipY.d.ts +8 -0
  369. package/lib/filters/flipY.d.ts.map +1 -0
  370. package/lib/filters/flipY.js +24 -0
  371. package/lib/filters/flipY.js.map +1 -0
  372. package/lib/filters/gaussianBlur.d.ts +44 -9
  373. package/lib/filters/gaussianBlur.d.ts.map +1 -1
  374. package/lib/filters/gaussianBlur.js +28 -23
  375. package/lib/filters/gaussianBlur.js.map +1 -1
  376. package/lib/filters/gradientFilter.d.ts +51 -0
  377. package/lib/filters/gradientFilter.d.ts.map +1 -0
  378. package/lib/filters/gradientFilter.js +49 -0
  379. package/lib/filters/gradientFilter.js.map +1 -0
  380. package/lib/filters/hypotenuse.d.ts +16 -0
  381. package/lib/filters/hypotenuse.d.ts.map +1 -0
  382. package/lib/filters/hypotenuse.js +36 -0
  383. package/lib/filters/hypotenuse.js.map +1 -0
  384. package/lib/filters/increaseContrast.d.ts +21 -0
  385. package/lib/filters/increaseContrast.d.ts.map +1 -0
  386. package/lib/filters/increaseContrast.js +49 -0
  387. package/lib/filters/increaseContrast.js.map +1 -0
  388. package/lib/filters/index.d.ts +14 -4
  389. package/lib/filters/index.d.ts.map +1 -1
  390. package/lib/filters/index.js +14 -9
  391. package/lib/filters/index.js.map +1 -1
  392. package/lib/filters/invert.d.ts +9 -8
  393. package/lib/filters/invert.d.ts.map +1 -1
  394. package/lib/filters/invert.js +26 -11
  395. package/lib/filters/invert.js.map +1 -1
  396. package/lib/filters/level.d.ts +46 -0
  397. package/lib/filters/level.d.ts.map +1 -0
  398. package/lib/filters/level.js +63 -0
  399. package/lib/filters/level.js.map +1 -0
  400. package/lib/filters/medianFilter.d.ts +26 -0
  401. package/lib/filters/medianFilter.d.ts.map +1 -0
  402. package/lib/filters/medianFilter.js +42 -0
  403. package/lib/filters/medianFilter.js.map +1 -0
  404. package/lib/filters/or.d.ts +16 -0
  405. package/lib/filters/or.d.ts.map +1 -0
  406. package/lib/filters/or.js +24 -0
  407. package/lib/filters/or.js.map +1 -0
  408. package/lib/filters/pixelate.d.ts +24 -0
  409. package/lib/filters/pixelate.d.ts.map +1 -0
  410. package/lib/filters/pixelate.js +105 -0
  411. package/lib/filters/pixelate.js.map +1 -0
  412. package/lib/geometry/getPerspectiveWarp.d.ts +37 -0
  413. package/lib/geometry/getPerspectiveWarp.d.ts.map +1 -0
  414. package/lib/geometry/getPerspectiveWarp.js +131 -0
  415. package/lib/geometry/getPerspectiveWarp.js.map +1 -0
  416. package/lib/geometry/index.d.ts +6 -1
  417. package/lib/geometry/index.d.ts.map +1 -1
  418. package/lib/geometry/index.js +5 -6
  419. package/lib/geometry/index.js.map +1 -1
  420. package/lib/geometry/resize.d.ts +49 -0
  421. package/lib/geometry/resize.d.ts.map +1 -0
  422. package/lib/geometry/resize.js +87 -0
  423. package/lib/geometry/resize.js.map +1 -0
  424. package/lib/geometry/rotate.d.ts +10 -0
  425. package/lib/geometry/rotate.d.ts.map +1 -0
  426. package/lib/geometry/rotate.js +47 -0
  427. package/lib/geometry/rotate.js.map +1 -0
  428. package/lib/geometry/transform.d.ts +39 -6
  429. package/lib/geometry/transform.d.ts.map +1 -1
  430. package/lib/geometry/transform.js +90 -36
  431. package/lib/geometry/transform.js.map +1 -1
  432. package/lib/geometry/transformRotate.d.ts +24 -0
  433. package/lib/geometry/transformRotate.d.ts.map +1 -0
  434. package/lib/geometry/transformRotate.js +38 -0
  435. package/lib/geometry/transformRotate.js.map +1 -0
  436. package/lib/index.d.ts +24 -8
  437. package/lib/index.d.ts.map +1 -1
  438. package/lib/index.js +24 -13
  439. package/lib/index.js.map +1 -1
  440. package/lib/load/decode.d.ts +4 -3
  441. package/lib/load/decode.d.ts.map +1 -1
  442. package/lib/load/decode.js +17 -23
  443. package/lib/load/decode.js.map +1 -1
  444. package/lib/load/decodeJpeg.d.ts +3 -2
  445. package/lib/load/decodeJpeg.d.ts.map +1 -1
  446. package/lib/load/decodeJpeg.js +20 -10
  447. package/lib/load/decodeJpeg.js.map +1 -1
  448. package/lib/load/decodePng.d.ts +4 -3
  449. package/lib/load/decodePng.d.ts.map +1 -1
  450. package/lib/load/decodePng.js +30 -30
  451. package/lib/load/decodePng.js.map +1 -1
  452. package/lib/load/decodeTiff.d.ts +17 -0
  453. package/lib/load/decodeTiff.d.ts.map +1 -0
  454. package/lib/load/decodeTiff.js +57 -0
  455. package/lib/load/decodeTiff.js.map +1 -0
  456. package/lib/load/fetchURL.d.ts +7 -0
  457. package/lib/load/fetchURL.d.ts.map +1 -0
  458. package/lib/load/fetchURL.js +13 -0
  459. package/lib/load/fetchURL.js.map +1 -0
  460. package/lib/load/getMetadata.d.ts +16 -0
  461. package/lib/load/getMetadata.d.ts.map +1 -0
  462. package/lib/load/getMetadata.js +15 -0
  463. package/lib/load/getMetadata.js.map +1 -0
  464. package/lib/load/index.d.ts +9 -6
  465. package/lib/load/index.d.ts.map +1 -1
  466. package/lib/load/index.js +9 -11
  467. package/lib/load/index.js.map +1 -1
  468. package/lib/load/load.types.d.ts +8 -0
  469. package/lib/load/load.types.d.ts.map +1 -0
  470. package/lib/load/load.types.js +2 -0
  471. package/lib/load/load.types.js.map +1 -0
  472. package/lib/load/read.d.ts +9 -4
  473. package/lib/load/read.d.ts.map +1 -1
  474. package/lib/load/read.js +15 -14
  475. package/lib/load/read.js.map +1 -1
  476. package/lib/load/readCanvas.d.ts +6 -1
  477. package/lib/load/readCanvas.d.ts.map +1 -1
  478. package/lib/load/readCanvas.js +11 -12
  479. package/lib/load/readCanvas.js.map +1 -1
  480. package/lib/load/readImg.d.ts +7 -2
  481. package/lib/load/readImg.d.ts.map +1 -1
  482. package/lib/load/readImg.js +11 -10
  483. package/lib/load/readImg.js.map +1 -1
  484. package/lib/maskAnalysis/getBorderPoints.d.ts +12 -0
  485. package/lib/maskAnalysis/getBorderPoints.d.ts.map +1 -0
  486. package/lib/maskAnalysis/getBorderPoints.js +53 -0
  487. package/lib/maskAnalysis/getBorderPoints.js.map +1 -0
  488. package/lib/maskAnalysis/getConvexHull.d.ts +9 -0
  489. package/lib/maskAnalysis/getConvexHull.d.ts.map +1 -0
  490. package/lib/maskAnalysis/getConvexHull.js +23 -0
  491. package/lib/maskAnalysis/getConvexHull.js.map +1 -0
  492. package/lib/maskAnalysis/getFeret.d.ts +11 -0
  493. package/lib/maskAnalysis/getFeret.d.ts.map +1 -0
  494. package/lib/maskAnalysis/getFeret.js +181 -0
  495. package/lib/maskAnalysis/getFeret.js.map +1 -0
  496. package/lib/maskAnalysis/getMbr.d.ts +9 -0
  497. package/lib/maskAnalysis/getMbr.d.ts.map +1 -0
  498. package/lib/maskAnalysis/getMbr.js +13 -0
  499. package/lib/maskAnalysis/getMbr.js.map +1 -0
  500. package/lib/maskAnalysis/index.d.ts +2 -0
  501. package/lib/maskAnalysis/index.d.ts.map +1 -0
  502. package/lib/maskAnalysis/index.js +2 -0
  503. package/lib/maskAnalysis/index.js.map +1 -0
  504. package/lib/maskAnalysis/maskAnalysis.types.d.ts +97 -0
  505. package/lib/maskAnalysis/maskAnalysis.types.d.ts.map +1 -0
  506. package/lib/maskAnalysis/maskAnalysis.types.js +2 -0
  507. package/lib/maskAnalysis/maskAnalysis.types.js.map +1 -0
  508. package/lib/maskAnalysis/utils/getAngle.d.ts +19 -0
  509. package/lib/maskAnalysis/utils/getAngle.d.ts.map +1 -0
  510. package/lib/maskAnalysis/utils/getAngle.js +41 -0
  511. package/lib/maskAnalysis/utils/getAngle.js.map +1 -0
  512. package/lib/maskAnalysis/utils/getExtendedBorderPoints.d.ts +12 -0
  513. package/lib/maskAnalysis/utils/getExtendedBorderPoints.d.ts.map +1 -0
  514. package/lib/maskAnalysis/utils/getExtendedBorderPoints.js +20 -0
  515. package/lib/maskAnalysis/utils/getExtendedBorderPoints.js.map +1 -0
  516. package/lib/maskAnalysis/utils/getMbrAngle.d.ts +8 -0
  517. package/lib/maskAnalysis/utils/getMbrAngle.d.ts.map +1 -0
  518. package/lib/maskAnalysis/utils/getMbrAngle.js +20 -0
  519. package/lib/maskAnalysis/utils/getMbrAngle.js.map +1 -0
  520. package/lib/maskAnalysis/utils/getMbrFromPoints.d.ts +10 -0
  521. package/lib/maskAnalysis/utils/getMbrFromPoints.d.ts.map +1 -0
  522. package/lib/maskAnalysis/utils/getMbrFromPoints.js +102 -0
  523. package/lib/maskAnalysis/utils/getMbrFromPoints.js.map +1 -0
  524. package/lib/maskAnalysis/utils/monotoneChainConvexHull.d.ts +18 -0
  525. package/lib/maskAnalysis/utils/monotoneChainConvexHull.d.ts.map +1 -0
  526. package/lib/maskAnalysis/utils/monotoneChainConvexHull.js +44 -0
  527. package/lib/maskAnalysis/utils/monotoneChainConvexHull.js.map +1 -0
  528. package/lib/morphology/bottomHat.d.ts +18 -0
  529. package/lib/morphology/bottomHat.d.ts.map +1 -0
  530. package/lib/morphology/bottomHat.js +38 -0
  531. package/lib/morphology/bottomHat.js.map +1 -0
  532. package/lib/morphology/cannyEdgeDetector.d.ts +44 -0
  533. package/lib/morphology/cannyEdgeDetector.d.ts.map +1 -0
  534. package/lib/morphology/cannyEdgeDetector.js +146 -0
  535. package/lib/morphology/cannyEdgeDetector.js.map +1 -0
  536. package/lib/morphology/clearBorder.d.ts +26 -0
  537. package/lib/morphology/clearBorder.d.ts.map +1 -0
  538. package/lib/morphology/clearBorder.js +19 -0
  539. package/lib/morphology/clearBorder.js.map +1 -0
  540. package/lib/morphology/close.d.ts +18 -0
  541. package/lib/morphology/close.d.ts.map +1 -0
  542. package/lib/morphology/close.js +33 -0
  543. package/lib/morphology/close.js.map +1 -0
  544. package/lib/morphology/dilate.d.ts +18 -0
  545. package/lib/morphology/dilate.d.ts.map +1 -0
  546. package/lib/morphology/dilate.js +191 -0
  547. package/lib/morphology/dilate.js.map +1 -0
  548. package/lib/morphology/erode.d.ts +18 -0
  549. package/lib/morphology/erode.d.ts.map +1 -0
  550. package/lib/morphology/erode.js +191 -0
  551. package/lib/morphology/erode.js.map +1 -0
  552. package/lib/morphology/floodFill.d.ts +26 -0
  553. package/lib/morphology/floodFill.d.ts.map +1 -0
  554. package/lib/morphology/floodFill.js +18 -0
  555. package/lib/morphology/floodFill.js.map +1 -0
  556. package/lib/morphology/index.d.ts +12 -0
  557. package/lib/morphology/index.d.ts.map +1 -0
  558. package/lib/morphology/index.js +12 -0
  559. package/lib/morphology/index.js.map +1 -0
  560. package/lib/morphology/morphologicalGradient.d.ts +18 -0
  561. package/lib/morphology/morphologicalGradient.d.ts.map +1 -0
  562. package/lib/morphology/morphologicalGradient.js +34 -0
  563. package/lib/morphology/morphologicalGradient.js.map +1 -0
  564. package/lib/morphology/multipleFloodFill.d.ts +36 -0
  565. package/lib/morphology/multipleFloodFill.d.ts.map +1 -0
  566. package/lib/morphology/multipleFloodFill.js +87 -0
  567. package/lib/morphology/multipleFloodFill.js.map +1 -0
  568. package/lib/morphology/open.d.ts +18 -0
  569. package/lib/morphology/open.d.ts.map +1 -0
  570. package/lib/morphology/open.js +35 -0
  571. package/lib/morphology/open.js.map +1 -0
  572. package/lib/morphology/solidFill.d.ts +20 -0
  573. package/lib/morphology/solidFill.d.ts.map +1 -0
  574. package/lib/morphology/solidFill.js +15 -0
  575. package/lib/morphology/solidFill.js.map +1 -0
  576. package/lib/morphology/topHat.d.ts +18 -0
  577. package/lib/morphology/topHat.d.ts.map +1 -0
  578. package/lib/morphology/topHat.js +36 -0
  579. package/lib/morphology/topHat.js.map +1 -0
  580. package/lib/operations/convertBitDepth.d.ts +16 -0
  581. package/lib/operations/convertBitDepth.d.ts.map +1 -0
  582. package/lib/operations/convertBitDepth.js +56 -0
  583. package/lib/operations/convertBitDepth.js.map +1 -0
  584. package/lib/operations/convertColor.d.ts +33 -3
  585. package/lib/operations/convertColor.d.ts.map +1 -1
  586. package/lib/operations/convertColor.js +114 -46
  587. package/lib/operations/convertColor.js.map +1 -1
  588. package/lib/operations/copyTo.d.ts +17 -0
  589. package/lib/operations/copyTo.d.ts.map +1 -0
  590. package/lib/operations/copyTo.js +36 -0
  591. package/lib/operations/copyTo.js.map +1 -0
  592. package/lib/operations/correctBackground.d.ts +27 -0
  593. package/lib/operations/correctBackground.d.ts.map +1 -0
  594. package/lib/operations/correctBackground.js +44 -0
  595. package/lib/operations/correctBackground.js.map +1 -0
  596. package/lib/operations/crop.d.ts +32 -0
  597. package/lib/operations/crop.d.ts.map +1 -0
  598. package/lib/operations/crop.js +48 -0
  599. package/lib/operations/crop.js.map +1 -0
  600. package/lib/operations/cropAlpha.d.ts +11 -0
  601. package/lib/operations/cropAlpha.d.ts.map +1 -0
  602. package/lib/operations/cropAlpha.js +70 -0
  603. package/lib/operations/cropAlpha.js.map +1 -0
  604. package/lib/operations/cropRectangle.d.ts +14 -0
  605. package/lib/operations/cropRectangle.d.ts.map +1 -0
  606. package/lib/operations/cropRectangle.js +75 -0
  607. package/lib/operations/cropRectangle.js.map +1 -0
  608. package/lib/operations/extendBorders.d.ts +30 -0
  609. package/lib/operations/extendBorders.d.ts.map +1 -0
  610. package/lib/operations/extendBorders.js +61 -0
  611. package/lib/operations/extendBorders.js.map +1 -0
  612. package/lib/operations/extract.d.ts +19 -0
  613. package/lib/operations/extract.d.ts.map +1 -0
  614. package/lib/operations/extract.js +41 -0
  615. package/lib/operations/extract.js.map +1 -0
  616. package/lib/operations/getMaskFromCannyEdge.d.ts +11 -0
  617. package/lib/operations/getMaskFromCannyEdge.d.ts.map +1 -0
  618. package/lib/operations/getMaskFromCannyEdge.js +35 -0
  619. package/lib/operations/getMaskFromCannyEdge.js.map +1 -0
  620. package/lib/operations/grey.d.ts +62 -0
  621. package/lib/operations/grey.d.ts.map +1 -0
  622. package/lib/operations/grey.js +84 -0
  623. package/lib/operations/grey.js.map +1 -0
  624. package/lib/operations/greyAlgorithms.d.ts +133 -0
  625. package/lib/operations/greyAlgorithms.d.ts.map +1 -0
  626. package/lib/operations/greyAlgorithms.js +205 -0
  627. package/lib/operations/greyAlgorithms.js.map +1 -0
  628. package/lib/operations/index.d.ts +16 -4
  629. package/lib/operations/index.d.ts.map +1 -1
  630. package/lib/operations/index.js +16 -9
  631. package/lib/operations/index.js.map +1 -1
  632. package/lib/operations/merge.d.ts +8 -0
  633. package/lib/operations/merge.d.ts.map +1 -0
  634. package/lib/operations/merge.js +51 -0
  635. package/lib/operations/merge.js.map +1 -0
  636. package/lib/operations/operations.types.d.ts +7 -0
  637. package/lib/operations/operations.types.d.ts.map +1 -0
  638. package/lib/operations/operations.types.js +2 -0
  639. package/lib/operations/operations.types.js.map +1 -0
  640. package/lib/operations/paintMaskOnImage.d.ts +33 -0
  641. package/lib/operations/paintMaskOnImage.d.ts.map +1 -0
  642. package/lib/operations/paintMaskOnImage.js +53 -0
  643. package/lib/operations/paintMaskOnImage.js.map +1 -0
  644. package/lib/operations/paintMaskOnMask.d.ts +27 -0
  645. package/lib/operations/paintMaskOnMask.d.ts.map +1 -0
  646. package/lib/operations/paintMaskOnMask.js +24 -0
  647. package/lib/operations/paintMaskOnMask.js.map +1 -0
  648. package/lib/operations/split.d.ts +6 -1
  649. package/lib/operations/split.d.ts.map +1 -1
  650. package/lib/operations/split.js +12 -8
  651. package/lib/operations/split.js.map +1 -1
  652. package/lib/operations/threshold.d.ts +55 -13
  653. package/lib/operations/threshold.d.ts.map +1 -1
  654. package/lib/operations/threshold.js +79 -45
  655. package/lib/operations/threshold.js.map +1 -1
  656. package/lib/operations/thresholds/huang.d.ts +7 -0
  657. package/lib/operations/thresholds/huang.d.ts.map +1 -0
  658. package/lib/operations/thresholds/huang.js +78 -0
  659. package/lib/operations/thresholds/huang.js.map +1 -0
  660. package/lib/operations/thresholds/intermodes.d.ts +7 -0
  661. package/lib/operations/thresholds/intermodes.d.ts.map +1 -0
  662. package/lib/operations/thresholds/intermodes.js +57 -0
  663. package/lib/operations/thresholds/intermodes.js.map +1 -0
  664. package/lib/operations/thresholds/isodata.d.ts +7 -0
  665. package/lib/operations/thresholds/isodata.d.ts.map +1 -0
  666. package/lib/operations/thresholds/isodata.js +50 -0
  667. package/lib/operations/thresholds/isodata.js.map +1 -0
  668. package/lib/operations/thresholds/li.d.ts +8 -0
  669. package/lib/operations/thresholds/li.d.ts.map +1 -0
  670. package/lib/operations/thresholds/li.js +73 -0
  671. package/lib/operations/thresholds/li.js.map +1 -0
  672. package/lib/operations/thresholds/maxEntropy.d.ts +8 -0
  673. package/lib/operations/thresholds/maxEntropy.d.ts.map +1 -0
  674. package/lib/operations/thresholds/maxEntropy.js +76 -0
  675. package/lib/operations/thresholds/maxEntropy.js.map +1 -0
  676. package/lib/operations/thresholds/mean.d.ts +8 -0
  677. package/lib/operations/thresholds/mean.d.ts.map +1 -0
  678. package/lib/operations/thresholds/mean.js +22 -0
  679. package/lib/operations/thresholds/mean.js.map +1 -0
  680. package/lib/operations/thresholds/minError.d.ts +8 -0
  681. package/lib/operations/thresholds/minError.d.ts.map +1 -0
  682. package/lib/operations/thresholds/minError.js +86 -0
  683. package/lib/operations/thresholds/minError.js.map +1 -0
  684. package/lib/operations/thresholds/minimum.d.ts +7 -0
  685. package/lib/operations/thresholds/minimum.d.ts.map +1 -0
  686. package/lib/operations/thresholds/minimum.js +74 -0
  687. package/lib/operations/thresholds/minimum.js.map +1 -0
  688. package/lib/operations/thresholds/moments.d.ts +8 -0
  689. package/lib/operations/thresholds/moments.d.ts.map +1 -0
  690. package/lib/operations/thresholds/moments.js +58 -0
  691. package/lib/operations/thresholds/moments.js.map +1 -0
  692. package/lib/operations/thresholds/otsu.d.ts +7 -1
  693. package/lib/operations/thresholds/otsu.d.ts.map +1 -1
  694. package/lib/operations/thresholds/otsu.js +7 -4
  695. package/lib/operations/thresholds/otsu.js.map +1 -1
  696. package/lib/operations/thresholds/percentile.d.ts +7 -0
  697. package/lib/operations/thresholds/percentile.d.ts.map +1 -0
  698. package/lib/operations/thresholds/percentile.js +35 -0
  699. package/lib/operations/thresholds/percentile.js.map +1 -0
  700. package/lib/operations/thresholds/renyiEntropy.d.ts +8 -0
  701. package/lib/operations/thresholds/renyiEntropy.d.ts.map +1 -0
  702. package/lib/operations/thresholds/renyiEntropy.js +127 -0
  703. package/lib/operations/thresholds/renyiEntropy.js.map +1 -0
  704. package/lib/operations/thresholds/shanbhag.d.ts +8 -0
  705. package/lib/operations/thresholds/shanbhag.d.ts.map +1 -0
  706. package/lib/operations/thresholds/shanbhag.js +72 -0
  707. package/lib/operations/thresholds/shanbhag.js.map +1 -0
  708. package/lib/operations/thresholds/triangle.d.ts +6 -1
  709. package/lib/operations/thresholds/triangle.d.ts.map +1 -1
  710. package/lib/operations/thresholds/triangle.js +7 -5
  711. package/lib/operations/thresholds/triangle.js.map +1 -1
  712. package/lib/operations/thresholds/yen.d.ts +8 -0
  713. package/lib/operations/thresholds/yen.d.ts.map +1 -0
  714. package/lib/operations/thresholds/yen.js +55 -0
  715. package/lib/operations/thresholds/yen.js.map +1 -0
  716. package/lib/point/operations.d.ts +10 -0
  717. package/lib/point/operations.d.ts.map +1 -0
  718. package/lib/point/operations.js +21 -0
  719. package/lib/point/operations.js.map +1 -0
  720. package/lib/roi/Roi.d.ts +218 -0
  721. package/lib/roi/Roi.d.ts.map +1 -0
  722. package/lib/roi/Roi.js +553 -0
  723. package/lib/roi/Roi.js.map +1 -0
  724. package/lib/roi/RoiMapManager.d.ts +59 -0
  725. package/lib/roi/RoiMapManager.d.ts.map +1 -0
  726. package/lib/roi/RoiMapManager.js +51 -0
  727. package/lib/roi/RoiMapManager.js.map +1 -0
  728. package/lib/roi/colorRois.d.ts +38 -0
  729. package/lib/roi/colorRois.d.ts.map +1 -0
  730. package/lib/roi/colorRois.js +41 -0
  731. package/lib/roi/colorRois.js.map +1 -0
  732. package/lib/roi/computeRois.d.ts +7 -0
  733. package/lib/roi/computeRois.d.ts.map +1 -0
  734. package/lib/roi/computeRois.js +81 -0
  735. package/lib/roi/computeRois.js.map +1 -0
  736. package/lib/roi/fromMask.d.ts +17 -0
  737. package/lib/roi/fromMask.d.ts.map +1 -0
  738. package/lib/roi/fromMask.js +139 -0
  739. package/lib/roi/fromMask.js.map +1 -0
  740. package/lib/roi/getBorderPoints.d.ts +12 -0
  741. package/lib/roi/getBorderPoints.d.ts.map +1 -0
  742. package/lib/roi/getBorderPoints.js +12 -0
  743. package/lib/roi/getBorderPoints.js.map +1 -0
  744. package/lib/roi/getMask.d.ts +17 -0
  745. package/lib/roi/getMask.d.ts.map +1 -0
  746. package/lib/roi/getMask.js +27 -0
  747. package/lib/roi/getMask.js.map +1 -0
  748. package/lib/roi/getRois.d.ts +33 -0
  749. package/lib/roi/getRois.d.ts.map +1 -0
  750. package/lib/roi/getRois.js +27 -0
  751. package/lib/roi/getRois.js.map +1 -0
  752. package/lib/roi/index.d.ts +11 -0
  753. package/lib/roi/index.d.ts.map +1 -0
  754. package/lib/roi/index.js +11 -0
  755. package/lib/roi/index.js.map +1 -0
  756. package/lib/roi/properties/getEllipse.d.ts +9 -0
  757. package/lib/roi/properties/getEllipse.d.ts.map +1 -0
  758. package/lib/roi/properties/getEllipse.js +96 -0
  759. package/lib/roi/properties/getEllipse.js.map +1 -0
  760. package/lib/roi/roi.types.d.ts +29 -0
  761. package/lib/roi/roi.types.d.ts.map +1 -0
  762. package/lib/roi/roi.types.js +2 -0
  763. package/lib/roi/roi.types.js.map +1 -0
  764. package/lib/roi/utils/colorMaps/getBinaryMap.d.ts +33 -0
  765. package/lib/roi/utils/colorMaps/getBinaryMap.d.ts.map +1 -0
  766. package/lib/roi/utils/colorMaps/getBinaryMap.js +27 -0
  767. package/lib/roi/utils/colorMaps/getBinaryMap.js.map +1 -0
  768. package/lib/roi/utils/colorMaps/getRainbowMap.d.ts +23 -0
  769. package/lib/roi/utils/colorMaps/getRainbowMap.d.ts.map +1 -0
  770. package/lib/roi/utils/colorMaps/getRainbowMap.js +37 -0
  771. package/lib/roi/utils/colorMaps/getRainbowMap.js.map +1 -0
  772. package/lib/roi/utils/colorMaps/getSaturationMap.d.ts +33 -0
  773. package/lib/roi/utils/colorMaps/getSaturationMap.d.ts.map +1 -0
  774. package/lib/roi/utils/colorMaps/getSaturationMap.js +32 -0
  775. package/lib/roi/utils/colorMaps/getSaturationMap.js.map +1 -0
  776. package/lib/roi/utils/getColorMap.d.ts +29 -0
  777. package/lib/roi/utils/getColorMap.d.ts.map +1 -0
  778. package/lib/roi/utils/getColorMap.js +19 -0
  779. package/lib/roi/utils/getColorMap.js.map +1 -0
  780. package/lib/roi/utils/hsvToRgb.d.ts +20 -0
  781. package/lib/roi/utils/hsvToRgb.d.ts.map +1 -0
  782. package/lib/roi/utils/hsvToRgb.js +53 -0
  783. package/lib/roi/utils/hsvToRgb.js.map +1 -0
  784. package/lib/roi/utils/rgbToNumber.d.ts +7 -0
  785. package/lib/roi/utils/rgbToNumber.d.ts.map +1 -0
  786. package/lib/roi/utils/rgbToNumber.js +9 -0
  787. package/lib/roi/utils/rgbToNumber.js.map +1 -0
  788. package/lib/roi/waterShed.d.ts +36 -0
  789. package/lib/roi/waterShed.d.ts.map +1 -0
  790. package/lib/roi/waterShed.js +91 -0
  791. package/lib/roi/waterShed.js.map +1 -0
  792. package/lib/save/encode.d.ts +24 -28
  793. package/lib/save/encode.d.ts.map +1 -1
  794. package/lib/save/encode.js +23 -23
  795. package/lib/save/encode.js.map +1 -1
  796. package/lib/save/encodeBmp.d.ts +9 -0
  797. package/lib/save/encodeBmp.d.ts.map +1 -0
  798. package/lib/save/encodeBmp.js +22 -0
  799. package/lib/save/encodeBmp.js.map +1 -0
  800. package/lib/save/encodeDataURL.d.ts +10 -0
  801. package/lib/save/encodeDataURL.d.ts.map +1 -0
  802. package/lib/save/encodeDataURL.js +15 -0
  803. package/lib/save/encodeDataURL.js.map +1 -0
  804. package/lib/save/encodeJpeg.d.ts +14 -3
  805. package/lib/save/encodeJpeg.d.ts.map +1 -1
  806. package/lib/save/encodeJpeg.js +16 -14
  807. package/lib/save/encodeJpeg.js.map +1 -1
  808. package/lib/save/encodePng.d.ts +11 -4
  809. package/lib/save/encodePng.d.ts.map +1 -1
  810. package/lib/save/encodePng.js +21 -6
  811. package/lib/save/encodePng.js.map +1 -1
  812. package/lib/save/index.d.ts +6 -5
  813. package/lib/save/index.d.ts.map +1 -1
  814. package/lib/save/index.js +6 -10
  815. package/lib/save/index.js.map +1 -1
  816. package/lib/save/write.d.ts +45 -6
  817. package/lib/save/write.d.ts.map +1 -1
  818. package/lib/save/write.js +58 -35
  819. package/lib/save/write.js.map +1 -1
  820. package/lib/save/writeCanvas.d.ts +30 -4
  821. package/lib/save/writeCanvas.d.ts.map +1 -1
  822. package/lib/save/writeCanvas.js +21 -14
  823. package/lib/save/writeCanvas.js.map +1 -1
  824. package/lib/ssim/compute_dssim.d.ts +12 -0
  825. package/lib/ssim/compute_dssim.d.ts.map +1 -0
  826. package/lib/ssim/compute_dssim.js +14 -0
  827. package/lib/ssim/compute_dssim.js.map +1 -0
  828. package/lib/ssim/compute_ssim.d.ts +42 -0
  829. package/lib/ssim/compute_ssim.d.ts.map +1 -0
  830. package/lib/ssim/compute_ssim.js +56 -0
  831. package/lib/ssim/compute_ssim.js.map +1 -0
  832. package/lib/ssim/index.d.ts +3 -0
  833. package/lib/ssim/index.d.ts.map +1 -0
  834. package/lib/ssim/index.js +3 -0
  835. package/lib/ssim/index.js.map +1 -0
  836. package/lib/stack/compute/histogram.d.ts +10 -0
  837. package/lib/stack/compute/histogram.d.ts.map +1 -0
  838. package/lib/stack/compute/histogram.js +21 -0
  839. package/lib/stack/compute/histogram.js.map +1 -0
  840. package/lib/stack/compute/maxImage.d.ts +9 -0
  841. package/lib/stack/compute/maxImage.d.ts.map +1 -0
  842. package/lib/stack/compute/maxImage.js +21 -0
  843. package/lib/stack/compute/maxImage.js.map +1 -0
  844. package/lib/stack/compute/meanImage.d.ts +9 -0
  845. package/lib/stack/compute/meanImage.d.ts.map +1 -0
  846. package/lib/stack/compute/meanImage.js +29 -0
  847. package/lib/stack/compute/meanImage.js.map +1 -0
  848. package/lib/stack/compute/medianImage.d.ts +9 -0
  849. package/lib/stack/compute/medianImage.d.ts.map +1 -0
  850. package/lib/stack/compute/medianImage.js +25 -0
  851. package/lib/stack/compute/medianImage.js.map +1 -0
  852. package/lib/stack/compute/minImage.d.ts +9 -0
  853. package/lib/stack/compute/minImage.d.ts.map +1 -0
  854. package/lib/stack/compute/minImage.js +22 -0
  855. package/lib/stack/compute/minImage.js.map +1 -0
  856. package/lib/stack/compute/sum.d.ts +9 -0
  857. package/lib/stack/compute/sum.d.ts.map +1 -0
  858. package/lib/stack/compute/sum.js +30 -0
  859. package/lib/stack/compute/sum.js.map +1 -0
  860. package/lib/stack/index.d.ts +8 -0
  861. package/lib/stack/index.d.ts.map +1 -0
  862. package/lib/stack/index.js +8 -0
  863. package/lib/stack/index.js.map +1 -0
  864. package/lib/stack/load/decodeStack.d.ts +9 -0
  865. package/lib/stack/load/decodeStack.d.ts.map +1 -0
  866. package/lib/stack/load/decodeStack.js +19 -0
  867. package/lib/stack/load/decodeStack.js.map +1 -0
  868. package/lib/stack/load/decodeTiff.d.ts +8 -0
  869. package/lib/stack/load/decodeTiff.d.ts.map +1 -0
  870. package/lib/stack/load/decodeTiff.js +17 -0
  871. package/lib/stack/load/decodeTiff.js.map +1 -0
  872. package/lib/stack/utils/checkImagesValid.d.ts +13 -0
  873. package/lib/stack/utils/checkImagesValid.d.ts.map +1 -0
  874. package/lib/stack/utils/checkImagesValid.js +29 -0
  875. package/lib/stack/utils/checkImagesValid.js.map +1 -0
  876. package/lib/stack/utils/checkProcessable.d.ts +24 -0
  877. package/lib/stack/utils/checkProcessable.d.ts.map +1 -0
  878. package/lib/stack/utils/checkProcessable.js +32 -0
  879. package/lib/stack/utils/checkProcessable.js.map +1 -0
  880. package/lib/stack/utils/getStackFromFolder.d.ts +8 -0
  881. package/lib/stack/utils/getStackFromFolder.d.ts.map +1 -0
  882. package/lib/stack/utils/getStackFromFolder.js +16 -0
  883. package/lib/stack/utils/getStackFromFolder.js.map +1 -0
  884. package/lib/utils/arrayPointsToObjects.d.ts +8 -0
  885. package/lib/utils/arrayPointsToObjects.d.ts.map +1 -0
  886. package/lib/utils/arrayPointsToObjects.js +13 -0
  887. package/lib/utils/arrayPointsToObjects.js.map +1 -0
  888. package/lib/utils/boolToNumber.d.ts +8 -0
  889. package/lib/utils/boolToNumber.d.ts.map +1 -0
  890. package/lib/utils/boolToNumber.js +16 -0
  891. package/lib/utils/boolToNumber.js.map +1 -0
  892. package/lib/utils/borderIterator.d.ts +9 -0
  893. package/lib/utils/borderIterator.d.ts.map +1 -0
  894. package/lib/utils/borderIterator.js +20 -0
  895. package/lib/utils/borderIterator.js.map +1 -0
  896. package/lib/utils/clamp.d.ts +15 -2
  897. package/lib/utils/clamp.d.ts.map +1 -1
  898. package/lib/utils/clamp.js +41 -5
  899. package/lib/utils/clamp.js.map +1 -1
  900. package/lib/utils/constants/channelLabels.d.ts +8 -0
  901. package/lib/utils/constants/channelLabels.d.ts.map +1 -0
  902. package/lib/utils/constants/channelLabels.js +8 -0
  903. package/lib/utils/constants/channelLabels.js.map +1 -0
  904. package/lib/utils/constants/colorModels.d.ts +14 -0
  905. package/lib/utils/constants/colorModels.d.ts.map +1 -0
  906. package/lib/utils/constants/colorModels.js +35 -0
  907. package/lib/utils/constants/colorModels.js.map +1 -0
  908. package/lib/utils/constants/kernels.d.ts +13 -0
  909. package/lib/utils/constants/kernels.d.ts.map +1 -0
  910. package/lib/utils/constants/kernels.js +63 -0
  911. package/lib/utils/constants/kernels.js.map +1 -0
  912. package/lib/utils/constants/kinds.d.ts +7 -0
  913. package/lib/utils/constants/kinds.d.ts.map +1 -0
  914. package/lib/utils/constants/kinds.js +19 -0
  915. package/lib/utils/constants/kinds.js.map +1 -0
  916. package/lib/utils/copyData.d.ts +5 -0
  917. package/lib/utils/copyData.d.ts.map +1 -0
  918. package/lib/utils/copyData.js +15 -0
  919. package/lib/utils/copyData.js.map +1 -0
  920. package/lib/utils/cross_platform.d.ts +11 -0
  921. package/lib/utils/cross_platform.d.ts.map +1 -0
  922. package/lib/utils/cross_platform.js +17 -0
  923. package/lib/utils/cross_platform.js.map +1 -0
  924. package/lib/utils/geometry/angles.d.ts +16 -0
  925. package/lib/utils/geometry/angles.d.ts.map +1 -0
  926. package/lib/utils/geometry/angles.js +24 -0
  927. package/lib/utils/geometry/angles.js.map +1 -0
  928. package/lib/utils/geometry/getCirclePoints.d.ts +30 -0
  929. package/lib/utils/geometry/getCirclePoints.d.ts.map +1 -0
  930. package/lib/utils/geometry/getCirclePoints.js +88 -0
  931. package/lib/utils/geometry/getCirclePoints.js.map +1 -0
  932. package/lib/utils/geometry/index.d.ts +2 -0
  933. package/lib/utils/geometry/index.d.ts.map +1 -0
  934. package/lib/utils/geometry/index.js +2 -0
  935. package/lib/utils/geometry/index.js.map +1 -0
  936. package/lib/utils/geometry/lines.d.ts +23 -0
  937. package/lib/utils/geometry/lines.d.ts.map +1 -0
  938. package/lib/utils/geometry/lines.js +10 -0
  939. package/lib/utils/geometry/lines.js.map +1 -0
  940. package/lib/utils/geometry/points.d.ts +67 -0
  941. package/lib/utils/geometry/points.d.ts.map +1 -0
  942. package/lib/utils/geometry/points.js +78 -0
  943. package/lib/utils/geometry/points.js.map +1 -0
  944. package/lib/utils/geometry/polygons.d.ts +16 -0
  945. package/lib/utils/geometry/polygons.d.ts.map +1 -0
  946. package/lib/utils/geometry/polygons.js +30 -0
  947. package/lib/utils/geometry/polygons.js.map +1 -0
  948. package/lib/utils/geometry/removeClosePoints.d.ts +28 -0
  949. package/lib/utils/geometry/removeClosePoints.d.ts.map +1 -0
  950. package/lib/utils/geometry/removeClosePoints.js +43 -0
  951. package/lib/utils/geometry/removeClosePoints.js.map +1 -0
  952. package/lib/utils/getDefaultColor.d.ts +10 -0
  953. package/lib/utils/getDefaultColor.d.ts.map +1 -0
  954. package/lib/utils/getDefaultColor.js +17 -0
  955. package/lib/utils/getDefaultColor.js.map +1 -0
  956. package/lib/utils/getIndex.d.ts +5 -0
  957. package/lib/utils/getIndex.d.ts.map +1 -0
  958. package/lib/utils/getIndex.js +12 -0
  959. package/lib/utils/getIndex.js.map +1 -0
  960. package/lib/utils/getMinMax.d.ts +11 -0
  961. package/lib/utils/getMinMax.d.ts.map +1 -0
  962. package/lib/utils/getMinMax.js +24 -0
  963. package/lib/utils/getMinMax.js.map +1 -0
  964. package/lib/utils/getOutputImage.d.ts +40 -8
  965. package/lib/utils/getOutputImage.d.ts.map +1 -1
  966. package/lib/utils/getOutputImage.js +120 -19
  967. package/lib/utils/getOutputImage.js.map +1 -1
  968. package/lib/utils/getRadius.d.ts +7 -0
  969. package/lib/utils/getRadius.d.ts.map +1 -0
  970. package/lib/utils/getRadius.js +12 -0
  971. package/lib/utils/getRadius.js.map +1 -0
  972. package/lib/utils/interpolateBorder.d.ts +53 -2
  973. package/lib/utils/interpolateBorder.d.ts.map +1 -1
  974. package/lib/utils/interpolateBorder.js +129 -43
  975. package/lib/utils/interpolateBorder.js.map +1 -1
  976. package/lib/utils/interpolatePixel.d.ts +14 -4
  977. package/lib/utils/interpolatePixel.d.ts.map +1 -1
  978. package/lib/utils/interpolatePixel.js +117 -22
  979. package/lib/utils/interpolatePixel.js.map +1 -1
  980. package/lib/utils/round.d.ts +5 -0
  981. package/lib/utils/round.d.ts.map +1 -1
  982. package/lib/utils/round.js +15 -10
  983. package/lib/utils/round.js.map +1 -1
  984. package/lib/utils/sampleBackgroundPoints.d.ts +34 -0
  985. package/lib/utils/sampleBackgroundPoints.d.ts.map +1 -0
  986. package/lib/utils/sampleBackgroundPoints.js +37 -0
  987. package/lib/utils/sampleBackgroundPoints.js.map +1 -0
  988. package/lib/utils/setBlendedPixel.d.ts +11 -0
  989. package/lib/utils/setBlendedPixel.d.ts.map +1 -0
  990. package/lib/utils/setBlendedPixel.js +36 -0
  991. package/lib/utils/setBlendedPixel.js.map +1 -0
  992. package/lib/utils/setBlendedVisiblePixel.d.ts +11 -0
  993. package/lib/utils/setBlendedVisiblePixel.d.ts.map +1 -0
  994. package/lib/utils/setBlendedVisiblePixel.js +14 -0
  995. package/lib/utils/setBlendedVisiblePixel.js.map +1 -0
  996. package/lib/utils/surroundingPixels.d.ts +9 -0
  997. package/lib/utils/surroundingPixels.d.ts.map +1 -0
  998. package/lib/utils/surroundingPixels.js +15 -0
  999. package/lib/utils/surroundingPixels.js.map +1 -0
  1000. package/lib/utils/utils.types.d.ts +25 -0
  1001. package/lib/utils/utils.types.d.ts.map +1 -0
  1002. package/lib/utils/utils.types.js +2 -0
  1003. package/lib/utils/utils.types.js.map +1 -0
  1004. package/lib/utils/validators/assert.d.ts +12 -0
  1005. package/lib/utils/validators/assert.d.ts.map +1 -0
  1006. package/lib/utils/validators/assert.js +18 -0
  1007. package/lib/utils/validators/assert.js.map +1 -0
  1008. package/lib/utils/validators/checkKernel.d.ts +6 -0
  1009. package/lib/utils/validators/checkKernel.d.ts.map +1 -0
  1010. package/lib/utils/validators/checkKernel.js +10 -0
  1011. package/lib/utils/validators/checkKernel.js.map +1 -0
  1012. package/lib/utils/validators/checkPointIsInteger.d.ts +8 -0
  1013. package/lib/utils/validators/checkPointIsInteger.d.ts.map +1 -0
  1014. package/lib/utils/validators/checkPointIsInteger.js +11 -0
  1015. package/lib/utils/validators/checkPointIsInteger.js.map +1 -0
  1016. package/lib/utils/validators/checkProcessable.d.ts +25 -0
  1017. package/lib/utils/validators/checkProcessable.d.ts.map +1 -0
  1018. package/lib/utils/validators/checkProcessable.js +64 -0
  1019. package/lib/utils/validators/checkProcessable.js.map +1 -0
  1020. package/lib/utils/validators/validators.d.ts +39 -0
  1021. package/lib/utils/validators/validators.d.ts.map +1 -0
  1022. package/lib/utils/validators/validators.js +66 -0
  1023. package/lib/utils/validators/validators.js.map +1 -0
  1024. package/package.json +91 -20
  1025. package/src/Image.ts +978 -163
  1026. package/src/Mask.ts +731 -0
  1027. package/src/Stack.ts +204 -0
  1028. package/src/align/affineTransfrom/affineFitFunction.ts +27 -0
  1029. package/src/align/affineTransfrom/applyAffineTransform.ts +27 -0
  1030. package/src/align/affineTransfrom/createAffineTransformModel.ts +31 -0
  1031. package/src/align/affineTransfrom/drawResult.ts +56 -0
  1032. package/src/align/affineTransfrom/getAffineTransform.ts +310 -0
  1033. package/src/align/affineTransfrom/getEuclideanDistance.ts +11 -0
  1034. package/src/align/affineTransfrom/getMatrixFromPoints.ts +20 -0
  1035. package/src/align/affineTransfrom/getPointsFromMatrix.ts +17 -0
  1036. package/src/align/affineTransfrom/utils/getSourceWithoutMargins.ts +30 -0
  1037. package/src/align/alignMinDifference.ts +114 -0
  1038. package/src/align/index.ts +2 -0
  1039. package/src/compare/add.ts +34 -0
  1040. package/src/compare/computePsnr.ts +17 -0
  1041. package/src/compare/computeRmse.ts +33 -0
  1042. package/src/compare/divide.ts +50 -0
  1043. package/src/compare/index.ts +6 -0
  1044. package/src/compare/multiply.ts +48 -0
  1045. package/src/compare/subtract.ts +86 -0
  1046. package/src/compute/getExtrema.ts +103 -0
  1047. package/src/compute/histogram.ts +32 -10
  1048. package/src/compute/index.ts +5 -1
  1049. package/src/compute/mean.ts +48 -0
  1050. package/src/compute/median.ts +50 -0
  1051. package/src/compute/variance.ts +41 -0
  1052. package/src/correctColor/correctColor.ts +109 -0
  1053. package/src/correctColor/index.ts +1 -0
  1054. package/src/correctColor/utils/formatData.ts +86 -0
  1055. package/src/correctColor/utils/getImageColors.ts +23 -0
  1056. package/src/correctColor/utils/referenceColorCard.ts +175 -0
  1057. package/src/draw/drawCircleOnImage.ts +123 -0
  1058. package/src/draw/drawLineOnImage.ts +64 -0
  1059. package/src/draw/drawLineOnMask.ts +45 -0
  1060. package/src/draw/drawMarker.ts +108 -0
  1061. package/src/draw/drawMarkers.ts +25 -0
  1062. package/src/draw/drawPoints.ts +74 -0
  1063. package/src/draw/drawPolygonOnImage.ts +80 -0
  1064. package/src/draw/drawPolygonOnMask.ts +69 -0
  1065. package/src/draw/drawPolylineOnImage.ts +56 -0
  1066. package/src/draw/drawPolylineOnMask.ts +37 -0
  1067. package/src/draw/drawRectangle.ts +123 -0
  1068. package/src/draw/index.ts +11 -0
  1069. package/src/draw/utils/deleteDuplicates.ts +21 -0
  1070. package/src/draw/utils/roundPoint.ts +13 -0
  1071. package/src/featureMatching/descriptors/getBrief.ts +42 -0
  1072. package/src/featureMatching/descriptors/getBriefDescriptors.ts +108 -0
  1073. package/src/featureMatching/descriptors/utils/getKeypointPatch.ts +59 -0
  1074. package/src/featureMatching/descriptors/utils/sliceBrief.ts +34 -0
  1075. package/src/featureMatching/featureMatching.types.ts +26 -0
  1076. package/src/featureMatching/index.ts +12 -0
  1077. package/src/featureMatching/keypoints/getBestKeypointsInRadius.ts +39 -0
  1078. package/src/featureMatching/keypoints/getFastKeypoints.ts +157 -0
  1079. package/src/featureMatching/keypoints/getFastScore.ts +37 -0
  1080. package/src/featureMatching/keypoints/getHarrisScore.ts +73 -0
  1081. package/src/featureMatching/keypoints/getIntensityCentroid.ts +34 -0
  1082. package/src/featureMatching/keypoints/getIntensityMoment.ts +43 -0
  1083. package/src/featureMatching/keypoints/getOrientedFastKeypoints.ts +67 -0
  1084. package/src/featureMatching/keypoints/getPatchIntensityCentroid.ts +39 -0
  1085. package/src/featureMatching/keypoints/getPatchIntensityMoment.ts +56 -0
  1086. package/src/featureMatching/keypoints/isFastKeypoint.ts +101 -0
  1087. package/src/featureMatching/keypoints/utils/getDistanceMatrix.ts +35 -0
  1088. package/src/featureMatching/keypoints/utils/getKeypointsInRadius.ts +34 -0
  1089. package/src/featureMatching/matching/bruteForceMatch.ts +79 -0
  1090. package/src/featureMatching/matching/filterEuclideanDistance.ts +71 -0
  1091. package/src/featureMatching/matching/filterSmallestDistanceMatches.ts +33 -0
  1092. package/src/featureMatching/matching/getCrosscheckMatches.ts +69 -0
  1093. package/src/featureMatching/matching/getHammingDistance.ts +20 -0
  1094. package/src/featureMatching/utils/checkBorderDistance.ts +22 -0
  1095. package/src/featureMatching/utils/compareIntensity.ts +35 -0
  1096. package/src/featureMatching/utils/extractSquareImage.ts +27 -0
  1097. package/src/featureMatching/utils/getColors.ts +34 -0
  1098. package/src/featureMatching/utils/getGaussianPoints.ts +64 -0
  1099. package/src/featureMatching/utils/getKeypointColor.ts +29 -0
  1100. package/src/featureMatching/utils/getMatchColor.ts +27 -0
  1101. package/src/featureMatching/utils/sortByDistance.ts +12 -0
  1102. package/src/featureMatching/utils/sortBySourceDest.ts +27 -0
  1103. package/src/featureMatching/visualize/Montage.ts +165 -0
  1104. package/src/featureMatching/visualize/drawKeypoints.ts +146 -0
  1105. package/src/featureMatching/visualize/drawMatches.ts +107 -0
  1106. package/src/featureMatching/visualize/overlapImages.ts +67 -0
  1107. package/src/featureMatching/visualize/scaleKeypoints.ts +24 -0
  1108. package/src/filters/and.ts +33 -0
  1109. package/src/filters/blur.ts +42 -7
  1110. package/src/filters/convolution.ts +190 -128
  1111. package/src/filters/derivativeFilter.ts +71 -0
  1112. package/src/filters/flip.ts +35 -0
  1113. package/src/filters/flipX.ts +32 -0
  1114. package/src/filters/flipY.ts +34 -0
  1115. package/src/filters/gaussianBlur.ts +75 -29
  1116. package/src/filters/gradientFilter.ts +103 -0
  1117. package/src/filters/hypotenuse.ts +62 -0
  1118. package/src/filters/increaseContrast.ts +69 -0
  1119. package/src/filters/index.ts +14 -4
  1120. package/src/filters/invert.ts +42 -11
  1121. package/src/filters/level.ts +131 -0
  1122. package/src/filters/medianFilter.ts +83 -0
  1123. package/src/filters/or.ts +33 -0
  1124. package/src/filters/pixelate.ts +178 -0
  1125. package/src/geometry/getPerspectiveWarp.ts +169 -0
  1126. package/src/geometry/index.ts +6 -1
  1127. package/src/geometry/resize.ts +166 -0
  1128. package/src/geometry/rotate.ts +63 -0
  1129. package/src/geometry/transform.ts +180 -40
  1130. package/src/geometry/transformRotate.ts +65 -0
  1131. package/src/index.ts +24 -8
  1132. package/src/load/decode.ts +18 -16
  1133. package/src/load/decodeJpeg.ts +20 -4
  1134. package/src/load/decodePng.ts +30 -27
  1135. package/src/load/decodeTiff.ts +63 -0
  1136. package/src/load/fetchURL.ts +13 -0
  1137. package/src/load/getMetadata.ts +18 -0
  1138. package/src/load/index.ts +9 -6
  1139. package/src/load/load.types.ts +7 -0
  1140. package/src/load/read.ts +15 -12
  1141. package/src/load/readCanvas.ts +11 -9
  1142. package/src/load/readImg.ts +15 -9
  1143. package/src/maskAnalysis/getBorderPoints.ts +70 -0
  1144. package/src/maskAnalysis/getConvexHull.ts +29 -0
  1145. package/src/maskAnalysis/getFeret.ts +239 -0
  1146. package/src/maskAnalysis/getMbr.ts +17 -0
  1147. package/src/maskAnalysis/index.ts +1 -0
  1148. package/src/maskAnalysis/maskAnalysis.types.ts +100 -0
  1149. package/src/maskAnalysis/utils/getAngle.ts +40 -0
  1150. package/src/maskAnalysis/utils/getExtendedBorderPoints.ts +30 -0
  1151. package/src/maskAnalysis/utils/getMbrAngle.ts +25 -0
  1152. package/src/maskAnalysis/utils/getMbrFromPoints.ts +112 -0
  1153. package/src/maskAnalysis/utils/monotoneChainConvexHull.ts +65 -0
  1154. package/src/morphology/bottomHat.ts +64 -0
  1155. package/src/morphology/cannyEdgeDetector.ts +209 -0
  1156. package/src/morphology/clearBorder.ts +41 -0
  1157. package/src/morphology/close.ts +59 -0
  1158. package/src/morphology/dilate.ts +261 -0
  1159. package/src/morphology/erode.ts +261 -0
  1160. package/src/morphology/floodFill.ts +38 -0
  1161. package/src/morphology/index.ts +11 -0
  1162. package/src/morphology/morphologicalGradient.ts +66 -0
  1163. package/src/morphology/multipleFloodFill.ts +135 -0
  1164. package/src/morphology/open.ts +62 -0
  1165. package/src/morphology/solidFill.ts +29 -0
  1166. package/src/morphology/topHat.ts +62 -0
  1167. package/src/operations/convertBitDepth.ts +74 -0
  1168. package/src/operations/convertColor.ts +143 -66
  1169. package/src/operations/copyTo.ts +79 -0
  1170. package/src/operations/correctBackground.ts +71 -0
  1171. package/src/operations/crop.ts +94 -0
  1172. package/src/operations/cropAlpha.ts +108 -0
  1173. package/src/operations/cropRectangle.ts +112 -0
  1174. package/src/operations/extendBorders.ts +119 -0
  1175. package/src/operations/extract.ts +76 -0
  1176. package/src/operations/getMaskFromCannyEdge.ts +41 -0
  1177. package/src/operations/grey.ts +139 -0
  1178. package/src/operations/greyAlgorithms.ts +248 -0
  1179. package/src/operations/index.ts +16 -4
  1180. package/src/operations/merge.ts +66 -0
  1181. package/src/operations/operations.types.ts +6 -0
  1182. package/src/operations/paintMaskOnImage.ts +111 -0
  1183. package/src/operations/paintMaskOnMask.ts +59 -0
  1184. package/src/operations/split.ts +11 -4
  1185. package/src/operations/threshold.ts +113 -58
  1186. package/src/operations/thresholds/huang.ts +84 -0
  1187. package/src/operations/thresholds/intermodes.ts +61 -0
  1188. package/src/operations/thresholds/isodata.ts +53 -0
  1189. package/src/operations/thresholds/li.ts +80 -0
  1190. package/src/operations/thresholds/maxEntropy.ts +88 -0
  1191. package/src/operations/thresholds/mean.ts +22 -0
  1192. package/src/operations/thresholds/minError.ts +101 -0
  1193. package/src/operations/thresholds/minimum.ts +77 -0
  1194. package/src/operations/thresholds/moments.ts +59 -0
  1195. package/src/operations/thresholds/otsu.ts +7 -1
  1196. package/src/operations/thresholds/percentile.ts +39 -0
  1197. package/src/operations/thresholds/renyiEntropy.ts +145 -0
  1198. package/src/operations/thresholds/shanbhag.ts +80 -0
  1199. package/src/operations/thresholds/triangle.ts +8 -2
  1200. package/src/operations/thresholds/yen.ts +59 -0
  1201. package/src/point/operations.ts +29 -0
  1202. package/src/roi/Roi.ts +661 -0
  1203. package/src/roi/RoiMapManager.ts +97 -0
  1204. package/src/roi/colorRois.ts +68 -0
  1205. package/src/roi/computeRois.ts +90 -0
  1206. package/src/roi/fromMask.ts +182 -0
  1207. package/src/roi/getBorderPoints.ts +20 -0
  1208. package/src/roi/getMask.ts +41 -0
  1209. package/src/roi/getRois.ts +65 -0
  1210. package/src/roi/index.ts +10 -0
  1211. package/src/roi/properties/getEllipse.ts +124 -0
  1212. package/src/roi/roi.types.ts +23 -0
  1213. package/src/roi/utils/colorMaps/getBinaryMap.ts +67 -0
  1214. package/src/roi/utils/colorMaps/getRainbowMap.ts +59 -0
  1215. package/src/roi/utils/colorMaps/getSaturationMap.ts +70 -0
  1216. package/src/roi/utils/getColorMap.ts +46 -0
  1217. package/src/roi/utils/hsvToRgb.ts +61 -0
  1218. package/src/roi/utils/rgbToNumber.ts +8 -0
  1219. package/src/roi/waterShed.ts +146 -0
  1220. package/src/save/encode.ts +41 -43
  1221. package/src/save/encodeBmp.ts +24 -0
  1222. package/src/save/encodeDataURL.ts +25 -0
  1223. package/src/save/encodeJpeg.ts +22 -13
  1224. package/src/save/encodePng.ts +30 -6
  1225. package/src/save/index.ts +6 -5
  1226. package/src/save/write.ts +129 -50
  1227. package/src/save/writeCanvas.ts +45 -19
  1228. package/src/ssim/compute_dssim.ts +21 -0
  1229. package/src/ssim/compute_ssim.ts +94 -0
  1230. package/src/ssim/index.ts +2 -0
  1231. package/src/stack/compute/histogram.ts +26 -0
  1232. package/src/stack/compute/maxImage.ts +31 -0
  1233. package/src/stack/compute/meanImage.ts +37 -0
  1234. package/src/stack/compute/medianImage.ts +30 -0
  1235. package/src/stack/compute/minImage.ts +32 -0
  1236. package/src/stack/compute/sum.ts +37 -0
  1237. package/src/stack/index.ts +7 -0
  1238. package/src/stack/load/decodeStack.ts +26 -0
  1239. package/src/stack/load/decodeTiff.ts +19 -0
  1240. package/src/stack/utils/checkImagesValid.ts +35 -0
  1241. package/src/stack/utils/checkProcessable.ts +61 -0
  1242. package/src/stack/utils/getStackFromFolder.ts +17 -0
  1243. package/src/types/bresenham-zingl.d.ts +50 -0
  1244. package/src/utils/arrayPointsToObjects.ts +15 -0
  1245. package/src/utils/boolToNumber.ts +17 -0
  1246. package/src/utils/borderIterator.ts +22 -0
  1247. package/src/utils/clamp.ts +46 -3
  1248. package/src/utils/constants/channelLabels.ts +9 -0
  1249. package/src/utils/constants/colorModels.ts +45 -0
  1250. package/src/utils/constants/kernels.ts +73 -0
  1251. package/src/utils/constants/kinds.ts +26 -0
  1252. package/src/utils/copyData.ts +21 -0
  1253. package/src/utils/cross_platform.ts +18 -0
  1254. package/src/utils/geometry/angles.ts +26 -0
  1255. package/src/utils/geometry/getCirclePoints.ts +123 -0
  1256. package/src/utils/geometry/index.ts +1 -0
  1257. package/src/utils/geometry/lines.ts +26 -0
  1258. package/src/utils/geometry/points.ts +102 -0
  1259. package/src/utils/geometry/polygons.ts +32 -0
  1260. package/src/utils/geometry/removeClosePoints.ts +82 -0
  1261. package/src/utils/getDefaultColor.ts +20 -0
  1262. package/src/utils/getIndex.ts +26 -0
  1263. package/src/utils/getMinMax.ts +27 -0
  1264. package/src/utils/getOutputImage.ts +149 -32
  1265. package/src/utils/getRadius.ts +11 -0
  1266. package/src/utils/interpolateBorder.ts +193 -40
  1267. package/src/utils/interpolatePixel.ts +162 -27
  1268. package/src/utils/round.ts +13 -8
  1269. package/src/utils/sampleBackgroundPoints.ts +84 -0
  1270. package/src/utils/setBlendedPixel.ts +54 -0
  1271. package/src/utils/setBlendedVisiblePixel.ts +22 -0
  1272. package/src/utils/surroundingPixels.ts +14 -0
  1273. package/src/utils/utils.types.ts +32 -0
  1274. package/src/utils/validators/assert.ts +18 -0
  1275. package/src/utils/validators/checkKernel.ts +11 -0
  1276. package/src/utils/validators/checkPointIsInteger.ts +12 -0
  1277. package/src/utils/validators/checkProcessable.ts +95 -0
  1278. package/src/utils/validators/validators.ts +82 -0
  1279. package/lib/load/checkHeader.d.ts +0 -8
  1280. package/lib/load/checkHeader.d.ts.map +0 -1
  1281. package/lib/load/checkHeader.js +0 -21
  1282. package/lib/load/checkHeader.js.map +0 -1
  1283. package/lib/operations/convertDepth.d.ts +0 -3
  1284. package/lib/operations/convertDepth.d.ts.map +0 -1
  1285. package/lib/operations/convertDepth.js +0 -40
  1286. package/lib/operations/convertDepth.js.map +0 -1
  1287. package/lib/types.d.ts +0 -12
  1288. package/lib/types.d.ts.map +0 -1
  1289. package/lib/types.js +0 -16
  1290. package/lib/types.js.map +0 -1
  1291. package/lib/utils/kinds.d.ts +0 -9
  1292. package/lib/utils/kinds.d.ts.map +0 -1
  1293. package/lib/utils/kinds.js +0 -22
  1294. package/lib/utils/kinds.js.map +0 -1
  1295. package/lib/utils/validators.d.ts +0 -7
  1296. package/lib/utils/validators.d.ts.map +0 -1
  1297. package/lib/utils/validators.js +0 -19
  1298. package/lib/utils/validators.js.map +0 -1
  1299. package/lib-esm/Image.d.ts +0 -161
  1300. package/lib-esm/Image.d.ts.map +0 -1
  1301. package/lib-esm/Image.js +0 -246
  1302. package/lib-esm/Image.js.map +0 -1
  1303. package/lib-esm/compute/histogram.d.ts +0 -15
  1304. package/lib-esm/compute/histogram.d.ts.map +0 -1
  1305. package/lib-esm/compute/histogram.js +0 -21
  1306. package/lib-esm/compute/histogram.js.map +0 -1
  1307. package/lib-esm/compute/index.d.ts +0 -2
  1308. package/lib-esm/compute/index.d.ts.map +0 -1
  1309. package/lib-esm/compute/index.js +0 -2
  1310. package/lib-esm/compute/index.js.map +0 -1
  1311. package/lib-esm/filters/blur.d.ts +0 -10
  1312. package/lib-esm/filters/blur.d.ts.map +0 -1
  1313. package/lib-esm/filters/blur.js +0 -12
  1314. package/lib-esm/filters/blur.js.map +0 -1
  1315. package/lib-esm/filters/convolution.d.ts +0 -11
  1316. package/lib-esm/filters/convolution.d.ts.map +0 -1
  1317. package/lib-esm/filters/convolution.js +0 -114
  1318. package/lib-esm/filters/convolution.js.map +0 -1
  1319. package/lib-esm/filters/gaussianBlur.d.ts +0 -19
  1320. package/lib-esm/filters/gaussianBlur.d.ts.map +0 -1
  1321. package/lib-esm/filters/gaussianBlur.js +0 -46
  1322. package/lib-esm/filters/gaussianBlur.js.map +0 -1
  1323. package/lib-esm/filters/index.d.ts +0 -5
  1324. package/lib-esm/filters/index.d.ts.map +0 -1
  1325. package/lib-esm/filters/index.js +0 -5
  1326. package/lib-esm/filters/index.js.map +0 -1
  1327. package/lib-esm/filters/invert.d.ts +0 -10
  1328. package/lib-esm/filters/invert.d.ts.map +0 -1
  1329. package/lib-esm/filters/invert.js +0 -14
  1330. package/lib-esm/filters/invert.js.map +0 -1
  1331. package/lib-esm/geometry/index.d.ts +0 -2
  1332. package/lib-esm/geometry/index.d.ts.map +0 -1
  1333. package/lib-esm/geometry/index.js +0 -2
  1334. package/lib-esm/geometry/index.js.map +0 -1
  1335. package/lib-esm/geometry/transform.d.ts +0 -13
  1336. package/lib-esm/geometry/transform.d.ts.map +0 -1
  1337. package/lib-esm/geometry/transform.js +0 -46
  1338. package/lib-esm/geometry/transform.js.map +0 -1
  1339. package/lib-esm/index.d.ts +0 -9
  1340. package/lib-esm/index.d.ts.map +0 -1
  1341. package/lib-esm/index.js +0 -9
  1342. package/lib-esm/index.js.map +0 -1
  1343. package/lib-esm/load/checkHeader.d.ts +0 -8
  1344. package/lib-esm/load/checkHeader.d.ts.map +0 -1
  1345. package/lib-esm/load/checkHeader.js +0 -18
  1346. package/lib-esm/load/checkHeader.js.map +0 -1
  1347. package/lib-esm/load/decode.d.ts +0 -8
  1348. package/lib-esm/load/decode.d.ts.map +0 -1
  1349. package/lib-esm/load/decode.js +0 -23
  1350. package/lib-esm/load/decode.js.map +0 -1
  1351. package/lib-esm/load/decodeJpeg.d.ts +0 -7
  1352. package/lib-esm/load/decodeJpeg.d.ts.map +0 -1
  1353. package/lib-esm/load/decodeJpeg.js +0 -14
  1354. package/lib-esm/load/decodeJpeg.js.map +0 -1
  1355. package/lib-esm/load/decodePng.d.ts +0 -7
  1356. package/lib-esm/load/decodePng.d.ts.map +0 -1
  1357. package/lib-esm/load/decodePng.js +0 -65
  1358. package/lib-esm/load/decodePng.js.map +0 -1
  1359. package/lib-esm/load/index.d.ts +0 -7
  1360. package/lib-esm/load/index.d.ts.map +0 -1
  1361. package/lib-esm/load/index.js +0 -7
  1362. package/lib-esm/load/index.js.map +0 -1
  1363. package/lib-esm/load/read.d.ts +0 -12
  1364. package/lib-esm/load/read.d.ts.map +0 -1
  1365. package/lib-esm/load/read.js +0 -20
  1366. package/lib-esm/load/read.js.map +0 -1
  1367. package/lib-esm/load/readCanvas.d.ts +0 -3
  1368. package/lib-esm/load/readCanvas.d.ts.map +0 -1
  1369. package/lib-esm/load/readCanvas.js +0 -15
  1370. package/lib-esm/load/readCanvas.js.map +0 -1
  1371. package/lib-esm/load/readImg.d.ts +0 -3
  1372. package/lib-esm/load/readImg.d.ts.map +0 -1
  1373. package/lib-esm/load/readImg.js +0 -14
  1374. package/lib-esm/load/readImg.js.map +0 -1
  1375. package/lib-esm/operations/convertColor.d.ts +0 -6
  1376. package/lib-esm/operations/convertColor.d.ts.map +0 -1
  1377. package/lib-esm/operations/convertColor.js +0 -73
  1378. package/lib-esm/operations/convertColor.js.map +0 -1
  1379. package/lib-esm/operations/convertDepth.d.ts +0 -3
  1380. package/lib-esm/operations/convertDepth.d.ts.map +0 -1
  1381. package/lib-esm/operations/convertDepth.js +0 -37
  1382. package/lib-esm/operations/convertDepth.js.map +0 -1
  1383. package/lib-esm/operations/index.d.ts +0 -5
  1384. package/lib-esm/operations/index.d.ts.map +0 -1
  1385. package/lib-esm/operations/index.js +0 -5
  1386. package/lib-esm/operations/index.js.map +0 -1
  1387. package/lib-esm/operations/split.d.ts +0 -3
  1388. package/lib-esm/operations/split.d.ts.map +0 -1
  1389. package/lib-esm/operations/split.js +0 -13
  1390. package/lib-esm/operations/split.js.map +0 -1
  1391. package/lib-esm/operations/threshold.d.ts +0 -19
  1392. package/lib-esm/operations/threshold.d.ts.map +0 -1
  1393. package/lib-esm/operations/threshold.js +0 -53
  1394. package/lib-esm/operations/threshold.js.map +0 -1
  1395. package/lib-esm/operations/thresholds/otsu.d.ts +0 -2
  1396. package/lib-esm/operations/thresholds/otsu.d.ts.map +0 -1
  1397. package/lib-esm/operations/thresholds/otsu.js +0 -32
  1398. package/lib-esm/operations/thresholds/otsu.js.map +0 -1
  1399. package/lib-esm/operations/thresholds/triangle.d.ts +0 -2
  1400. package/lib-esm/operations/thresholds/triangle.d.ts.map +0 -1
  1401. package/lib-esm/operations/thresholds/triangle.js +0 -103
  1402. package/lib-esm/operations/thresholds/triangle.js.map +0 -1
  1403. package/lib-esm/save/encode.d.ts +0 -35
  1404. package/lib-esm/save/encode.d.ts.map +0 -1
  1405. package/lib-esm/save/encode.js +0 -22
  1406. package/lib-esm/save/encode.js.map +0 -1
  1407. package/lib-esm/save/encodeJpeg.d.ts +0 -6
  1408. package/lib-esm/save/encodeJpeg.d.ts.map +0 -1
  1409. package/lib-esm/save/encodeJpeg.js +0 -16
  1410. package/lib-esm/save/encodeJpeg.js.map +0 -1
  1411. package/lib-esm/save/encodePng.d.ts +0 -5
  1412. package/lib-esm/save/encodePng.d.ts.map +0 -1
  1413. package/lib-esm/save/encodePng.js +0 -5
  1414. package/lib-esm/save/encodePng.js.map +0 -1
  1415. package/lib-esm/save/index.d.ts +0 -6
  1416. package/lib-esm/save/index.d.ts.map +0 -1
  1417. package/lib-esm/save/index.js +0 -6
  1418. package/lib-esm/save/index.js.map +0 -1
  1419. package/lib-esm/save/write.d.ts +0 -23
  1420. package/lib-esm/save/write.d.ts.map +0 -1
  1421. package/lib-esm/save/write.js +0 -46
  1422. package/lib-esm/save/write.js.map +0 -1
  1423. package/lib-esm/save/writeCanvas.d.ts +0 -15
  1424. package/lib-esm/save/writeCanvas.d.ts.map +0 -1
  1425. package/lib-esm/save/writeCanvas.js +0 -19
  1426. package/lib-esm/save/writeCanvas.js.map +0 -1
  1427. package/lib-esm/types.d.ts +0 -12
  1428. package/lib-esm/types.d.ts.map +0 -1
  1429. package/lib-esm/types.js +0 -14
  1430. package/lib-esm/types.js.map +0 -1
  1431. package/lib-esm/utils/clamp.d.ts +0 -3
  1432. package/lib-esm/utils/clamp.d.ts.map +0 -1
  1433. package/lib-esm/utils/clamp.js +0 -4
  1434. package/lib-esm/utils/clamp.js.map +0 -1
  1435. package/lib-esm/utils/getOutputImage.d.ts +0 -26
  1436. package/lib-esm/utils/getOutputImage.d.ts.map +0 -1
  1437. package/lib-esm/utils/getOutputImage.js +0 -35
  1438. package/lib-esm/utils/getOutputImage.js.map +0 -1
  1439. package/lib-esm/utils/interpolateBorder.d.ts +0 -3
  1440. package/lib-esm/utils/interpolateBorder.d.ts.map +0 -1
  1441. package/lib-esm/utils/interpolateBorder.js +0 -48
  1442. package/lib-esm/utils/interpolateBorder.js.map +0 -1
  1443. package/lib-esm/utils/interpolatePixel.d.ts +0 -7
  1444. package/lib-esm/utils/interpolatePixel.d.ts.map +0 -1
  1445. package/lib-esm/utils/interpolatePixel.js +0 -23
  1446. package/lib-esm/utils/interpolatePixel.js.map +0 -1
  1447. package/lib-esm/utils/kinds.d.ts +0 -9
  1448. package/lib-esm/utils/kinds.d.ts.map +0 -1
  1449. package/lib-esm/utils/kinds.js +0 -20
  1450. package/lib-esm/utils/kinds.js.map +0 -1
  1451. package/lib-esm/utils/round.d.ts +0 -2
  1452. package/lib-esm/utils/round.d.ts.map +0 -1
  1453. package/lib-esm/utils/round.js +0 -11
  1454. package/lib-esm/utils/round.js.map +0 -1
  1455. package/lib-esm/utils/validators.d.ts +0 -7
  1456. package/lib-esm/utils/validators.d.ts.map +0 -1
  1457. package/lib-esm/utils/validators.js +0 -15
  1458. package/lib-esm/utils/validators.js.map +0 -1
  1459. package/src/load/checkHeader.ts +0 -20
  1460. package/src/operations/convertDepth.ts +0 -43
  1461. package/src/operations/thresholds/huang.js +0 -80
  1462. package/src/operations/thresholds/intermodes.js +0 -56
  1463. package/src/operations/thresholds/isodata.js +0 -47
  1464. package/src/operations/thresholds/li.js +0 -74
  1465. package/src/operations/thresholds/maxEntropy.js +0 -79
  1466. package/src/operations/thresholds/mean.js +0 -16
  1467. package/src/operations/thresholds/minError.js +0 -92
  1468. package/src/operations/thresholds/minimum.js +0 -75
  1469. package/src/operations/thresholds/moments.js +0 -52
  1470. package/src/operations/thresholds/percentile.js +0 -33
  1471. package/src/operations/thresholds/renyiEntropy.js +0 -142
  1472. package/src/operations/thresholds/shanbhag.js +0 -74
  1473. package/src/operations/thresholds/yen.js +0 -56
  1474. package/src/types.ts +0 -12
  1475. package/src/utils/kinds.ts +0 -27
  1476. package/src/utils/validators.ts +0 -23
package/src/Image.ts CHANGED
@@ -1,30 +1,161 @@
1
- import { invert, IInvertOptions } from './filters/invert';
2
- import { validateChannel, validateValue } from './utils/validators';
3
- import { convertColor, IConvertColorOptions } from './operations/convertColor';
4
- import { convertDepth } from './operations/convertDepth';
5
- import { split } from './operations/split';
6
- import { IHistogramOptions, histogram } from './compute';
7
-
8
- type ImageDataArray = Uint8Array | Uint16Array;
9
-
10
- export enum ColorDepth {
11
- UINT8 = 8,
12
- UINT16 = 16
13
- }
1
+ import type { RgbColor } from 'colord';
2
+ import { match } from 'ts-pattern';
14
3
 
15
- export enum ImageKind {
16
- GREY = 'GREY',
17
- GREYA = 'GREYA',
18
- RGB = 'RGB',
19
- RGBA = 'RGBA'
20
- }
4
+ import type { Mask } from './Mask.js';
5
+ import type { DivideOptions } from './compare/divide.js';
6
+ import { divide } from './compare/divide.js';
7
+ import type { SubtractImageOptions } from './compare/index.js';
8
+ import { add, subtract } from './compare/index.js';
9
+ import type { MultiplyOptions } from './compare/multiply.js';
10
+ import { multiply } from './compare/multiply.js';
11
+ import type {
12
+ HistogramOptions,
13
+ MeanOptions,
14
+ MedianOptions,
15
+ VarianceOptions,
16
+ } from './compute/index.js';
17
+ import { histogram, mean, median, variance } from './compute/index.js';
18
+ import { correctColor } from './correctColor/index.js';
19
+ import type {
20
+ DrawCircleOnImageOptions,
21
+ DrawLineOnImageOptions,
22
+ DrawMarkerOptions,
23
+ DrawPointsOptions,
24
+ DrawPolygonOnImageOptions,
25
+ DrawPolylineOnImageOptions,
26
+ DrawRectangleOptions,
27
+ } from './draw/index.js';
28
+ import {
29
+ drawCircleOnImage,
30
+ drawLineOnImage,
31
+ drawMarker,
32
+ drawMarkers,
33
+ drawPoints,
34
+ drawPolygonOnImage,
35
+ drawPolylineOnImage,
36
+ drawRectangle,
37
+ } from './draw/index.js';
38
+ import type {
39
+ BlurOptions,
40
+ ConvolutionOptions,
41
+ DerivativeFilterOptions,
42
+ FlipOptions,
43
+ GaussianBlurOptions,
44
+ GradientFilterOptions,
45
+ HypotenuseOptions,
46
+ IncreaseContrastOptions,
47
+ InvertOptions,
48
+ LevelOptions,
49
+ MedianFilterOptions,
50
+ PixelateOptions,
51
+ } from './filters/index.js';
52
+ import {
53
+ blur,
54
+ derivativeFilter,
55
+ directConvolution,
56
+ flip,
57
+ gaussianBlur,
58
+ gradientFilter,
59
+ hypotenuse,
60
+ increaseContrast,
61
+ invert,
62
+ level,
63
+ medianFilter,
64
+ pixelate,
65
+ rawDirectConvolution,
66
+ separableConvolution,
67
+ } from './filters/index.js';
68
+ import type {
69
+ Point,
70
+ ResizeOptions,
71
+ RotateAngle,
72
+ TransformOptions,
73
+ TransformRotateOptions,
74
+ } from './geometry/index.js';
75
+ import {
76
+ resize,
77
+ rotate,
78
+ transform,
79
+ transformRotate,
80
+ } from './geometry/index.js';
81
+ import type { ImageMetadata } from './load/load.types.js';
82
+ import type {
83
+ BottomHatOptions,
84
+ CannyEdgeOptions,
85
+ CloseOptions,
86
+ DilateOptions,
87
+ ErodeOptions,
88
+ MorphologicalGradientOptions,
89
+ OpenOptions,
90
+ TopHatOptions,
91
+ } from './morphology/index.js';
92
+ import {
93
+ bottomHat,
94
+ cannyEdgeDetector,
95
+ close,
96
+ dilate,
97
+ erode,
98
+ morphologicalGradient,
99
+ open,
100
+ topHat,
101
+ } from './morphology/index.js';
102
+ import type {
103
+ ConvertBitDepthOptions,
104
+ ConvertColorOptions,
105
+ CopyToOptions,
106
+ CropAlphaOptions,
107
+ CropOptions,
108
+ CropRectangleOptions,
109
+ ExtractOptions,
110
+ GreyOptions,
111
+ PaintMaskOnImageOptions,
112
+ ThresholdOptions,
113
+ } from './operations/index.js';
114
+ import {
115
+ convertBitDepth,
116
+ convertColor,
117
+ copyTo,
118
+ crop,
119
+ cropAlpha,
120
+ cropRectangle,
121
+ extract,
122
+ grey,
123
+ paintMaskOnImage,
124
+ split,
125
+ threshold,
126
+ } from './operations/index.js';
127
+ import type { ImageColorModel } from './utils/constants/colorModels.js';
128
+ import { colorModels } from './utils/constants/colorModels.js';
129
+ import { getMinMax } from './utils/getMinMax.js';
130
+ import {
131
+ validateChannel,
132
+ validateValue,
133
+ } from './utils/validators/validators.js';
134
+
135
+ export type ImageDataArray = Uint8Array | Uint16Array | Uint8ClampedArray;
136
+
137
+ /**
138
+ * Bit depth of the image (nb of bits that encode each value in the image).
139
+ */
140
+ export type BitDepth = 1 | 8 | 16;
141
+
142
+ export const ImageCoordinates = {
143
+ CENTER: 'center',
144
+ TOP_LEFT: 'top-left',
145
+ TOP_RIGHT: 'top-right',
146
+ BOTTOM_LEFT: 'bottom-left',
147
+ BOTTOM_RIGHT: 'bottom-right',
148
+ } as const;
149
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
150
+ export type ImageCoordinates =
151
+ (typeof ImageCoordinates)[keyof typeof ImageCoordinates];
21
152
 
22
- export interface INewImageOptions {
153
+ export interface ImageOptions {
23
154
  /**
24
155
  * Number of bits per value in each channel.
25
- * Default: `ColorDepth.UINT8`.
156
+ * @default `8`.
26
157
  */
27
- depth?: ColorDepth;
158
+ bitDepth?: BitDepth;
28
159
 
29
160
  /**
30
161
  * Typed array holding the image data.
@@ -32,43 +163,27 @@ export interface INewImageOptions {
32
163
  data?: ImageDataArray;
33
164
 
34
165
  /**
35
- * Height of the image.
166
+ * Color model of the created image.
167
+ * @default `'RGB'`.
36
168
  */
37
- height?: number;
169
+ colorModel?: ImageColorModel;
38
170
 
39
171
  /**
40
- * Kind of the created image.
41
- * Default: `ImageKind.RGB`.
172
+ * Origin of the image relative to a parent image (top-left corner).
173
+ * @default `{row: 0, column: 0}`
42
174
  */
43
- kind?: ImageKind;
175
+ origin?: Point;
44
176
 
45
- /**
46
- * Width of the image.
47
- */
177
+ meta?: ImageMetadata;
178
+ }
179
+
180
+ export interface CreateFromOptions extends ImageOptions {
48
181
  width?: number;
182
+ height?: number;
49
183
  }
50
184
 
51
185
  export type ImageValues = [number, number, number, number];
52
186
 
53
- const kinds: { [key in ImageKind]: { components: number; alpha: boolean } } = {
54
- [ImageKind.GREY]: {
55
- components: 1,
56
- alpha: false
57
- },
58
- [ImageKind.GREYA]: {
59
- components: 1,
60
- alpha: true
61
- },
62
- [ImageKind.RGB]: {
63
- components: 3,
64
- alpha: false
65
- },
66
- [ImageKind.RGBA]: {
67
- components: 3,
68
- alpha: true
69
- }
70
- };
71
-
72
187
  export class Image {
73
188
  /**
74
189
  * The number of columns of the image.
@@ -81,23 +196,23 @@ export class Image {
81
196
  public readonly height: number;
82
197
 
83
198
  /**
84
- * The total number of pixels in the image (width x height).
199
+ * The total number of pixels in the image (width × height).
85
200
  */
86
201
  public readonly size: number;
87
202
 
88
203
  /**
89
204
  * The number of bits per value in each channel.
90
205
  */
91
- public readonly depth: ColorDepth;
206
+ public readonly bitDepth: BitDepth;
92
207
 
93
208
  /**
94
- * The kind of the image.
209
+ * The color model of the image.
95
210
  */
96
- public readonly kind: ImageKind;
211
+ public readonly colorModel: ImageColorModel;
97
212
 
98
213
  /**
99
214
  * The number of color channels in the image, excluding the alpha channel.
100
- * A grey image has 1 component. An RGB image has 3 components.
215
+ * A GREY image has 1 component. An RGB image has 3 components.
101
216
  */
102
217
  public readonly components: number;
103
218
 
@@ -115,88 +230,82 @@ export class Image {
115
230
  * The maximum value that a pixel channel can have.
116
231
  */
117
232
  public readonly maxValue: number;
118
-
119
233
  /**
120
- * Typed array holding the image data.
234
+ * Origin of the image relative to a the parent image.
121
235
  */
122
- public readonly data: ImageDataArray;
236
+ public readonly origin: Point;
237
+
238
+ public readonly meta?: ImageMetadata;
123
239
 
124
240
  /**
125
- * Construct a new image knowing its dimensions.
126
- * @param width
127
- * @param height
128
- * @param options
241
+ * Typed array holding the image data.
129
242
  */
130
- public constructor(width: number, height: number, options?: INewImageOptions);
243
+ private readonly data: ImageDataArray;
244
+
131
245
  /**
132
- * Construct a new image only with options.
133
- * @param options
246
+ * Construct a new Image knowing its dimensions.
247
+ * @param width - Image width.
248
+ * @param height - Image height.
249
+ * @param options - Image options.
134
250
  */
135
- public constructor(options?: INewImageOptions);
136
251
  public constructor(
137
- width?: number | INewImageOptions,
138
- height?: number,
139
- options: INewImageOptions = {}
252
+ width: number,
253
+ height: number,
254
+ options: ImageOptions = {},
140
255
  ) {
141
- if (typeof width !== 'number') {
142
- options = width || {};
143
- width = undefined;
144
- }
145
-
146
- if (width === undefined) {
147
- width = options.width || 1;
148
- }
149
-
150
- if (height === undefined) {
151
- height = options.height || 1;
152
- }
153
-
154
- const { depth = ColorDepth.UINT8, data, kind = ImageKind.RGB } = options;
256
+ const {
257
+ bitDepth = 8,
258
+ data,
259
+ colorModel = 'RGB',
260
+ origin = { row: 0, column: 0 },
261
+ meta,
262
+ } = options;
155
263
 
156
264
  if (width < 1 || !Number.isInteger(width)) {
157
265
  throw new RangeError(
158
- `width must be an integer and at least 1. Received ${width}`
266
+ `width must be an integer and at least 1. Received ${width}`,
159
267
  );
160
268
  }
161
269
 
162
270
  if (height < 1 || !Number.isInteger(height)) {
163
271
  throw new RangeError(
164
- `height must be an integer and at least 1. Received ${height}`
272
+ `height must be an integer and at least 1. Received ${height}`,
165
273
  );
166
274
  }
167
275
 
168
276
  this.width = width;
169
277
  this.height = height;
170
278
  this.size = width * height;
171
- this.depth = depth;
172
- this.kind = kind;
279
+ this.bitDepth = bitDepth;
280
+ this.colorModel = colorModel;
281
+ this.origin = origin;
282
+ this.meta = meta;
173
283
 
174
- const kindDef = kinds[kind];
175
- this.components = kindDef.components;
176
- this.channels = kindDef.components + Number(kindDef.alpha);
177
- this.alpha = kindDef.alpha;
284
+ const colorModelDef = colorModels[colorModel];
285
+ this.components = colorModelDef.components;
286
+ this.alpha = colorModelDef.alpha;
287
+ this.channels = colorModelDef.channels;
178
288
 
179
- const maxValue = 2 ** depth - 1;
180
- this.maxValue = maxValue;
289
+ this.maxValue = 2 ** bitDepth - 1;
181
290
 
182
291
  if (data === undefined) {
183
292
  this.data = createPixelArray(
184
293
  this.size,
185
294
  this.channels,
186
295
  this.alpha,
187
- this.depth,
188
- maxValue
296
+ this.bitDepth,
297
+ this.maxValue,
189
298
  );
190
299
  } else {
191
- if (depth === ColorDepth.UINT8 && data instanceof Uint16Array) {
192
- throw new Error(`depth is ${depth} but data is Uint16Array`);
193
- } else if (depth === ColorDepth.UINT16 && data instanceof Uint8Array) {
194
- throw new Error(`depth is ${depth} but data is Uint8Array`);
300
+ if (bitDepth === 8 && data instanceof Uint16Array) {
301
+ throw new RangeError(`bitDepth is ${bitDepth} but data is Uint16Array`);
302
+ } else if (bitDepth === 16 && data instanceof Uint8Array) {
303
+ throw new RangeError(`bitDepth is ${bitDepth} but data is Uint8Array`);
195
304
  }
196
305
  const expectedLength = this.size * this.channels;
197
306
  if (data.length !== expectedLength) {
198
307
  throw new RangeError(
199
- `incorrect data size: ${data.length}. Expected ${expectedLength}`
308
+ `incorrect data size: ${data.length}. Expected ${expectedLength}`,
200
309
  );
201
310
  }
202
311
  this.data = data;
@@ -204,28 +313,101 @@ export class Image {
204
313
  }
205
314
 
206
315
  /**
207
- * Create a new image base on the properties of an existing one.
316
+ * Create a new Image based on the properties of an existing one.
208
317
  * @param other - Reference image.
318
+ * @param options - Image options.
319
+ * @returns New image.
209
320
  */
210
- public static createFrom(other: Image, options?: INewImageOptions): Image {
211
- return new Image({
212
- width: other.width,
213
- height: other.height,
214
- depth: other.depth,
215
- kind: other.kind,
216
- ...options
321
+ public static createFrom(
322
+ other: Image | Mask,
323
+ options: CreateFromOptions = {},
324
+ ): Image {
325
+ const { width = other.width, height = other.height } = options;
326
+ let bitDepth: BitDepth;
327
+ if (other instanceof Image) {
328
+ bitDepth = other.bitDepth;
329
+ } else {
330
+ bitDepth = 8;
331
+ }
332
+ return new Image(width, height, {
333
+ bitDepth,
334
+ colorModel: other.colorModel,
335
+ origin: other.origin,
336
+ ...options,
217
337
  });
218
338
  }
219
339
 
220
340
  /**
221
- * Get all the values of a pixel.
222
- * @param y - Row index.
223
- * @param x - Column index.
224
- * @returns Values of the pixel.
341
+ * Get all the channels of a pixel.
342
+ * @param column - Column index.
343
+ * @param row - Row index.
344
+ * @returns Channels of the pixel.
345
+ */
346
+ public getPixel(column: number, row: number): number[] {
347
+ const result = [];
348
+ const start = (row * this.width + column) * this.channels;
349
+ for (let i = 0; i < this.channels; i++) {
350
+ result.push(this.data[start + i]);
351
+ }
352
+ return result;
353
+ }
354
+
355
+ public getColumn(column: number): number[][] {
356
+ const columnValues = [];
357
+ for (let i = 0; i < this.channels; i++) {
358
+ const channelValues = [];
359
+ for (let j = 0; j < this.height; j++) {
360
+ channelValues.push(this.getValue(column, j, i));
361
+ }
362
+ columnValues.push(channelValues);
363
+ }
364
+ return columnValues;
365
+ }
366
+
367
+ public getRow(row: number): number[][] {
368
+ const rowValues = [];
369
+ for (let i = 0; i < this.channels; i++) {
370
+ const channelValues = [];
371
+ for (let j = 0; j < this.width; j++) {
372
+ channelValues.push(this.getValue(j, row, i));
373
+ }
374
+ rowValues.push(channelValues);
375
+ }
376
+ return rowValues;
377
+ }
378
+ /**
379
+ * Set all the channels of a pixel.
380
+ * @param column - Column index.
381
+ * @param row - Row index.
382
+ * @param value - New color of the pixel to set.
225
383
  */
226
- public get(y: number, x: number): number[] {
384
+ public setPixel(column: number, row: number, value: number[]): void {
385
+ const start = (row * this.width + column) * this.channels;
386
+ for (let i = 0; i < this.channels; i++) {
387
+ this.data[start + i] = value[i];
388
+ }
389
+ }
390
+
391
+ /**
392
+ * Set all the channels of a pixel if the coordinates are inside the image.
393
+ * @param column - Column index.
394
+ * @param row - Row index.
395
+ * @param value - New color of the pixel to set.
396
+ */
397
+ public setVisiblePixel(column: number, row: number, value: number[]): void {
398
+ if (column >= 0 && column < this.width && row >= 0 && row < this.height) {
399
+ this.setPixel(column, row, value);
400
+ }
401
+ }
402
+
403
+ /**
404
+ * Get all the channels of a pixel using its index.
405
+ * @param index - Index of the pixel.
406
+ * @returns Channels of the pixel.
407
+ */
408
+ public getPixelByIndex(index: number): number[] {
227
409
  const result = [];
228
- const start = (y * this.width + x) * this.channels;
410
+ const start = index * this.channels;
229
411
  for (let i = 0; i < this.channels; i++) {
230
412
  result.push(this.data[start + i]);
231
413
  }
@@ -233,41 +415,161 @@ export class Image {
233
415
  }
234
416
 
235
417
  /**
236
- * Set all the values of a pixel.
237
- * @param y - Row index.
238
- * @param x - Column index.
239
- * @param value - Values of the pixel to set.
418
+ * Set all the channels of a pixel using its index.
419
+ * @param index - Index of the pixel.
420
+ * @param value - New channel values of the pixel to set.
240
421
  */
241
- public set(y: number, x: number, value: number[]): void {
242
- const start = (y * this.width + x) * this.channels;
422
+ public setPixelByIndex(index: number, value: number[]): void {
423
+ const start = index * this.channels;
243
424
  for (let i = 0; i < this.channels; i++) {
244
425
  this.data[start + i] = value[i];
245
426
  }
246
427
  }
247
428
 
248
429
  /**
249
- * Get the value of a specific pixel channel.
250
- * @param y - Row index.
251
- * @param x - Column index.
430
+ * Get the value of a specific pixel channel. Select pixel using coordinates.
431
+ * @param column - Column index.
432
+ * @param row - Row index.
433
+ * @param channel - Channel index.
434
+ * @returns Value of the specified channel of one pixel.
435
+ */
436
+ public getValue(column: number, row: number, channel: number): number {
437
+ return this.data[(row * this.width + column) * this.channels + channel];
438
+ }
439
+
440
+ /**
441
+ * Set the value of a specific pixel channel. Select pixel using coordinates.
442
+ * @param column - Column index.
443
+ * @param row - Row index.
444
+ * @param channel - Channel index.
445
+ * @param value - Value to set.
446
+ */
447
+ public setValue(
448
+ column: number,
449
+ row: number,
450
+ channel: number,
451
+ value: number,
452
+ ): void {
453
+ this.data[(row * this.width + column) * this.channels + channel] = value;
454
+ }
455
+
456
+ /**
457
+ * Set the value of a specific pixel channel. Select pixel using coordinates.
458
+ * If the value is out of range it is set to the closest extremety.
459
+ * @param column - Column index.
460
+ * @param row - Row index.
461
+ * @param channel - Channel index.
462
+ * @param value - Value to set.
463
+ */
464
+ public setClampedValue(
465
+ column: number,
466
+ row: number,
467
+ channel: number,
468
+ value: number,
469
+ ): void {
470
+ if (value < 0) value = 0;
471
+ else if (value > this.maxValue) value = this.maxValue;
472
+ this.data[(row * this.width + column) * this.channels + channel] = value;
473
+ }
474
+ /**
475
+ * Get the value of a specific pixel channel. Select pixel using index.
476
+ * @param index - Index of the pixel.
477
+ * @param channel - Channel index.
478
+ * @returns Value of the channel of the pixel.
479
+ */
480
+ public getValueByIndex(index: number, channel: number): number {
481
+ return this.data[index * this.channels + channel];
482
+ }
483
+ /**
484
+ * Set the value of a specific pixel channel. Select pixel using index.
485
+ * @param index - Index of the pixel.
486
+ * @param channel - Channel index.
487
+ * @param value - Value to set.
488
+ */
489
+ public setValueByIndex(index: number, channel: number, value: number): void {
490
+ this.data[index * this.channels + channel] = value;
491
+ }
492
+
493
+ /**
494
+ * Set the value of a specific pixel channel. Select pixel using index.
495
+ * If the value is out of range it is set to the closest extremety.
496
+ * @param index - Index of the pixel.
252
497
  * @param channel - Channel index.
498
+ * @param value - Value to set.
253
499
  */
254
- public getValue(y: number, x: number, channel: number): number {
255
- return this.data[(y * this.width + x) * this.channels + channel];
500
+ public setClampedValueByIndex(
501
+ index: number,
502
+ channel: number,
503
+ value: number,
504
+ ): void {
505
+ if (value < 0) value = 0;
506
+ else if (value > this.maxValue) value = this.maxValue;
507
+ this.data[index * this.channels + channel] = value;
256
508
  }
257
509
 
258
510
  /**
259
- * Set the value of a specific pixel channel.
260
- * @param y - Row index.
261
- * @param x - Column index.
511
+ * Get the value of a specific pixel channel. Select pixel using a point.
512
+ * @param point - Coordinates of the desired pixel.
513
+ * @param channel - Channel index.
514
+ * @returns Value of the channel of the pixel.
515
+ */
516
+ public getValueByPoint(point: Point, channel: number): number {
517
+ return this.getValue(point.column, point.row, channel);
518
+ }
519
+
520
+ /**
521
+ * Set the value of a specific pixel channel. Select pixel using a point.
522
+ * @param point - Coordinates of the pixel.
262
523
  * @param channel - Channel index.
263
524
  * @param value - Value to set.
264
525
  */
265
- public setValue(y: number, x: number, channel: number, value: number): void {
266
- this.data[(y * this.width + x) * this.channels + channel] = value;
526
+ public setValueByPoint(point: Point, channel: number, value: number): void {
527
+ this.setValue(point.column, point.row, channel, value);
267
528
  }
268
529
 
269
530
  /**
270
- * Fill the image with a value or a color
531
+ * Find the min and max values of each channel of the image.
532
+ * @returns An object with arrays of the min and max values.
533
+ */
534
+ public minMax(): { min: number[]; max: number[] } {
535
+ return getMinMax(this);
536
+ }
537
+
538
+ /**
539
+ * Return the raw image data.
540
+ * @returns The raw data.
541
+ */
542
+ public getRawImage() {
543
+ return {
544
+ width: this.width,
545
+ height: this.height,
546
+ data: this.data,
547
+ channels: this.channels,
548
+ bitDepth: this.bitDepth,
549
+ };
550
+ }
551
+
552
+ public [Symbol.for('nodejs.util.inspect.custom')](): string {
553
+ let dataString;
554
+ if (this.height > 20 || this.width > 20) {
555
+ dataString = '[...]';
556
+ } else {
557
+ dataString = printData(this);
558
+ }
559
+ return `Image {
560
+ width: ${this.width}
561
+ height: ${this.height}
562
+ bitDepth: ${this.bitDepth}
563
+ colorModel: ${this.colorModel}
564
+ channels: ${this.channels}
565
+ data: ${dataString}
566
+ }`;
567
+ }
568
+
569
+ /**
570
+ * Fill the image with a value or a color.
571
+ * @param value - Value or color.
572
+ * @returns The image instance.
271
573
  */
272
574
  public fill(value: number | number[]): this {
273
575
  if (typeof value === 'number') {
@@ -277,12 +579,10 @@ export class Image {
277
579
  } else {
278
580
  if (value.length !== this.channels) {
279
581
  throw new RangeError(
280
- `the size of value must match the number of channels (${
281
- this.channels
282
- }). Got ${value.length} instead`
582
+ `the size of value must match the number of channels (${this.channels}). Received ${value.length}`,
283
583
  );
284
584
  }
285
- value.forEach((val) => validateValue(val, this));
585
+ for (const val of value) validateValue(val, this);
286
586
  for (let i = 0; i < this.data.length; i += this.channels) {
287
587
  for (let j = 0; j <= this.channels; j++) {
288
588
  this.data[i + j] = value[j];
@@ -293,9 +593,10 @@ export class Image {
293
593
  }
294
594
 
295
595
  /**
296
- * Fill one channel with a value
596
+ * Fill one channel with a value.
297
597
  * @param channel - The channel to fill.
298
598
  * @param value - The new value.
599
+ * @returns The image instance.
299
600
  */
300
601
  public fillChannel(channel: number, value: number): this {
301
602
  validateChannel(channel, this);
@@ -306,14 +607,30 @@ export class Image {
306
607
  return this;
307
608
  }
308
609
 
610
+ /**
611
+ * Get one channel of the image as an array.
612
+ * @param channel - The channel to fill.
613
+ * @returns Array with the channel values.
614
+ */
615
+ public getChannel(channel: number): number[] {
616
+ validateChannel(channel, this);
617
+ const result = new Array(this.size);
618
+ for (let i = 0; i < this.size; i++) {
619
+ result[i] = this.data[channel + i * this.channels];
620
+ }
621
+ return result;
622
+ }
623
+
309
624
  /**
310
625
  * Fill the alpha channel with the specified value.
626
+ * @param value - New channel value.
627
+ * @returns The image instance.
311
628
  */
312
629
  public fillAlpha(value: number): this {
313
630
  validateValue(value, this);
314
631
  if (!this.alpha) {
315
- throw new Error(
316
- 'fillAlpha can only be called if the image has an alpha channel'
632
+ throw new TypeError(
633
+ 'fillAlpha can only be called if the image has an alpha channel',
317
634
  );
318
635
  }
319
636
  const alphaIndex = this.channels - 1;
@@ -322,70 +639,542 @@ export class Image {
322
639
 
323
640
  /**
324
641
  * Create a copy of this image.
642
+ * @returns The image clone.
325
643
  */
326
644
  public clone(): Image {
327
645
  return Image.createFrom(this, { data: this.data.slice() });
328
646
  }
329
647
 
648
+ /**
649
+ * Modify all the values of the image using the given callback.
650
+ * @param cb - Callback that modifies a given value.
651
+ */
330
652
  public changeEach(cb: (value: number) => number): void {
331
653
  for (let i = 0; i < this.data.length; i++) {
332
654
  this.data[i] = cb(this.data[i]);
333
655
  }
334
656
  }
335
657
 
336
- // COMPUTE
658
+ /**
659
+ * Get the coordinates of a point in the image. The reference is the top-left corner.
660
+ * @param coordinates - The point for which you want the coordinates.
661
+ * @param round - Whether the coordinates should be rounded. This is useful when you want the center of the image.
662
+ * @returns Coordinates of the point in the format [column, row].
663
+ */
664
+ public getCoordinates(coordinates: ImageCoordinates, round = false): Point {
665
+ return match(coordinates)
666
+ .with('center', () => {
667
+ const centerX = (this.width - 1) / 2;
668
+ const centerY = (this.height - 1) / 2;
669
+ if (round) {
670
+ return { column: Math.round(centerX), row: Math.round(centerY) };
671
+ } else {
672
+ return { column: centerX, row: centerY };
673
+ }
674
+ })
675
+ .with('top-left', () => ({ column: 0, row: 0 }))
676
+ .with('top-right', () => ({ column: this.width - 1, row: 0 }))
677
+ .with('bottom-left', () => ({ column: 0, row: this.height - 1 }))
678
+ .with('bottom-right', () => ({
679
+ column: this.width - 1,
680
+ row: this.height - 1,
681
+ }))
682
+ .exhaustive();
683
+ }
684
+
685
+ // COMPARE
686
+ /**
687
+ * Subtract other from an image.
688
+ * @param other - Image to subtract.
689
+ * @param options - Inversion options.
690
+ * @returns The subtracted image.
691
+ */
692
+ public subtract(other: Image, options: SubtractImageOptions = {}): Image {
693
+ return subtract(this, other, options);
694
+ }
337
695
 
696
+ public add(other: Image): Image {
697
+ return add(this, other);
698
+ }
338
699
  /**
339
- * Returns a histogram of pixel intensities.
340
- * @param image
700
+ * Multiply image pixels by a constant.
701
+ * @param value - Value which pixels will be multiplied to.
702
+ * @param options - Multiply options.
703
+ * @returns Multiplied image.
341
704
  */
342
- public histogram(options?: IHistogramOptions): number[] {
705
+ public multiply(value: number, options: MultiplyOptions = {}): Image {
706
+ return multiply(this, value, options);
707
+ }
708
+ /**
709
+ * Divide image pixels by a constant.
710
+ * @param value - Value which pixels will be divided to.
711
+ * @param options - Divide options.
712
+ * @returns Divided image.
713
+ */
714
+ public divide(value: number, options: DivideOptions = {}): Image {
715
+ return divide(this, value, options);
716
+ }
717
+ // COMPUTE
718
+
719
+ public histogram(options?: HistogramOptions): Uint32Array {
343
720
  return histogram(this, options);
344
721
  }
345
722
 
346
- // FILTERS
723
+ /**
724
+ * Compute the mean pixel of an image.
725
+ * @param options - Mean options.
726
+ * @returns The mean pixel.
727
+ */
728
+ public mean(options?: MeanOptions): number[] {
729
+ return mean(this, options);
730
+ }
347
731
 
348
732
  /**
349
- * Invert the colors of the image.
733
+ * Compute the median pixel of an image.
734
+ * @param options - Median options.
735
+ * @returns The median pixel.
350
736
  */
351
- public invert(options?: IInvertOptions): Image {
352
- return invert(this, options);
737
+ public median(options?: MedianOptions): number[] {
738
+ return median(this, options);
353
739
  }
354
740
 
355
- // OPERATIONS
741
+ /**
742
+ * Compute the variance of each channel of an image.
743
+ * @param options - Variance options.
744
+ * @returns The variance of the channels of the image.
745
+ */
746
+ public variance(options?: VarianceOptions): number[] {
747
+ return variance(this, options);
748
+ }
749
+
750
+ // DRAW
751
+
752
+ /**
753
+ * Draw a set of points on an image.
754
+ * @param points - Array of points.
755
+ * @param options - Draw points on Image options.
756
+ * @returns New mask.
757
+ */
758
+ public drawPoints(points: Point[], options: DrawPointsOptions = {}): Image {
759
+ return drawPoints(this, points, options);
760
+ }
761
+
762
+ /**
763
+ * Draw a line defined by two points onto an image.
764
+ * @param from - Line starting point.
765
+ * @param to - Line ending point.
766
+ * @param options - Draw Line options.
767
+ * @returns The mask with the line drawing.
768
+ */
769
+ public drawLine(
770
+ from: Point,
771
+ to: Point,
772
+ options: DrawLineOnImageOptions = {},
773
+ ): Image {
774
+ return drawLineOnImage(this, from, to, options);
775
+ }
776
+
777
+ /**
778
+ * Draw a rectangle defined by position of the top-left corner, width and height.
779
+ * @param options - Draw rectangle options.
780
+ * @returns The image with the rectangle drawing.
781
+ */
782
+ public drawRectangle(options: DrawRectangleOptions<Image> = {}): Image {
783
+ return drawRectangle(this, options);
784
+ }
785
+
786
+ /**
787
+ * Draw a polyline defined by an array of points on an image.
788
+ * @param points - Polyline array of points.
789
+ * @param options - Draw polyline options.
790
+ * @returns The image with the polyline drawing.
791
+ */
792
+ public drawPolyline(
793
+ points: Point[],
794
+ options: DrawPolylineOnImageOptions = {},
795
+ ): Image {
796
+ return drawPolylineOnImage(this, points, options);
797
+ }
356
798
 
357
- public convertColor(kind: ImageKind, options?: IConvertColorOptions): Image {
358
- return convertColor(this, kind, options);
799
+ /**
800
+ * Draw a polygon defined by an array of points onto an image.
801
+ * @param points - Polygon vertices.
802
+ * @param options - Draw Line options.
803
+ * @returns The image with the polygon drawing.
804
+ */
805
+ public drawPolygon(
806
+ points: Point[],
807
+ options: DrawPolygonOnImageOptions = {},
808
+ ): Image {
809
+ return drawPolygonOnImage(this, points, options);
359
810
  }
360
811
 
361
- public convertDepth(newDepth: ColorDepth): Image {
362
- return convertDepth(this, newDepth);
812
+ /**
813
+ * Draw a circle defined by center and radius onto an image.
814
+ * @param center - Circle center.
815
+ * @param radius - Circle radius.
816
+ * @param options - Draw circle options.
817
+ * @returns The image with the circle drawing.
818
+ */
819
+ public drawCircle(
820
+ center: Point,
821
+ radius: number,
822
+ options: DrawCircleOnImageOptions = {},
823
+ ): Image {
824
+ return drawCircleOnImage(this, center, radius, options);
363
825
  }
364
826
 
827
+ /**
828
+ * Draw a marker on the image.
829
+ * @param point - Marker center point.
830
+ * @param options - Draw marker options.
831
+ * @returns The image with the marker drawing.
832
+ */
833
+ public drawMarker(point: Point, options: DrawMarkerOptions = {}): Image {
834
+ return drawMarker(this, point, options);
835
+ }
836
+
837
+ /**
838
+ * Draw markers on the image.
839
+ * @param points - Markers center points.
840
+ * @param options - Draw marker options.
841
+ * @returns The image with the markers drawing.
842
+ */
843
+ public drawMarkers(points: Point[], options: DrawMarkerOptions = {}): Image {
844
+ return drawMarkers(this, points, options);
845
+ }
846
+
847
+ // OPERATIONS
365
848
  public split(): Image[] {
366
849
  return split(this);
367
850
  }
851
+
852
+ public convertColor(
853
+ colorModel: ImageColorModel,
854
+ options?: ConvertColorOptions,
855
+ ): Image {
856
+ return convertColor(this, colorModel, options);
857
+ }
858
+
859
+ public convertBitDepth(
860
+ newDepth: BitDepth,
861
+ options?: ConvertBitDepthOptions,
862
+ ): Image {
863
+ return convertBitDepth(this, newDepth, options);
864
+ }
865
+
866
+ public grey(options?: GreyOptions): Image {
867
+ return grey(this, options);
868
+ }
869
+
870
+ public copyTo(target: Image, options: CopyToOptions<Image> = {}): Image {
871
+ return copyTo(this, target, options);
872
+ }
873
+
874
+ public threshold(options: ThresholdOptions = {}): Mask {
875
+ return threshold(this, options);
876
+ }
877
+
878
+ /**
879
+ * Crop the input image to a desired size.
880
+ * @param [options] - Crop options.
881
+ * @returns The new cropped image.
882
+ */
883
+ public crop(options?: CropOptions): Image {
884
+ return crop(this, options);
885
+ }
886
+
887
+ /**
888
+ * Crop an oriented rectangle from the image.
889
+ * If the rectangle's length or width are not an integers, its dimension is expanded in both directions such as the length and width are integers.
890
+ * @param points - The points of the rectangle. Points must be circling around the rectangle (clockwise or anti-clockwise)
891
+ * @param options - Crop options, see {@link CropRectangleOptions}
892
+ * @returns The cropped image. The orientation of the image is the one closest to the rectangle passed as input.
893
+ */
894
+ public cropRectangle(points: Point[], options?: CropRectangleOptions) {
895
+ return cropRectangle(this, points, options);
896
+ }
897
+
898
+ /**
899
+ * Crops the image based on the alpha channel
900
+ * This removes lines and columns where the alpha channel is lower than a threshold value.
901
+ * @param options - Crop alpha options.
902
+ * @returns The cropped image.
903
+ */
904
+ public cropAlpha(options: CropAlphaOptions = {}): Image {
905
+ return cropAlpha(this, options);
906
+ }
907
+
908
+ /**
909
+ * Extract the pixels of an image, as specified in a mask.
910
+ * @param mask - The mask defining which pixels to keep.
911
+ * @param options - Extract options.
912
+ * @returns The extracted image.
913
+ */
914
+ public extract(mask: Mask, options?: ExtractOptions): Image {
915
+ return extract(this, mask, options);
916
+ }
917
+
918
+ /**
919
+ * Paint a mask onto an image and the given position and with the given color.
920
+ * @param mask - Mask to paint on the image.
921
+ * @param options - Paint mask options.
922
+ * @returns The painted image.
923
+ */
924
+ public paintMask(mask: Mask, options?: PaintMaskOnImageOptions): Image {
925
+ return paintMaskOnImage(this, mask, options);
926
+ }
927
+
928
+ // FILTERS
929
+
930
+ public blur(options: BlurOptions): Image {
931
+ return blur(this, options);
932
+ }
933
+
934
+ public pixelate(options: PixelateOptions): Image {
935
+ return pixelate(this, options);
936
+ }
937
+
938
+ public directConvolution(
939
+ kernel: number[][],
940
+ options?: ConvolutionOptions,
941
+ ): Image {
942
+ return directConvolution(this, kernel, options);
943
+ }
944
+
945
+ /**
946
+ * Compute direct convolution of an image and return an array with the raw values.
947
+ * @param kernel - Kernel used for the convolution.
948
+ * @param options - Convolution options.
949
+ * @returns Array with the raw convoluted values.
950
+ */
951
+ public rawDirectConvolution(
952
+ kernel: number[][],
953
+ options?: ConvolutionOptions,
954
+ ): Float64Array {
955
+ return rawDirectConvolution(this, kernel, options);
956
+ }
957
+
958
+ public separableConvolution(
959
+ kernelX: number[],
960
+ kernelY: number[],
961
+ options?: ConvolutionOptions,
962
+ ): Image {
963
+ return separableConvolution(this, kernelX, kernelY, options);
964
+ }
965
+
966
+ /**
967
+ * Apply a gaussian filter to an image.
968
+ * @param options - Gaussian blur options.
969
+ * @returns The blurred image.
970
+ */
971
+ public gaussianBlur(options: GaussianBlurOptions): Image {
972
+ return gaussianBlur(this, options);
973
+ }
974
+ /**
975
+ * Flip the image.
976
+ * @param options - Flip options.
977
+ * @returns The flipped image.
978
+ */
979
+ public flip(options?: FlipOptions): Image {
980
+ return flip(this, options);
981
+ }
982
+
983
+ /**
984
+ * Invert the colors of the image.
985
+ * @param options - Inversion options.
986
+ * @returns The inverted image.
987
+ */
988
+ public invert(options?: InvertOptions): Image {
989
+ return invert(this, options);
990
+ }
991
+
992
+ /**
993
+ * Calculate a new image that is the hypotenuse between the current image and the other.
994
+ * @param other - Other image.
995
+ * @param options - Hypotenuse options.
996
+ * @returns Hypotenuse of the two images.
997
+ */
998
+ public hypotenuse(other: Image, options?: HypotenuseOptions): Image {
999
+ return hypotenuse(this, other, options);
1000
+ }
1001
+
1002
+ /**
1003
+ * Apply a gradient filter to an image.
1004
+ * @param options - Gradient filter options.
1005
+ * @returns The gradient image.
1006
+ */
1007
+ public gradientFilter(options: GradientFilterOptions): Image {
1008
+ return gradientFilter(this, options);
1009
+ }
1010
+
1011
+ /**
1012
+ * Apply a derivative filter to an image.
1013
+ * @param options - Derivative filter options.
1014
+ * @returns The processed image.
1015
+ */
1016
+ public derivativeFilter(options?: DerivativeFilterOptions): Image {
1017
+ return derivativeFilter(this, options);
1018
+ }
1019
+
1020
+ /**
1021
+ * Level the image using the optional input and output value. This function allows you to enhance the image's contrast.
1022
+ * @param options - Level options.
1023
+ * @returns The levelled image.
1024
+ */
1025
+ public level(options?: LevelOptions): Image {
1026
+ return level(this, options);
1027
+ }
1028
+
1029
+ /**
1030
+ * Increase the contrast of an image by spanning each channel on the range [0, image.maxValue].
1031
+ * @param options - Increase contrast options.
1032
+ * @returns The enhanced image.
1033
+ */
1034
+ public increaseContrast(options: IncreaseContrastOptions = {}): Image {
1035
+ return increaseContrast(this, options);
1036
+ }
1037
+
1038
+ /**
1039
+ * Correct the colors in an image using the reference colors.
1040
+ * @param measuredColors - Colors from the image, which will be compared to the reference.
1041
+ * @param referenceColors - Reference colors.
1042
+ * @returns Image with the colors corrected.
1043
+ */
1044
+ public correctColor(
1045
+ measuredColors: RgbColor[],
1046
+ referenceColors: RgbColor[],
1047
+ ): Image {
1048
+ return correctColor(this, measuredColors, referenceColors);
1049
+ }
1050
+ /**
1051
+ * Apply a median filter to the image.
1052
+ * @param options - Options to apply for median filter.
1053
+ * @returns Image after median filter.
1054
+ */
1055
+ public medianFilter(options: MedianFilterOptions) {
1056
+ return medianFilter(this, options);
1057
+ }
1058
+
1059
+ // GEOMETRY
1060
+
1061
+ public resize(options: ResizeOptions): Image {
1062
+ return resize(this, options);
1063
+ }
1064
+
1065
+ public rotate(angle: RotateAngle): Image {
1066
+ return rotate(this, angle);
1067
+ }
1068
+
1069
+ public transform(
1070
+ transformMatrix: number[][],
1071
+ options?: TransformOptions,
1072
+ ): Image {
1073
+ return transform(this, transformMatrix, options);
1074
+ }
1075
+
1076
+ public transformRotate(
1077
+ angle: number,
1078
+ options?: TransformRotateOptions,
1079
+ ): Image {
1080
+ return transformRotate(this, angle, options);
1081
+ }
1082
+
1083
+ // MORPHOLOGY
1084
+ /**
1085
+ * Erode an image.
1086
+ * @param options - Erode options.
1087
+ * @returns The eroded image.
1088
+ */
1089
+ public erode(options?: ErodeOptions): Image {
1090
+ return erode(this, options);
1091
+ }
1092
+ /**
1093
+ * Dilate an image.
1094
+ * @param options - Dilate options.
1095
+ * @returns The dilated image.
1096
+ */
1097
+ public dilate(options?: DilateOptions): Image {
1098
+ return dilate(this, options);
1099
+ }
1100
+ /**
1101
+ * Open an image.
1102
+ * @param options - Open options.
1103
+ * @returns The opened image.
1104
+ */
1105
+ public open(options?: OpenOptions): Image {
1106
+ return open(this, options);
1107
+ }
1108
+
1109
+ /**
1110
+ * Close an image.
1111
+ * @param options - Close options.
1112
+ * @returns The closed image.
1113
+ */
1114
+ public close(options?: CloseOptions): Image {
1115
+ return close(this, options);
1116
+ }
1117
+
1118
+ /**
1119
+ * Top hat of an image.
1120
+ * @param options - Top hat options.
1121
+ * @returns The top-hatted image.
1122
+ */
1123
+ public topHat(options?: TopHatOptions): Image {
1124
+ return topHat(this, options);
1125
+ }
1126
+
1127
+ /**
1128
+ * Bottom hat of an image.
1129
+ * @param options - Bottom hat options.
1130
+ * @returns The bottom-hatted image.
1131
+ */
1132
+ public bottomHat(options?: BottomHatOptions): Image {
1133
+ return bottomHat(this, options);
1134
+ }
1135
+
1136
+ /**
1137
+ * Apply morphological gradient to an image.
1138
+ * @param options - Morphological gradient options.
1139
+ * @returns The processed image.
1140
+ */
1141
+ public morphologicalGradient(options?: MorphologicalGradientOptions): Image {
1142
+ return morphologicalGradient(this, options);
1143
+ }
1144
+
1145
+ /**
1146
+ * Apply Canny edge detection to an image.
1147
+ * @param options - Canny edge detection options.
1148
+ * @returns The processed image.
1149
+ */
1150
+ public cannyEdgeDetector(options?: CannyEdgeOptions): Mask {
1151
+ return cannyEdgeDetector(this, options);
1152
+ }
368
1153
  }
369
1154
 
1155
+ /**
1156
+ * Create data array and set alpha channel to max value if applicable.
1157
+ * @param size - Number of pixels.
1158
+ * @param channels - Number of channels.
1159
+ * @param alpha - Specify if there is alpha channel.
1160
+ * @param bitDepth - Number of bits per channel.
1161
+ * @param maxValue - Maximal acceptable value for the channels.
1162
+ * @returns The new pixel array.
1163
+ */
370
1164
  function createPixelArray(
371
1165
  size: number,
372
1166
  channels: number,
373
1167
  alpha: boolean,
374
- depth: ColorDepth,
375
- maxValue: number
1168
+ bitDepth: BitDepth,
1169
+ maxValue: number,
376
1170
  ): ImageDataArray {
377
1171
  const length = channels * size;
378
- let arr;
379
- switch (depth) {
380
- case ColorDepth.UINT8:
381
- arr = new Uint8Array(length);
382
- break;
383
- case ColorDepth.UINT16:
384
- arr = new Uint16Array(length);
385
- break;
386
- default:
387
- throw new Error(`unexpected color depth: ${depth}`);
388
- }
1172
+ const arr = match(bitDepth)
1173
+ .with(8, () => new Uint8Array(length))
1174
+ .with(16, () => new Uint16Array(length))
1175
+ .otherwise(() => {
1176
+ throw new RangeError(`invalid bitDepth: ${bitDepth}`);
1177
+ });
389
1178
 
390
1179
  // Alpha channel is 100% by default.
391
1180
  if (alpha) {
@@ -396,3 +1185,29 @@ function createPixelArray(
396
1185
 
397
1186
  return arr;
398
1187
  }
1188
+
1189
+ /**
1190
+ * Returns the image data as a formatted string.
1191
+ * @param img - The image instance.
1192
+ * @returns Formatted string containing the image data.
1193
+ */
1194
+ function printData(img: Image): string {
1195
+ const result = [];
1196
+ const padding = img.bitDepth === 8 ? 3 : 5;
1197
+
1198
+ for (let row = 0; row < img.height; row++) {
1199
+ const currentRow = [];
1200
+ for (let column = 0; column < img.width; column++) {
1201
+ for (let channel = 0; channel < img.channels; channel++) {
1202
+ currentRow.push(
1203
+ String(img.getValue(column, row, channel)).padStart(padding, ' '),
1204
+ );
1205
+ }
1206
+ }
1207
+ result.push(`[${currentRow.join(' ')}]`);
1208
+ }
1209
+
1210
+ return `{
1211
+ [\n ${result.join('\n ')}\n ]
1212
+ }`;
1213
+ }