image-js 0.0.0-next-e30968a2d8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +29 -0
- package/lib/IJS.d.ts +316 -0
- package/lib/IJS.d.ts.map +1 -0
- package/lib/IJS.js +534 -0
- package/lib/IJS.js.map +1 -0
- package/lib/Mask.d.ts +257 -0
- package/lib/Mask.d.ts.map +1 -0
- package/lib/Mask.js +338 -0
- package/lib/Mask.js.map +1 -0
- package/lib/compute/histogram.d.ts +20 -0
- package/lib/compute/histogram.d.ts.map +1 -0
- package/lib/compute/histogram.js +28 -0
- package/lib/compute/histogram.js.map +1 -0
- package/lib/compute/index.d.ts +2 -0
- package/lib/compute/index.d.ts.map +1 -0
- package/lib/compute/index.js +18 -0
- package/lib/compute/index.js.map +1 -0
- package/lib/filters/and.d.ts +17 -0
- package/lib/filters/and.d.ts.map +1 -0
- package/lib/filters/and.js +29 -0
- package/lib/filters/and.js.map +1 -0
- package/lib/filters/blur.d.ts +37 -0
- package/lib/filters/blur.d.ts.map +1 -0
- package/lib/filters/blur.js +22 -0
- package/lib/filters/blur.js.map +1 -0
- package/lib/filters/convolution.d.ts +79 -0
- package/lib/filters/convolution.d.ts.map +1 -0
- package/lib/filters/convolution.js +196 -0
- package/lib/filters/convolution.js.map +1 -0
- package/lib/filters/derivativeFilter.d.ts +40 -0
- package/lib/filters/derivativeFilter.d.ts.map +1 -0
- package/lib/filters/derivativeFilter.js +42 -0
- package/lib/filters/derivativeFilter.js.map +1 -0
- package/lib/filters/gaussianBlur.d.ts +59 -0
- package/lib/filters/gaussianBlur.d.ts.map +1 -0
- package/lib/filters/gaussianBlur.js +59 -0
- package/lib/filters/gaussianBlur.js.map +1 -0
- package/lib/filters/gradientFilter.d.ts +54 -0
- package/lib/filters/gradientFilter.d.ts.map +1 -0
- package/lib/filters/gradientFilter.js +58 -0
- package/lib/filters/gradientFilter.js.map +1 -0
- package/lib/filters/hypotenuse.d.ts +23 -0
- package/lib/filters/hypotenuse.d.ts.map +1 -0
- package/lib/filters/hypotenuse.js +46 -0
- package/lib/filters/hypotenuse.js.map +1 -0
- package/lib/filters/index.d.ts +11 -0
- package/lib/filters/index.d.ts.map +1 -0
- package/lib/filters/index.js +27 -0
- package/lib/filters/index.js.map +1 -0
- package/lib/filters/invert.d.ts +11 -0
- package/lib/filters/invert.d.ts.map +1 -0
- package/lib/filters/invert.js +37 -0
- package/lib/filters/invert.js.map +1 -0
- package/lib/filters/or.d.ts +17 -0
- package/lib/filters/or.d.ts.map +1 -0
- package/lib/filters/or.js +29 -0
- package/lib/filters/or.js.map +1 -0
- package/lib/filters/subtractImage.d.ts +13 -0
- package/lib/filters/subtractImage.d.ts.map +1 -0
- package/lib/filters/subtractImage.js +64 -0
- package/lib/filters/subtractImage.js.map +1 -0
- package/lib/geometry/index.d.ts +4 -0
- package/lib/geometry/index.d.ts.map +1 -0
- package/lib/geometry/index.js +20 -0
- package/lib/geometry/index.js.map +1 -0
- package/lib/geometry/resize.d.ts +52 -0
- package/lib/geometry/resize.d.ts.map +1 -0
- package/lib/geometry/resize.js +107 -0
- package/lib/geometry/resize.js.map +1 -0
- package/lib/geometry/rotate.d.ts +54 -0
- package/lib/geometry/rotate.d.ts.map +1 -0
- package/lib/geometry/rotate.js +44 -0
- package/lib/geometry/rotate.js.map +1 -0
- package/lib/geometry/transform.d.ts +46 -0
- package/lib/geometry/transform.d.ts.map +1 -0
- package/lib/geometry/transform.js +95 -0
- package/lib/geometry/transform.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +26 -0
- package/lib/index.js.map +1 -0
- package/lib/load/decode.d.ts +10 -0
- package/lib/load/decode.d.ts.map +1 -0
- package/lib/load/decode.js +33 -0
- package/lib/load/decode.js.map +1 -0
- package/lib/load/decodeJpeg.d.ts +9 -0
- package/lib/load/decodeJpeg.d.ts.map +1 -0
- package/lib/load/decodeJpeg.js +20 -0
- package/lib/load/decodeJpeg.js.map +1 -0
- package/lib/load/decodePng.d.ts +9 -0
- package/lib/load/decodePng.d.ts.map +1 -0
- package/lib/load/decodePng.js +72 -0
- package/lib/load/decodePng.js.map +1 -0
- package/lib/load/decodeTiff.d.ts +9 -0
- package/lib/load/decodeTiff.d.ts.map +1 -0
- package/lib/load/decodeTiff.js +64 -0
- package/lib/load/decodeTiff.js.map +1 -0
- package/lib/load/index.d.ts +8 -0
- package/lib/load/index.d.ts.map +1 -0
- package/lib/load/index.js +24 -0
- package/lib/load/index.js.map +1 -0
- package/lib/load/read.d.ts +17 -0
- package/lib/load/read.d.ts.map +1 -0
- package/lib/load/read.js +31 -0
- package/lib/load/read.js.map +1 -0
- package/lib/load/readCanvas.d.ts +3 -0
- package/lib/load/readCanvas.d.ts.map +1 -0
- package/lib/load/readCanvas.js +17 -0
- package/lib/load/readCanvas.js.map +1 -0
- package/lib/load/readImg.d.ts +3 -0
- package/lib/load/readImg.d.ts.map +1 -0
- package/lib/load/readImg.js +17 -0
- package/lib/load/readImg.js.map +1 -0
- package/lib/morphology/bottomHat.d.ts +19 -0
- package/lib/morphology/bottomHat.d.ts.map +1 -0
- package/lib/morphology/bottomHat.js +46 -0
- package/lib/morphology/bottomHat.js.map +1 -0
- package/lib/morphology/cannyEdgeDetector.d.ts +49 -0
- package/lib/morphology/cannyEdgeDetector.d.ts.map +1 -0
- package/lib/morphology/cannyEdgeDetector.js +157 -0
- package/lib/morphology/cannyEdgeDetector.js.map +1 -0
- package/lib/morphology/clearBorder.d.ts +22 -0
- package/lib/morphology/clearBorder.d.ts.map +1 -0
- package/lib/morphology/clearBorder.js +89 -0
- package/lib/morphology/clearBorder.js.map +1 -0
- package/lib/morphology/close.d.ts +19 -0
- package/lib/morphology/close.d.ts.map +1 -0
- package/lib/morphology/close.js +41 -0
- package/lib/morphology/close.js.map +1 -0
- package/lib/morphology/dilate.d.ts +20 -0
- package/lib/morphology/dilate.d.ts.map +1 -0
- package/lib/morphology/dilate.js +199 -0
- package/lib/morphology/dilate.js.map +1 -0
- package/lib/morphology/erode.d.ts +20 -0
- package/lib/morphology/erode.d.ts.map +1 -0
- package/lib/morphology/erode.js +199 -0
- package/lib/morphology/erode.js.map +1 -0
- package/lib/morphology/floodFill.d.ts +22 -0
- package/lib/morphology/floodFill.d.ts.map +1 -0
- package/lib/morphology/floodFill.js +20 -0
- package/lib/morphology/floodFill.js.map +1 -0
- package/lib/morphology/index.d.ts +11 -0
- package/lib/morphology/index.d.ts.map +1 -0
- package/lib/morphology/index.js +27 -0
- package/lib/morphology/index.js.map +1 -0
- package/lib/morphology/morphologicalGradient.d.ts +19 -0
- package/lib/morphology/morphologicalGradient.d.ts.map +1 -0
- package/lib/morphology/morphologicalGradient.js +43 -0
- package/lib/morphology/morphologicalGradient.js.map +1 -0
- package/lib/morphology/open.d.ts +19 -0
- package/lib/morphology/open.d.ts.map +1 -0
- package/lib/morphology/open.js +43 -0
- package/lib/morphology/open.js.map +1 -0
- package/lib/morphology/topHat.d.ts +19 -0
- package/lib/morphology/topHat.d.ts.map +1 -0
- package/lib/morphology/topHat.js +44 -0
- package/lib/morphology/topHat.js.map +1 -0
- package/lib/operations/convertColor.d.ts +32 -0
- package/lib/operations/convertColor.d.ts.map +1 -0
- package/lib/operations/convertColor.js +148 -0
- package/lib/operations/convertColor.js.map +1 -0
- package/lib/operations/convertDepth.d.ts +10 -0
- package/lib/operations/convertDepth.d.ts.map +1 -0
- package/lib/operations/convertDepth.js +60 -0
- package/lib/operations/convertDepth.js.map +1 -0
- package/lib/operations/copyTo.d.ts +29 -0
- package/lib/operations/copyTo.d.ts.map +1 -0
- package/lib/operations/copyTo.js +51 -0
- package/lib/operations/copyTo.js.map +1 -0
- package/lib/operations/grey.d.ts +50 -0
- package/lib/operations/grey.d.ts.map +1 -0
- package/lib/operations/grey.js +86 -0
- package/lib/operations/grey.js.map +1 -0
- package/lib/operations/greyAlgorithms.d.ts +149 -0
- package/lib/operations/greyAlgorithms.d.ts.map +1 -0
- package/lib/operations/greyAlgorithms.js +242 -0
- package/lib/operations/greyAlgorithms.js.map +1 -0
- package/lib/operations/index.d.ts +8 -0
- package/lib/operations/index.d.ts.map +1 -0
- package/lib/operations/index.js +24 -0
- package/lib/operations/index.js.map +1 -0
- package/lib/operations/merge.d.ts +9 -0
- package/lib/operations/merge.d.ts.map +1 -0
- package/lib/operations/merge.js +51 -0
- package/lib/operations/merge.js.map +1 -0
- package/lib/operations/split.d.ts +9 -0
- package/lib/operations/split.d.ts.map +1 -0
- package/lib/operations/split.js +23 -0
- package/lib/operations/split.js.map +1 -0
- package/lib/operations/threshold.d.ts +58 -0
- package/lib/operations/threshold.d.ts.map +1 -0
- package/lib/operations/threshold.js +114 -0
- package/lib/operations/threshold.js.map +1 -0
- package/lib/operations/thresholds/huang.d.ts +8 -0
- package/lib/operations/thresholds/huang.d.ts.map +1 -0
- package/lib/operations/thresholds/huang.js +81 -0
- package/lib/operations/thresholds/huang.js.map +1 -0
- package/lib/operations/thresholds/intermodes.d.ts +8 -0
- package/lib/operations/thresholds/intermodes.d.ts.map +1 -0
- package/lib/operations/thresholds/intermodes.js +62 -0
- package/lib/operations/thresholds/intermodes.js.map +1 -0
- package/lib/operations/thresholds/isodata.d.ts +8 -0
- package/lib/operations/thresholds/isodata.d.ts.map +1 -0
- package/lib/operations/thresholds/isodata.js +55 -0
- package/lib/operations/thresholds/isodata.js.map +1 -0
- package/lib/operations/thresholds/li.d.ts +9 -0
- package/lib/operations/thresholds/li.d.ts.map +1 -0
- package/lib/operations/thresholds/li.js +77 -0
- package/lib/operations/thresholds/li.js.map +1 -0
- package/lib/operations/thresholds/maxEntropy.d.ts +9 -0
- package/lib/operations/thresholds/maxEntropy.d.ts.map +1 -0
- package/lib/operations/thresholds/maxEntropy.js +80 -0
- package/lib/operations/thresholds/maxEntropy.js.map +1 -0
- package/lib/operations/thresholds/mean.d.ts +9 -0
- package/lib/operations/thresholds/mean.d.ts.map +1 -0
- package/lib/operations/thresholds/mean.js +26 -0
- package/lib/operations/thresholds/mean.js.map +1 -0
- package/lib/operations/thresholds/minError.d.ts +9 -0
- package/lib/operations/thresholds/minError.d.ts.map +1 -0
- package/lib/operations/thresholds/minError.js +90 -0
- package/lib/operations/thresholds/minError.js.map +1 -0
- package/lib/operations/thresholds/minimum.d.ts +8 -0
- package/lib/operations/thresholds/minimum.d.ts.map +1 -0
- package/lib/operations/thresholds/minimum.js +78 -0
- package/lib/operations/thresholds/minimum.js.map +1 -0
- package/lib/operations/thresholds/moments.d.ts +9 -0
- package/lib/operations/thresholds/moments.d.ts.map +1 -0
- package/lib/operations/thresholds/moments.js +62 -0
- package/lib/operations/thresholds/moments.js.map +1 -0
- package/lib/operations/thresholds/otsu.d.ts +9 -0
- package/lib/operations/thresholds/otsu.d.ts.map +1 -0
- package/lib/operations/thresholds/otsu.js +43 -0
- package/lib/operations/thresholds/otsu.js.map +1 -0
- package/lib/operations/thresholds/percentile.d.ts +8 -0
- package/lib/operations/thresholds/percentile.d.ts.map +1 -0
- package/lib/operations/thresholds/percentile.js +39 -0
- package/lib/operations/thresholds/percentile.js.map +1 -0
- package/lib/operations/thresholds/renyiEntropy.d.ts +9 -0
- package/lib/operations/thresholds/renyiEntropy.d.ts.map +1 -0
- package/lib/operations/thresholds/renyiEntropy.js +133 -0
- package/lib/operations/thresholds/renyiEntropy.js.map +1 -0
- package/lib/operations/thresholds/shanbhag.d.ts +10 -0
- package/lib/operations/thresholds/shanbhag.d.ts.map +1 -0
- package/lib/operations/thresholds/shanbhag.js +77 -0
- package/lib/operations/thresholds/shanbhag.js.map +1 -0
- package/lib/operations/thresholds/triangle.d.ts +8 -0
- package/lib/operations/thresholds/triangle.d.ts.map +1 -0
- package/lib/operations/thresholds/triangle.js +113 -0
- package/lib/operations/thresholds/triangle.js.map +1 -0
- package/lib/operations/thresholds/yen.d.ts +9 -0
- package/lib/operations/thresholds/yen.d.ts.map +1 -0
- package/lib/operations/thresholds/yen.js +62 -0
- package/lib/operations/thresholds/yen.js.map +1 -0
- package/lib/roi/RoiManager.d.ts +32 -0
- package/lib/roi/RoiManager.d.ts.map +1 -0
- package/lib/roi/RoiManager.js +10 -0
- package/lib/roi/RoiManager.js.map +1 -0
- package/lib/roi/RoiMapManager.d.ts +33 -0
- package/lib/roi/RoiMapManager.d.ts.map +1 -0
- package/lib/roi/RoiMapManager.js +17 -0
- package/lib/roi/RoiMapManager.js.map +1 -0
- package/lib/roi/colorRois.d.ts +39 -0
- package/lib/roi/colorRois.d.ts.map +1 -0
- package/lib/roi/colorRois.js +48 -0
- package/lib/roi/colorRois.js.map +1 -0
- package/lib/roi/fromMask.d.ts +19 -0
- package/lib/roi/fromMask.d.ts.map +1 -0
- package/lib/roi/fromMask.js +148 -0
- package/lib/roi/fromMask.js.map +1 -0
- package/lib/roi/index.d.ts +5 -0
- package/lib/roi/index.d.ts.map +1 -0
- package/lib/roi/index.js +21 -0
- package/lib/roi/index.js.map +1 -0
- package/lib/roi/utils/colorMaps/getBinaryMap.d.ts +37 -0
- package/lib/roi/utils/colorMaps/getBinaryMap.d.ts.map +1 -0
- package/lib/roi/utils/colorMaps/getBinaryMap.js +34 -0
- package/lib/roi/utils/colorMaps/getBinaryMap.js.map +1 -0
- package/lib/roi/utils/colorMaps/getRainbowMap.d.ts +25 -0
- package/lib/roi/utils/colorMaps/getRainbowMap.d.ts.map +1 -0
- package/lib/roi/utils/colorMaps/getRainbowMap.js +51 -0
- package/lib/roi/utils/colorMaps/getRainbowMap.js.map +1 -0
- package/lib/roi/utils/colorMaps/getSaturationMap.d.ts +42 -0
- package/lib/roi/utils/colorMaps/getSaturationMap.d.ts.map +1 -0
- package/lib/roi/utils/colorMaps/getSaturationMap.js +39 -0
- package/lib/roi/utils/colorMaps/getSaturationMap.js.map +1 -0
- package/lib/roi/utils/constants.d.ts +4 -0
- package/lib/roi/utils/constants.d.ts.map +1 -0
- package/lib/roi/utils/constants.js +7 -0
- package/lib/roi/utils/constants.js.map +1 -0
- package/lib/roi/utils/getColorMap.d.ts +32 -0
- package/lib/roi/utils/getColorMap.d.ts.map +1 -0
- package/lib/roi/utils/getColorMap.js +28 -0
- package/lib/roi/utils/getColorMap.js.map +1 -0
- package/lib/roi/utils/hsvToRgb.d.ts +21 -0
- package/lib/roi/utils/hsvToRgb.d.ts.map +1 -0
- package/lib/roi/utils/hsvToRgb.js +58 -0
- package/lib/roi/utils/hsvToRgb.js.map +1 -0
- package/lib/roi/utils/rgbToNumber.d.ts +8 -0
- package/lib/roi/utils/rgbToNumber.d.ts.map +1 -0
- package/lib/roi/utils/rgbToNumber.js +14 -0
- package/lib/roi/utils/rgbToNumber.js.map +1 -0
- package/lib/save/encode.d.ts +38 -0
- package/lib/save/encode.d.ts.map +1 -0
- package/lib/save/encode.js +33 -0
- package/lib/save/encode.js.map +1 -0
- package/lib/save/encodeJpeg.d.ts +18 -0
- package/lib/save/encodeJpeg.d.ts.map +1 -0
- package/lib/save/encodeJpeg.js +26 -0
- package/lib/save/encodeJpeg.js.map +1 -0
- package/lib/save/encodePng.d.ts +12 -0
- package/lib/save/encodePng.d.ts.map +1 -0
- package/lib/save/encodePng.js +16 -0
- package/lib/save/encodePng.js.map +1 -0
- package/lib/save/index.d.ts +6 -0
- package/lib/save/index.d.ts.map +1 -0
- package/lib/save/index.js +22 -0
- package/lib/save/index.js.map +1 -0
- package/lib/save/write.d.ts +27 -0
- package/lib/save/write.d.ts.map +1 -0
- package/lib/save/write.js +73 -0
- package/lib/save/write.js.map +1 -0
- package/lib/save/writeCanvas.d.ts +42 -0
- package/lib/save/writeCanvas.d.ts.map +1 -0
- package/lib/save/writeCanvas.js +29 -0
- package/lib/save/writeCanvas.js.map +1 -0
- package/lib/utils/boolToNumber.d.ts +9 -0
- package/lib/utils/boolToNumber.d.ts.map +1 -0
- package/lib/utils/boolToNumber.js +21 -0
- package/lib/utils/boolToNumber.js.map +1 -0
- package/lib/utils/borderIterator.d.ts +9 -0
- package/lib/utils/borderIterator.d.ts.map +1 -0
- package/lib/utils/borderIterator.js +25 -0
- package/lib/utils/borderIterator.js.map +1 -0
- package/lib/utils/checkKernel.d.ts +8 -0
- package/lib/utils/checkKernel.d.ts.map +1 -0
- package/lib/utils/checkKernel.js +16 -0
- package/lib/utils/checkKernel.js.map +1 -0
- package/lib/utils/checkProcessable.d.ts +18 -0
- package/lib/utils/checkProcessable.d.ts.map +1 -0
- package/lib/utils/checkProcessable.js +65 -0
- package/lib/utils/checkProcessable.js.map +1 -0
- package/lib/utils/clamp.d.ts +10 -0
- package/lib/utils/clamp.d.ts.map +1 -0
- package/lib/utils/clamp.js +38 -0
- package/lib/utils/clamp.js.map +1 -0
- package/lib/utils/colorModels.d.ts +15 -0
- package/lib/utils/colorModels.d.ts.map +1 -0
- package/lib/utils/colorModels.js +39 -0
- package/lib/utils/colorModels.js.map +1 -0
- package/lib/utils/copyData.d.ts +4 -0
- package/lib/utils/copyData.d.ts.map +1 -0
- package/lib/utils/copyData.js +20 -0
- package/lib/utils/copyData.js.map +1 -0
- package/lib/utils/getIndex.d.ts +12 -0
- package/lib/utils/getIndex.d.ts.map +1 -0
- package/lib/utils/getIndex.js +17 -0
- package/lib/utils/getIndex.js.map +1 -0
- package/lib/utils/getOutputImage.d.ts +61 -0
- package/lib/utils/getOutputImage.d.ts.map +1 -0
- package/lib/utils/getOutputImage.js +150 -0
- package/lib/utils/getOutputImage.js.map +1 -0
- package/lib/utils/interpolateBorder.d.ts +44 -0
- package/lib/utils/interpolateBorder.d.ts.map +1 -0
- package/lib/utils/interpolateBorder.js +143 -0
- package/lib/utils/interpolateBorder.js.map +1 -0
- package/lib/utils/interpolatePixel.d.ts +18 -0
- package/lib/utils/interpolatePixel.d.ts.map +1 -0
- package/lib/utils/interpolatePixel.js +122 -0
- package/lib/utils/interpolatePixel.js.map +1 -0
- package/lib/utils/kernels.d.ts +13 -0
- package/lib/utils/kernels.d.ts.map +1 -0
- package/lib/utils/kernels.js +66 -0
- package/lib/utils/kernels.js.map +1 -0
- package/lib/utils/kinds.d.ts +9 -0
- package/lib/utils/kinds.d.ts.map +1 -0
- package/lib/utils/kinds.js +23 -0
- package/lib/utils/kinds.js.map +1 -0
- package/lib/utils/round.d.ts +2 -0
- package/lib/utils/round.d.ts.map +1 -0
- package/lib/utils/round.js +11 -0
- package/lib/utils/round.js.map +1 -0
- package/lib/utils/validators.d.ts +23 -0
- package/lib/utils/validators.d.ts.map +1 -0
- package/lib/utils/validators.js +40 -0
- package/lib/utils/validators.js.map +1 -0
- package/lib-esm/IJS.d.ts +316 -0
- package/lib-esm/IJS.d.ts.map +1 -0
- package/lib-esm/IJS.js +526 -0
- package/lib-esm/IJS.js.map +1 -0
- package/lib-esm/Mask.d.ts +257 -0
- package/lib-esm/Mask.d.ts.map +1 -0
- package/lib-esm/Mask.js +334 -0
- package/lib-esm/Mask.js.map +1 -0
- package/lib-esm/compute/histogram.d.ts +20 -0
- package/lib-esm/compute/histogram.d.ts.map +1 -0
- package/lib-esm/compute/histogram.js +24 -0
- package/lib-esm/compute/histogram.js.map +1 -0
- package/lib-esm/compute/index.d.ts +2 -0
- package/lib-esm/compute/index.d.ts.map +1 -0
- package/lib-esm/compute/index.js +2 -0
- package/lib-esm/compute/index.js.map +1 -0
- package/lib-esm/filters/and.d.ts +17 -0
- package/lib-esm/filters/and.d.ts.map +1 -0
- package/lib-esm/filters/and.js +25 -0
- package/lib-esm/filters/and.js.map +1 -0
- package/lib-esm/filters/blur.d.ts +37 -0
- package/lib-esm/filters/blur.d.ts.map +1 -0
- package/lib-esm/filters/blur.js +18 -0
- package/lib-esm/filters/blur.js.map +1 -0
- package/lib-esm/filters/convolution.d.ts +79 -0
- package/lib-esm/filters/convolution.d.ts.map +1 -0
- package/lib-esm/filters/convolution.js +189 -0
- package/lib-esm/filters/convolution.js.map +1 -0
- package/lib-esm/filters/derivativeFilter.d.ts +40 -0
- package/lib-esm/filters/derivativeFilter.d.ts.map +1 -0
- package/lib-esm/filters/derivativeFilter.js +38 -0
- package/lib-esm/filters/derivativeFilter.js.map +1 -0
- package/lib-esm/filters/gaussianBlur.d.ts +59 -0
- package/lib-esm/filters/gaussianBlur.d.ts.map +1 -0
- package/lib-esm/filters/gaussianBlur.js +55 -0
- package/lib-esm/filters/gaussianBlur.js.map +1 -0
- package/lib-esm/filters/gradientFilter.d.ts +54 -0
- package/lib-esm/filters/gradientFilter.d.ts.map +1 -0
- package/lib-esm/filters/gradientFilter.js +51 -0
- package/lib-esm/filters/gradientFilter.js.map +1 -0
- package/lib-esm/filters/hypotenuse.d.ts +23 -0
- package/lib-esm/filters/hypotenuse.d.ts.map +1 -0
- package/lib-esm/filters/hypotenuse.js +39 -0
- package/lib-esm/filters/hypotenuse.js.map +1 -0
- package/lib-esm/filters/index.d.ts +11 -0
- package/lib-esm/filters/index.d.ts.map +1 -0
- package/lib-esm/filters/index.js +11 -0
- package/lib-esm/filters/index.js.map +1 -0
- package/lib-esm/filters/invert.d.ts +11 -0
- package/lib-esm/filters/invert.d.ts.map +1 -0
- package/lib-esm/filters/invert.js +33 -0
- package/lib-esm/filters/invert.js.map +1 -0
- package/lib-esm/filters/or.d.ts +17 -0
- package/lib-esm/filters/or.d.ts.map +1 -0
- package/lib-esm/filters/or.js +25 -0
- package/lib-esm/filters/or.js.map +1 -0
- package/lib-esm/filters/subtractImage.d.ts +13 -0
- package/lib-esm/filters/subtractImage.d.ts.map +1 -0
- package/lib-esm/filters/subtractImage.js +57 -0
- package/lib-esm/filters/subtractImage.js.map +1 -0
- package/lib-esm/geometry/index.d.ts +4 -0
- package/lib-esm/geometry/index.d.ts.map +1 -0
- package/lib-esm/geometry/index.js +4 -0
- package/lib-esm/geometry/index.js.map +1 -0
- package/lib-esm/geometry/resize.d.ts +52 -0
- package/lib-esm/geometry/resize.d.ts.map +1 -0
- package/lib-esm/geometry/resize.js +103 -0
- package/lib-esm/geometry/resize.js.map +1 -0
- package/lib-esm/geometry/rotate.d.ts +54 -0
- package/lib-esm/geometry/rotate.d.ts.map +1 -0
- package/lib-esm/geometry/rotate.js +40 -0
- package/lib-esm/geometry/rotate.js.map +1 -0
- package/lib-esm/geometry/transform.d.ts +46 -0
- package/lib-esm/geometry/transform.d.ts.map +1 -0
- package/lib-esm/geometry/transform.js +91 -0
- package/lib-esm/geometry/transform.js.map +1 -0
- package/lib-esm/index.d.ts +10 -0
- package/lib-esm/index.d.ts.map +1 -0
- package/lib-esm/index.js +10 -0
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/load/decode.d.ts +10 -0
- package/lib-esm/load/decode.d.ts.map +1 -0
- package/lib-esm/load/decode.js +26 -0
- package/lib-esm/load/decode.js.map +1 -0
- package/lib-esm/load/decodeJpeg.d.ts +9 -0
- package/lib-esm/load/decodeJpeg.d.ts.map +1 -0
- package/lib-esm/load/decodeJpeg.js +16 -0
- package/lib-esm/load/decodeJpeg.js.map +1 -0
- package/lib-esm/load/decodePng.d.ts +9 -0
- package/lib-esm/load/decodePng.d.ts.map +1 -0
- package/lib-esm/load/decodePng.js +68 -0
- package/lib-esm/load/decodePng.js.map +1 -0
- package/lib-esm/load/decodeTiff.d.ts +9 -0
- package/lib-esm/load/decodeTiff.d.ts.map +1 -0
- package/lib-esm/load/decodeTiff.js +60 -0
- package/lib-esm/load/decodeTiff.js.map +1 -0
- package/lib-esm/load/index.d.ts +8 -0
- package/lib-esm/load/index.d.ts.map +1 -0
- package/lib-esm/load/index.js +8 -0
- package/lib-esm/load/index.js.map +1 -0
- package/lib-esm/load/read.d.ts +17 -0
- package/lib-esm/load/read.d.ts.map +1 -0
- package/lib-esm/load/read.js +23 -0
- package/lib-esm/load/read.js.map +1 -0
- package/lib-esm/load/readCanvas.d.ts +3 -0
- package/lib-esm/load/readCanvas.d.ts.map +1 -0
- package/lib-esm/load/readCanvas.js +13 -0
- package/lib-esm/load/readCanvas.js.map +1 -0
- package/lib-esm/load/readImg.d.ts +3 -0
- package/lib-esm/load/readImg.d.ts.map +1 -0
- package/lib-esm/load/readImg.js +13 -0
- package/lib-esm/load/readImg.js.map +1 -0
- package/lib-esm/morphology/bottomHat.d.ts +19 -0
- package/lib-esm/morphology/bottomHat.d.ts.map +1 -0
- package/lib-esm/morphology/bottomHat.js +39 -0
- package/lib-esm/morphology/bottomHat.js.map +1 -0
- package/lib-esm/morphology/cannyEdgeDetector.d.ts +49 -0
- package/lib-esm/morphology/cannyEdgeDetector.d.ts.map +1 -0
- package/lib-esm/morphology/cannyEdgeDetector.js +149 -0
- package/lib-esm/morphology/cannyEdgeDetector.js.map +1 -0
- package/lib-esm/morphology/clearBorder.d.ts +22 -0
- package/lib-esm/morphology/clearBorder.d.ts.map +1 -0
- package/lib-esm/morphology/clearBorder.js +85 -0
- package/lib-esm/morphology/clearBorder.js.map +1 -0
- package/lib-esm/morphology/close.d.ts +19 -0
- package/lib-esm/morphology/close.d.ts.map +1 -0
- package/lib-esm/morphology/close.js +34 -0
- package/lib-esm/morphology/close.js.map +1 -0
- package/lib-esm/morphology/dilate.d.ts +20 -0
- package/lib-esm/morphology/dilate.d.ts.map +1 -0
- package/lib-esm/morphology/dilate.js +192 -0
- package/lib-esm/morphology/dilate.js.map +1 -0
- package/lib-esm/morphology/erode.d.ts +20 -0
- package/lib-esm/morphology/erode.d.ts.map +1 -0
- package/lib-esm/morphology/erode.js +192 -0
- package/lib-esm/morphology/erode.js.map +1 -0
- package/lib-esm/morphology/floodFill.d.ts +22 -0
- package/lib-esm/morphology/floodFill.d.ts.map +1 -0
- package/lib-esm/morphology/floodFill.js +16 -0
- package/lib-esm/morphology/floodFill.js.map +1 -0
- package/lib-esm/morphology/index.d.ts +11 -0
- package/lib-esm/morphology/index.d.ts.map +1 -0
- package/lib-esm/morphology/index.js +11 -0
- package/lib-esm/morphology/index.js.map +1 -0
- package/lib-esm/morphology/morphologicalGradient.d.ts +19 -0
- package/lib-esm/morphology/morphologicalGradient.d.ts.map +1 -0
- package/lib-esm/morphology/morphologicalGradient.js +36 -0
- package/lib-esm/morphology/morphologicalGradient.js.map +1 -0
- package/lib-esm/morphology/open.d.ts +19 -0
- package/lib-esm/morphology/open.d.ts.map +1 -0
- package/lib-esm/morphology/open.js +36 -0
- package/lib-esm/morphology/open.js.map +1 -0
- package/lib-esm/morphology/topHat.d.ts +19 -0
- package/lib-esm/morphology/topHat.d.ts.map +1 -0
- package/lib-esm/morphology/topHat.js +37 -0
- package/lib-esm/morphology/topHat.js.map +1 -0
- package/lib-esm/operations/convertColor.d.ts +32 -0
- package/lib-esm/operations/convertColor.d.ts.map +1 -0
- package/lib-esm/operations/convertColor.js +142 -0
- package/lib-esm/operations/convertColor.js.map +1 -0
- package/lib-esm/operations/convertDepth.d.ts +10 -0
- package/lib-esm/operations/convertDepth.d.ts.map +1 -0
- package/lib-esm/operations/convertDepth.js +56 -0
- package/lib-esm/operations/convertDepth.js.map +1 -0
- package/lib-esm/operations/copyTo.d.ts +29 -0
- package/lib-esm/operations/copyTo.d.ts.map +1 -0
- package/lib-esm/operations/copyTo.js +48 -0
- package/lib-esm/operations/copyTo.js.map +1 -0
- package/lib-esm/operations/grey.d.ts +50 -0
- package/lib-esm/operations/grey.d.ts.map +1 -0
- package/lib-esm/operations/grey.js +60 -0
- package/lib-esm/operations/grey.js.map +1 -0
- package/lib-esm/operations/greyAlgorithms.d.ts +149 -0
- package/lib-esm/operations/greyAlgorithms.d.ts.map +1 -0
- package/lib-esm/operations/greyAlgorithms.js +223 -0
- package/lib-esm/operations/greyAlgorithms.js.map +1 -0
- package/lib-esm/operations/index.d.ts +8 -0
- package/lib-esm/operations/index.d.ts.map +1 -0
- package/lib-esm/operations/index.js +8 -0
- package/lib-esm/operations/index.js.map +1 -0
- package/lib-esm/operations/merge.d.ts +9 -0
- package/lib-esm/operations/merge.d.ts.map +1 -0
- package/lib-esm/operations/merge.js +47 -0
- package/lib-esm/operations/merge.js.map +1 -0
- package/lib-esm/operations/split.d.ts +9 -0
- package/lib-esm/operations/split.d.ts.map +1 -0
- package/lib-esm/operations/split.js +19 -0
- package/lib-esm/operations/split.js.map +1 -0
- package/lib-esm/operations/threshold.d.ts +58 -0
- package/lib-esm/operations/threshold.d.ts.map +1 -0
- package/lib-esm/operations/threshold.js +106 -0
- package/lib-esm/operations/threshold.js.map +1 -0
- package/lib-esm/operations/thresholds/huang.d.ts +8 -0
- package/lib-esm/operations/thresholds/huang.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/huang.js +78 -0
- package/lib-esm/operations/thresholds/huang.js.map +1 -0
- package/lib-esm/operations/thresholds/intermodes.d.ts +8 -0
- package/lib-esm/operations/thresholds/intermodes.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/intermodes.js +59 -0
- package/lib-esm/operations/thresholds/intermodes.js.map +1 -0
- package/lib-esm/operations/thresholds/isodata.d.ts +8 -0
- package/lib-esm/operations/thresholds/isodata.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/isodata.js +52 -0
- package/lib-esm/operations/thresholds/isodata.js.map +1 -0
- package/lib-esm/operations/thresholds/li.d.ts +9 -0
- package/lib-esm/operations/thresholds/li.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/li.js +74 -0
- package/lib-esm/operations/thresholds/li.js.map +1 -0
- package/lib-esm/operations/thresholds/maxEntropy.d.ts +9 -0
- package/lib-esm/operations/thresholds/maxEntropy.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/maxEntropy.js +77 -0
- package/lib-esm/operations/thresholds/maxEntropy.js.map +1 -0
- package/lib-esm/operations/thresholds/mean.d.ts +9 -0
- package/lib-esm/operations/thresholds/mean.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/mean.js +23 -0
- package/lib-esm/operations/thresholds/mean.js.map +1 -0
- package/lib-esm/operations/thresholds/minError.d.ts +9 -0
- package/lib-esm/operations/thresholds/minError.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/minError.js +87 -0
- package/lib-esm/operations/thresholds/minError.js.map +1 -0
- package/lib-esm/operations/thresholds/minimum.d.ts +8 -0
- package/lib-esm/operations/thresholds/minimum.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/minimum.js +75 -0
- package/lib-esm/operations/thresholds/minimum.js.map +1 -0
- package/lib-esm/operations/thresholds/moments.d.ts +9 -0
- package/lib-esm/operations/thresholds/moments.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/moments.js +59 -0
- package/lib-esm/operations/thresholds/moments.js.map +1 -0
- package/lib-esm/operations/thresholds/otsu.d.ts +9 -0
- package/lib-esm/operations/thresholds/otsu.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/otsu.js +39 -0
- package/lib-esm/operations/thresholds/otsu.js.map +1 -0
- package/lib-esm/operations/thresholds/percentile.d.ts +8 -0
- package/lib-esm/operations/thresholds/percentile.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/percentile.js +36 -0
- package/lib-esm/operations/thresholds/percentile.js.map +1 -0
- package/lib-esm/operations/thresholds/renyiEntropy.d.ts +9 -0
- package/lib-esm/operations/thresholds/renyiEntropy.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/renyiEntropy.js +130 -0
- package/lib-esm/operations/thresholds/renyiEntropy.js.map +1 -0
- package/lib-esm/operations/thresholds/shanbhag.d.ts +10 -0
- package/lib-esm/operations/thresholds/shanbhag.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/shanbhag.js +74 -0
- package/lib-esm/operations/thresholds/shanbhag.js.map +1 -0
- package/lib-esm/operations/thresholds/triangle.d.ts +8 -0
- package/lib-esm/operations/thresholds/triangle.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/triangle.js +109 -0
- package/lib-esm/operations/thresholds/triangle.js.map +1 -0
- package/lib-esm/operations/thresholds/yen.d.ts +9 -0
- package/lib-esm/operations/thresholds/yen.d.ts.map +1 -0
- package/lib-esm/operations/thresholds/yen.js +59 -0
- package/lib-esm/operations/thresholds/yen.js.map +1 -0
- package/lib-esm/roi/RoiManager.d.ts +32 -0
- package/lib-esm/roi/RoiManager.d.ts.map +1 -0
- package/lib-esm/roi/RoiManager.js +7 -0
- package/lib-esm/roi/RoiManager.js.map +1 -0
- package/lib-esm/roi/RoiMapManager.d.ts +33 -0
- package/lib-esm/roi/RoiMapManager.d.ts.map +1 -0
- package/lib-esm/roi/RoiMapManager.js +13 -0
- package/lib-esm/roi/RoiMapManager.js.map +1 -0
- package/lib-esm/roi/colorRois.d.ts +39 -0
- package/lib-esm/roi/colorRois.d.ts.map +1 -0
- package/lib-esm/roi/colorRois.js +44 -0
- package/lib-esm/roi/colorRois.js.map +1 -0
- package/lib-esm/roi/fromMask.d.ts +19 -0
- package/lib-esm/roi/fromMask.d.ts.map +1 -0
- package/lib-esm/roi/fromMask.js +144 -0
- package/lib-esm/roi/fromMask.js.map +1 -0
- package/lib-esm/roi/index.d.ts +5 -0
- package/lib-esm/roi/index.d.ts.map +1 -0
- package/lib-esm/roi/index.js +5 -0
- package/lib-esm/roi/index.js.map +1 -0
- package/lib-esm/roi/utils/colorMaps/getBinaryMap.d.ts +37 -0
- package/lib-esm/roi/utils/colorMaps/getBinaryMap.d.ts.map +1 -0
- package/lib-esm/roi/utils/colorMaps/getBinaryMap.js +30 -0
- package/lib-esm/roi/utils/colorMaps/getBinaryMap.js.map +1 -0
- package/lib-esm/roi/utils/colorMaps/getRainbowMap.d.ts +25 -0
- package/lib-esm/roi/utils/colorMaps/getRainbowMap.d.ts.map +1 -0
- package/lib-esm/roi/utils/colorMaps/getRainbowMap.js +47 -0
- package/lib-esm/roi/utils/colorMaps/getRainbowMap.js.map +1 -0
- package/lib-esm/roi/utils/colorMaps/getSaturationMap.d.ts +42 -0
- package/lib-esm/roi/utils/colorMaps/getSaturationMap.d.ts.map +1 -0
- package/lib-esm/roi/utils/colorMaps/getSaturationMap.js +35 -0
- package/lib-esm/roi/utils/colorMaps/getSaturationMap.js.map +1 -0
- package/lib-esm/roi/utils/constants.d.ts +4 -0
- package/lib-esm/roi/utils/constants.d.ts.map +1 -0
- package/lib-esm/roi/utils/constants.js +4 -0
- package/lib-esm/roi/utils/constants.js.map +1 -0
- package/lib-esm/roi/utils/getColorMap.d.ts +32 -0
- package/lib-esm/roi/utils/getColorMap.d.ts.map +1 -0
- package/lib-esm/roi/utils/getColorMap.js +24 -0
- package/lib-esm/roi/utils/getColorMap.js.map +1 -0
- package/lib-esm/roi/utils/hsvToRgb.d.ts +21 -0
- package/lib-esm/roi/utils/hsvToRgb.d.ts.map +1 -0
- package/lib-esm/roi/utils/hsvToRgb.js +54 -0
- package/lib-esm/roi/utils/hsvToRgb.js.map +1 -0
- package/lib-esm/roi/utils/rgbToNumber.d.ts +8 -0
- package/lib-esm/roi/utils/rgbToNumber.d.ts.map +1 -0
- package/lib-esm/roi/utils/rgbToNumber.js +10 -0
- package/lib-esm/roi/utils/rgbToNumber.js.map +1 -0
- package/lib-esm/save/encode.d.ts +38 -0
- package/lib-esm/save/encode.d.ts.map +1 -0
- package/lib-esm/save/encode.js +29 -0
- package/lib-esm/save/encode.js.map +1 -0
- package/lib-esm/save/encodeJpeg.d.ts +18 -0
- package/lib-esm/save/encodeJpeg.d.ts.map +1 -0
- package/lib-esm/save/encodeJpeg.js +22 -0
- package/lib-esm/save/encodeJpeg.js.map +1 -0
- package/lib-esm/save/encodePng.d.ts +12 -0
- package/lib-esm/save/encodePng.d.ts.map +1 -0
- package/lib-esm/save/encodePng.js +12 -0
- package/lib-esm/save/encodePng.js.map +1 -0
- package/lib-esm/save/index.d.ts +6 -0
- package/lib-esm/save/index.d.ts.map +1 -0
- package/lib-esm/save/index.js +6 -0
- package/lib-esm/save/index.js.map +1 -0
- package/lib-esm/save/write.d.ts +27 -0
- package/lib-esm/save/write.d.ts.map +1 -0
- package/lib-esm/save/write.js +65 -0
- package/lib-esm/save/write.js.map +1 -0
- package/lib-esm/save/writeCanvas.d.ts +42 -0
- package/lib-esm/save/writeCanvas.d.ts.map +1 -0
- package/lib-esm/save/writeCanvas.js +25 -0
- package/lib-esm/save/writeCanvas.js.map +1 -0
- package/lib-esm/utils/boolToNumber.d.ts +9 -0
- package/lib-esm/utils/boolToNumber.d.ts.map +1 -0
- package/lib-esm/utils/boolToNumber.js +17 -0
- package/lib-esm/utils/boolToNumber.js.map +1 -0
- package/lib-esm/utils/borderIterator.d.ts +9 -0
- package/lib-esm/utils/borderIterator.d.ts.map +1 -0
- package/lib-esm/utils/borderIterator.js +21 -0
- package/lib-esm/utils/borderIterator.js.map +1 -0
- package/lib-esm/utils/checkKernel.d.ts +8 -0
- package/lib-esm/utils/checkKernel.d.ts.map +1 -0
- package/lib-esm/utils/checkKernel.js +12 -0
- package/lib-esm/utils/checkKernel.js.map +1 -0
- package/lib-esm/utils/checkProcessable.d.ts +18 -0
- package/lib-esm/utils/checkProcessable.d.ts.map +1 -0
- package/lib-esm/utils/checkProcessable.js +62 -0
- package/lib-esm/utils/checkProcessable.js.map +1 -0
- package/lib-esm/utils/clamp.d.ts +10 -0
- package/lib-esm/utils/clamp.d.ts.map +1 -0
- package/lib-esm/utils/clamp.js +34 -0
- package/lib-esm/utils/clamp.js.map +1 -0
- package/lib-esm/utils/colorModels.d.ts +15 -0
- package/lib-esm/utils/colorModels.d.ts.map +1 -0
- package/lib-esm/utils/colorModels.js +36 -0
- package/lib-esm/utils/colorModels.js.map +1 -0
- package/lib-esm/utils/copyData.d.ts +4 -0
- package/lib-esm/utils/copyData.d.ts.map +1 -0
- package/lib-esm/utils/copyData.js +16 -0
- package/lib-esm/utils/copyData.js.map +1 -0
- package/lib-esm/utils/getIndex.d.ts +12 -0
- package/lib-esm/utils/getIndex.d.ts.map +1 -0
- package/lib-esm/utils/getIndex.js +13 -0
- package/lib-esm/utils/getIndex.js.map +1 -0
- package/lib-esm/utils/getOutputImage.d.ts +61 -0
- package/lib-esm/utils/getOutputImage.d.ts.map +1 -0
- package/lib-esm/utils/getOutputImage.js +143 -0
- package/lib-esm/utils/getOutputImage.js.map +1 -0
- package/lib-esm/utils/interpolateBorder.d.ts +44 -0
- package/lib-esm/utils/interpolateBorder.d.ts.map +1 -0
- package/lib-esm/utils/interpolateBorder.js +134 -0
- package/lib-esm/utils/interpolateBorder.js.map +1 -0
- package/lib-esm/utils/interpolatePixel.d.ts +18 -0
- package/lib-esm/utils/interpolatePixel.d.ts.map +1 -0
- package/lib-esm/utils/interpolatePixel.js +118 -0
- package/lib-esm/utils/interpolatePixel.js.map +1 -0
- package/lib-esm/utils/kernels.d.ts +13 -0
- package/lib-esm/utils/kernels.d.ts.map +1 -0
- package/lib-esm/utils/kernels.js +63 -0
- package/lib-esm/utils/kernels.js.map +1 -0
- package/lib-esm/utils/kinds.d.ts +9 -0
- package/lib-esm/utils/kinds.d.ts.map +1 -0
- package/lib-esm/utils/kinds.js +20 -0
- package/lib-esm/utils/kinds.js.map +1 -0
- package/lib-esm/utils/round.d.ts +2 -0
- package/lib-esm/utils/round.d.ts.map +1 -0
- package/lib-esm/utils/round.js +7 -0
- package/lib-esm/utils/round.js.map +1 -0
- package/lib-esm/utils/validators.d.ts +23 -0
- package/lib-esm/utils/validators.d.ts.map +1 -0
- package/lib-esm/utils/validators.js +34 -0
- package/lib-esm/utils/validators.js.map +1 -0
- package/package.json +79 -0
- package/src/IJS.ts +758 -0
- package/src/Mask.ts +476 -0
- package/src/compute/histogram.ts +39 -0
- package/src/compute/index.ts +1 -0
- package/src/filters/and.ts +34 -0
- package/src/filters/blur.ts +49 -0
- package/src/filters/convolution.ts +357 -0
- package/src/filters/derivativeFilter.ts +77 -0
- package/src/filters/gaussianBlur.ts +124 -0
- package/src/filters/gradientFilter.ts +106 -0
- package/src/filters/hypotenuse.ts +74 -0
- package/src/filters/index.ts +10 -0
- package/src/filters/invert.ts +47 -0
- package/src/filters/or.ts +34 -0
- package/src/filters/subtractImage.ts +91 -0
- package/src/geometry/index.ts +3 -0
- package/src/geometry/resize.ts +182 -0
- package/src/geometry/rotate.ts +99 -0
- package/src/geometry/transform.ts +169 -0
- package/src/index.ts +9 -0
- package/src/load/decode.ts +33 -0
- package/src/load/decodeJpeg.ts +17 -0
- package/src/load/decodePng.ts +78 -0
- package/src/load/decodeTiff.ts +64 -0
- package/src/load/index.ts +7 -0
- package/src/load/read.ts +27 -0
- package/src/load/readCanvas.ts +17 -0
- package/src/load/readImg.ts +15 -0
- package/src/morphology/bottomHat.ts +66 -0
- package/src/morphology/cannyEdgeDetector.ts +214 -0
- package/src/morphology/clearBorder.ts +116 -0
- package/src/morphology/close.ts +61 -0
- package/src/morphology/dilate.ts +264 -0
- package/src/morphology/erode.ts +264 -0
- package/src/morphology/floodFill.ts +31 -0
- package/src/morphology/index.ts +10 -0
- package/src/morphology/morphologicalGradient.ts +69 -0
- package/src/morphology/open.ts +61 -0
- package/src/morphology/topHat.ts +64 -0
- package/src/operations/convertColor.ts +185 -0
- package/src/operations/convertDepth.ts +59 -0
- package/src/operations/copyTo.ts +107 -0
- package/src/operations/grey.ts +114 -0
- package/src/operations/greyAlgorithms.ts +265 -0
- package/src/operations/index.ts +7 -0
- package/src/operations/merge.ts +52 -0
- package/src/operations/split.ts +19 -0
- package/src/operations/threshold.ts +145 -0
- package/src/operations/thresholds/huang.ts +84 -0
- package/src/operations/thresholds/intermodes.ts +62 -0
- package/src/operations/thresholds/isodata.ts +53 -0
- package/src/operations/thresholds/li.ts +81 -0
- package/src/operations/thresholds/maxEntropy.ts +89 -0
- package/src/operations/thresholds/mean.ts +23 -0
- package/src/operations/thresholds/minError.ts +102 -0
- package/src/operations/thresholds/minimum.ts +78 -0
- package/src/operations/thresholds/moments.ts +60 -0
- package/src/operations/thresholds/otsu.ts +42 -0
- package/src/operations/thresholds/percentile.ts +40 -0
- package/src/operations/thresholds/renyiEntropy.ts +148 -0
- package/src/operations/thresholds/shanbhag.ts +82 -0
- package/src/operations/thresholds/triangle.ts +115 -0
- package/src/operations/thresholds/yen.ts +63 -0
- package/src/roi/RoiManager.ts +34 -0
- package/src/roi/RoiMapManager.ts +48 -0
- package/src/roi/colorRois.ts +69 -0
- package/src/roi/fromMask.ts +184 -0
- package/src/roi/index.ts +4 -0
- package/src/roi/utils/colorMaps/getBinaryMap.ts +72 -0
- package/src/roi/utils/colorMaps/getRainbowMap.ts +65 -0
- package/src/roi/utils/colorMaps/getSaturationMap.ts +80 -0
- package/src/roi/utils/constants.ts +3 -0
- package/src/roi/utils/getColorMap.ts +51 -0
- package/src/roi/utils/hsvToRgb.ts +62 -0
- package/src/roi/utils/rgbToNumber.ts +9 -0
- package/src/save/encode.ts +65 -0
- package/src/save/encodeJpeg.ts +37 -0
- package/src/save/encodePng.ts +16 -0
- package/src/save/index.ts +5 -0
- package/src/save/write.ts +109 -0
- package/src/save/writeCanvas.ts +82 -0
- package/src/utils/boolToNumber.ts +18 -0
- package/src/utils/borderIterator.ts +22 -0
- package/src/utils/checkKernel.ts +13 -0
- package/src/utils/checkProcessable.ts +98 -0
- package/src/utils/clamp.ts +39 -0
- package/src/utils/colorModels.ts +41 -0
- package/src/utils/copyData.ts +23 -0
- package/src/utils/getIndex.ts +19 -0
- package/src/utils/getOutputImage.ts +182 -0
- package/src/utils/interpolateBorder.ts +206 -0
- package/src/utils/interpolatePixel.ts +170 -0
- package/src/utils/kernels.ts +73 -0
- package/src/utils/kinds.ts +27 -0
- package/src/utils/round.ts +6 -0
- package/src/utils/validators.ts +43 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts R, G and B values to a single value using Luma 709 standard({@link https://en.wikipedia.org/wiki/Luma_(video)}).
|
|
3
|
+
*
|
|
4
|
+
* @param red - Red value of current pixel.
|
|
5
|
+
* @param green - Green value of current pixel.
|
|
6
|
+
* @param blue - Blue value of current pixel.
|
|
7
|
+
* @returns - Corresponding gray value.
|
|
8
|
+
*/
|
|
9
|
+
export function luma709(red, green, blue) {
|
|
10
|
+
// sRGB
|
|
11
|
+
// return red * 0.2126 + green * 0.7152 + blue * 0.0722;
|
|
12
|
+
// Let's do a little trick ... in order not convert the integer to a double we do
|
|
13
|
+
// the multiplication with integer to reach a total of 32768 and then shift the bits
|
|
14
|
+
// of 15 to the right
|
|
15
|
+
// This does a Math.floor and may lead to small (max 1) difference
|
|
16
|
+
// Same result, > 10% faster on the full grey conversion
|
|
17
|
+
return (red * 6966 + green * 23436 + blue * 2366) >> 15;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Converts R, G and B values to a single value using Luma 601 standard({@link https://en.wikipedia.org/wiki/Luma_(video)}).
|
|
21
|
+
*
|
|
22
|
+
* @param red - Red value of current pixel.
|
|
23
|
+
* @param green - Green value of current pixel.
|
|
24
|
+
* @param blue - Blue value of current pixel.
|
|
25
|
+
* @returns - Corresponding gray value.
|
|
26
|
+
*/
|
|
27
|
+
export function luma601(red, green, blue) {
|
|
28
|
+
// NTSC
|
|
29
|
+
// return this.red * 0.299 + green * 0.587 + blue * 0.114;
|
|
30
|
+
return (red * 9798 + green * 19235 + blue * 3735) >> 15;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Return the maximal value between red, green and blue.
|
|
34
|
+
*
|
|
35
|
+
* @param red - Red value of current pixel.
|
|
36
|
+
* @param green - Green value of current pixel.
|
|
37
|
+
* @param blue - Blue value of current pixel.
|
|
38
|
+
* @returns - Corresponding gray value.
|
|
39
|
+
*/
|
|
40
|
+
export function max(red, green, blue) {
|
|
41
|
+
return Math.max(red, green, blue);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Return the minimal value between red, green and blue.
|
|
45
|
+
*
|
|
46
|
+
* @param red - Red value of current pixel.
|
|
47
|
+
* @param green - Green value of current pixel.
|
|
48
|
+
* @param blue - Blue value of current pixel.
|
|
49
|
+
* @returns - Corresponding gray value.
|
|
50
|
+
*/
|
|
51
|
+
export function min(red, green, blue) {
|
|
52
|
+
return Math.min(red, green, blue);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Return the average of red, green and blue.
|
|
56
|
+
*
|
|
57
|
+
* @param red - Red value of current pixel.
|
|
58
|
+
* @param green - Green value of current pixel.
|
|
59
|
+
* @param blue - Blue value of current pixel.
|
|
60
|
+
* @returns - Corresponding gray value.
|
|
61
|
+
*/
|
|
62
|
+
export function average(red, green, blue) {
|
|
63
|
+
return ((red + green + blue) / 3) >> 0;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Return the average between the max and min values of red, green and blue.
|
|
67
|
+
*
|
|
68
|
+
* @param red - Red value of current pixel.
|
|
69
|
+
* @param green - Green value of current pixel.
|
|
70
|
+
* @param blue - Blue value of current pixel.
|
|
71
|
+
* @returns - Corresponding gray value.
|
|
72
|
+
*/
|
|
73
|
+
export function minmax(red, green, blue) {
|
|
74
|
+
return (Math.max(red, green, blue) + Math.min(red, green, blue)) / 2;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Return the red value.
|
|
78
|
+
*
|
|
79
|
+
* @param red - Red value of current pixel.
|
|
80
|
+
* @returns - Corresponding gray value.
|
|
81
|
+
*/
|
|
82
|
+
export function red(red) {
|
|
83
|
+
return red;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Return the green value.
|
|
87
|
+
*
|
|
88
|
+
* @param red - Red value of current pixel.
|
|
89
|
+
* @param green - Green value of current pixel.
|
|
90
|
+
* @returns - Corresponding gray value.
|
|
91
|
+
*/
|
|
92
|
+
export function green(red, green) {
|
|
93
|
+
return green;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Return the blue value.
|
|
97
|
+
*
|
|
98
|
+
* @param red - Red value of current pixel.
|
|
99
|
+
* @param green - Green value of current pixel.
|
|
100
|
+
* @param blue - Blue value of current pixel.
|
|
101
|
+
* @returns - Corresponding gray value.
|
|
102
|
+
*/
|
|
103
|
+
export function blue(red, green, blue) {
|
|
104
|
+
return blue;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Return the minimum of the inverses of red, green and blue.
|
|
108
|
+
*
|
|
109
|
+
* @param red - Red value of current pixel.
|
|
110
|
+
* @param green - Green value of current pixel.
|
|
111
|
+
* @param blue - Blue value of current pixel.
|
|
112
|
+
* @param image - Image to convert to grey.
|
|
113
|
+
* @returns - Corresponding gray value.
|
|
114
|
+
*/
|
|
115
|
+
export function black(red, green, blue, image) {
|
|
116
|
+
return Math.min(image.maxValue - red, image.maxValue - green, image.maxValue - blue);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Returns the cyan component of a pixel.
|
|
120
|
+
*
|
|
121
|
+
* @param red - Red value of current pixel.
|
|
122
|
+
* @param green - Green value of current pixel.
|
|
123
|
+
* @param blue - Blue value of current pixel.
|
|
124
|
+
* @param image - Image to convert to grey.
|
|
125
|
+
* @returns - Corresponding gray value.
|
|
126
|
+
*/
|
|
127
|
+
export function cyan(red, green, blue, image) {
|
|
128
|
+
let blackColor = black(red, green, blue, image);
|
|
129
|
+
return (((image.maxValue - red - blackColor) / (1 - blackColor / image.maxValue)) >>
|
|
130
|
+
0);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Returns the magenta component of a pixel.
|
|
134
|
+
*
|
|
135
|
+
* @param red - Red value of current pixel
|
|
136
|
+
* @param green - Green value of current pixel
|
|
137
|
+
* @param blue - Blue value of current pixel
|
|
138
|
+
* @param image - Image to convert to grey.
|
|
139
|
+
* @returns - Corresponding gray value.
|
|
140
|
+
*/
|
|
141
|
+
export function magenta(red, green, blue, image) {
|
|
142
|
+
let blackColor = black(red, green, blue, image);
|
|
143
|
+
return (((image.maxValue - green - blackColor) /
|
|
144
|
+
(1 - blackColor / image.maxValue)) >>
|
|
145
|
+
0);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Returns the yellow component of a pixel.
|
|
149
|
+
*
|
|
150
|
+
* @param red - Red value of current pixel
|
|
151
|
+
* @param green - Green value of current pixel
|
|
152
|
+
* @param blue - Blue value of current pixel
|
|
153
|
+
* @param image - Image to convert to grey.
|
|
154
|
+
* @returns - Corresponding gray value.
|
|
155
|
+
*/
|
|
156
|
+
export function yellow(red, green, blue, image) {
|
|
157
|
+
let blackColor = black(red, green, blue, image);
|
|
158
|
+
return (((image.maxValue - blue - blackColor) /
|
|
159
|
+
(1 - blackColor / image.maxValue)) >>
|
|
160
|
+
0);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Returns the hue of a pixel.
|
|
164
|
+
*
|
|
165
|
+
* @param red - Red value of current pixel
|
|
166
|
+
* @param green - Green value of current pixel
|
|
167
|
+
* @param blue - Blue value of current pixel
|
|
168
|
+
* @param image - Image to convert to grey.
|
|
169
|
+
* @returns - Corresponding gray value.
|
|
170
|
+
*/
|
|
171
|
+
export function hue(red, green, blue, image) {
|
|
172
|
+
let minValue = min(red, green, blue);
|
|
173
|
+
let maxValue = max(red, green, blue);
|
|
174
|
+
if (maxValue === minValue) {
|
|
175
|
+
return 0;
|
|
176
|
+
}
|
|
177
|
+
let hue = 0;
|
|
178
|
+
let delta = maxValue - minValue;
|
|
179
|
+
switch (maxValue) {
|
|
180
|
+
case red:
|
|
181
|
+
hue = (green - blue) / delta + (green < blue ? 6 : 0);
|
|
182
|
+
break;
|
|
183
|
+
case green:
|
|
184
|
+
hue = (blue - red) / delta + 2;
|
|
185
|
+
break;
|
|
186
|
+
case blue:
|
|
187
|
+
hue = (red - green) / delta + 4;
|
|
188
|
+
break;
|
|
189
|
+
default:
|
|
190
|
+
throw new Error('unreachable');
|
|
191
|
+
}
|
|
192
|
+
return ((hue / 6) * image.maxValue) >> 0;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Returns the saturation component of a pixel.
|
|
196
|
+
*
|
|
197
|
+
* @param red - Red value of current pixel
|
|
198
|
+
* @param green - Green value of current pixel
|
|
199
|
+
* @param blue - Blue value of current pixel
|
|
200
|
+
* @param image - Image to convert to grey.
|
|
201
|
+
* @returns - Corresponding gray value.
|
|
202
|
+
*/
|
|
203
|
+
export function saturation(red, green, blue, image) {
|
|
204
|
+
// from HSV model
|
|
205
|
+
let minValue = min(red, green, blue);
|
|
206
|
+
let maxValue = max(red, green, blue);
|
|
207
|
+
let delta = maxValue - minValue;
|
|
208
|
+
return maxValue === 0 ? 0 : (delta / maxValue) * image.maxValue;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Returns the lightness of a pixel.
|
|
212
|
+
*
|
|
213
|
+
* @param red - Red value of current pixel
|
|
214
|
+
* @param green - Green value of current pixel
|
|
215
|
+
* @param blue - Blue value of current pixel
|
|
216
|
+
* @returns - Corresponding gray value.
|
|
217
|
+
*/
|
|
218
|
+
export function lightness(red, green, blue) {
|
|
219
|
+
let minValue = min(red, green, blue);
|
|
220
|
+
let maxValue = max(red, green, blue);
|
|
221
|
+
return (maxValue + minValue) / 2;
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=greyAlgorithms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"greyAlgorithms.js","sourceRoot":"","sources":["../../src/operations/greyAlgorithms.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAC9D,OAAO;IACP,wDAAwD;IACxD,iFAAiF;IACjF,oFAAoF;IACpF,qBAAqB;IACrB,kEAAkE;IAClE,wDAAwD;IACxD,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAC9D,OAAO;IACP,0DAA0D;IAC1D,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAC9D,OAAO,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAC7D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AACD;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,KAAa;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AACD;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,GAAW,EACX,KAAa,EACb,IAAY,EACZ,KAAU;IAEV,OAAO,IAAI,CAAC,GAAG,CACb,KAAK,CAAC,QAAQ,GAAG,GAAG,EACpB,KAAK,CAAC,QAAQ,GAAG,KAAK,EACtB,KAAK,CAAC,QAAQ,GAAG,IAAI,CACtB,CAAC;AACJ,CAAC;AACD;;;;;;;;GAQG;AACH,MAAM,UAAU,IAAI,CAClB,GAAW,EACX,KAAa,EACb,IAAY,EACZ,KAAU;IAEV,IAAI,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CACL,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzE,CAAC,CACF,CAAC;AACJ,CAAC;AACD;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CACrB,GAAW,EACX,KAAa,EACb,IAAY,EACZ,KAAU;IAEV,IAAI,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CACL,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC;QACpC,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CACF,CAAC;AACJ,CAAC;AACD;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CACpB,GAAW,EACX,KAAa,EACb,IAAY,EACZ,KAAU;IAEV,IAAI,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CACL,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC;QACnC,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CACF,CAAC;AACJ,CAAC;AACD;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CACjB,GAAW,EACX,KAAa,EACb,IAAY,EACZ,KAAU;IAEV,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACzB,OAAO,CAAC,CAAC;KACV;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAEhC,QAAQ,QAAQ,EAAE;QAChB,KAAK,GAAG;YACN,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM;QACR,KAAK,KAAK;YACR,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,IAAI;YACP,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAChC,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;KAClC;IACD,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AACD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,KAAa,EACb,IAAY,EACZ,KAAU;IAEV,iBAAiB;IACjB,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAChC,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;AAClE,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;IAChE,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IJS } from '../IJS';
|
|
2
|
+
/**
|
|
3
|
+
* Inverse of split. Merges multiple single-channel images into one.
|
|
4
|
+
*
|
|
5
|
+
* @param images - An array of single-channel images.
|
|
6
|
+
* @returns The merged image.
|
|
7
|
+
*/
|
|
8
|
+
export declare function merge(images: IJS[]): IJS;
|
|
9
|
+
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/operations/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,QAAQ,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CA2CxC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IJS, ImageColorModel } from '../IJS';
|
|
2
|
+
/**
|
|
3
|
+
* Inverse of split. Merges multiple single-channel images into one.
|
|
4
|
+
*
|
|
5
|
+
* @param images - An array of single-channel images.
|
|
6
|
+
* @returns The merged image.
|
|
7
|
+
*/
|
|
8
|
+
export function merge(images) {
|
|
9
|
+
const channels = images.length;
|
|
10
|
+
let colorModel;
|
|
11
|
+
if (channels === 2) {
|
|
12
|
+
colorModel = ImageColorModel.GREYA;
|
|
13
|
+
}
|
|
14
|
+
else if (channels === 3) {
|
|
15
|
+
colorModel = ImageColorModel.RGB;
|
|
16
|
+
}
|
|
17
|
+
else if (channels === 4) {
|
|
18
|
+
colorModel = ImageColorModel.RGBA;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw new RangeError(`merge expects an array of two to four images. Got ${channels}`);
|
|
22
|
+
}
|
|
23
|
+
const first = images[0];
|
|
24
|
+
if (first.channels !== 1) {
|
|
25
|
+
throw new Error(`each image must have one channel. Got ${first.channels}`);
|
|
26
|
+
}
|
|
27
|
+
for (let i = 1; i < channels; i++) {
|
|
28
|
+
const img = images[i];
|
|
29
|
+
if (img.channels !== 1) {
|
|
30
|
+
throw new Error(`each image must have one channel. Got ${img.channels}`);
|
|
31
|
+
}
|
|
32
|
+
if (img.width !== first.width ||
|
|
33
|
+
img.height !== first.height ||
|
|
34
|
+
img.depth !== first.depth) {
|
|
35
|
+
throw new Error('all images must have the same width, height and depth');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const newImage = IJS.createFrom(first, { colorModel });
|
|
39
|
+
for (let c = 0; c < channels; c++) {
|
|
40
|
+
const img = images[c];
|
|
41
|
+
for (let i = 0; i < newImage.size; i++) {
|
|
42
|
+
newImage.setValueByIndex(i, c, img.getValueByIndex(i, 0));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return newImage;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/operations/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,MAAa;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,IAAI,UAA2B,CAAC;IAChC,IAAI,QAAQ,KAAK,CAAC,EAAE;QAClB,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC;KACpC;SAAM,IAAI,QAAQ,KAAK,CAAC,EAAE;QACzB,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC;KAClC;SAAM,IAAI,QAAQ,KAAK,CAAC,EAAE;QACzB,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;KACnC;SAAM;QACL,MAAM,IAAI,UAAU,CAClB,qDAAqD,QAAQ,EAAE,CAChE,CAAC;KACH;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC5E;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1E;QACD,IACE,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;YACzB,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC3B,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EACzB;YACA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC1E;KACF;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACtC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC3D;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IJS } from '../IJS';
|
|
2
|
+
/**
|
|
3
|
+
* Create an array of single-channel images based on a multi-channel image.
|
|
4
|
+
*
|
|
5
|
+
* @param image - The image with many channels.
|
|
6
|
+
* @returns Array of single-channel images.
|
|
7
|
+
*/
|
|
8
|
+
export declare function split(image: IJS): IJS[];
|
|
9
|
+
//# sourceMappingURL=split.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../src/operations/split.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAmB,MAAM,QAAQ,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,CAUvC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IJS, ImageColorModel } from '../IJS';
|
|
2
|
+
/**
|
|
3
|
+
* Create an array of single-channel images based on a multi-channel image.
|
|
4
|
+
*
|
|
5
|
+
* @param image - The image with many channels.
|
|
6
|
+
* @returns Array of single-channel images.
|
|
7
|
+
*/
|
|
8
|
+
export function split(image) {
|
|
9
|
+
const result = [];
|
|
10
|
+
for (let c = 0; c < image.channels; c++) {
|
|
11
|
+
const channel = IJS.createFrom(image, { colorModel: ImageColorModel.GREY });
|
|
12
|
+
for (let i = 0; i < channel.size; i++) {
|
|
13
|
+
channel.setValueByIndex(i, 0, image.getValueByIndex(i, c));
|
|
14
|
+
}
|
|
15
|
+
result.push(channel);
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=split.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../src/operations/split.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,KAAU;IAC9B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5D;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Mask } from '..';
|
|
2
|
+
import { IJS } from '../IJS';
|
|
3
|
+
export declare enum ThresholdAlgorithm {
|
|
4
|
+
HUANG = "HUANG",
|
|
5
|
+
INTERMODES = "INTERMODES",
|
|
6
|
+
ISODATA = "ISODATA",
|
|
7
|
+
LI = "LI",
|
|
8
|
+
MAX_ENTROPY = "MAX_ENTROPY",
|
|
9
|
+
MEAN = "MEAN",
|
|
10
|
+
MIN_ERROR = "MIN_ERROR",
|
|
11
|
+
MINIMUM = "MINIMUM",
|
|
12
|
+
MOMENTS = "MOMENTS",
|
|
13
|
+
OTSU = "OTSU",
|
|
14
|
+
PERCENTILE = "PERCENTILE",
|
|
15
|
+
RENYI_ENTROPY = "RENYI_ENTROPY",
|
|
16
|
+
SHANBHAG = "SHANBHAG",
|
|
17
|
+
TRIANGLE = "TRIANGLE",
|
|
18
|
+
YEN = "YEN"
|
|
19
|
+
}
|
|
20
|
+
interface ThresholdOptionsBase {
|
|
21
|
+
/**
|
|
22
|
+
* Image to use as the output.
|
|
23
|
+
*/
|
|
24
|
+
out?: Mask;
|
|
25
|
+
}
|
|
26
|
+
export interface ThresholdOptionsThreshold extends ThresholdOptionsBase {
|
|
27
|
+
/**
|
|
28
|
+
* Threshold value that should be used. Should be an integer between 0 and Image.maxValue.
|
|
29
|
+
*/
|
|
30
|
+
threshold: number;
|
|
31
|
+
}
|
|
32
|
+
export interface ThresholdOptionsAlgorithm extends ThresholdOptionsBase {
|
|
33
|
+
/**
|
|
34
|
+
* Specify a function to computes the threshold value.
|
|
35
|
+
*
|
|
36
|
+
* @default ThresholdAlgorithm.OTSU
|
|
37
|
+
*/
|
|
38
|
+
algorithm?: ThresholdAlgorithm;
|
|
39
|
+
}
|
|
40
|
+
export declare type ThresholdOptions = ThresholdOptionsThreshold | ThresholdOptionsAlgorithm;
|
|
41
|
+
/**
|
|
42
|
+
* Compute threshold value for an image using the specified algorithm.
|
|
43
|
+
*
|
|
44
|
+
* @param image - The grey image.
|
|
45
|
+
* @param algorithm - Algorithm that defines the threshold.
|
|
46
|
+
* @returns The threshold value for the image.
|
|
47
|
+
*/
|
|
48
|
+
export declare function computeThreshold(image: IJS, algorithm?: ThresholdAlgorithm): number;
|
|
49
|
+
/**
|
|
50
|
+
* Create a black and white image based on a threshold value.
|
|
51
|
+
*
|
|
52
|
+
* @param image - The grey image to convert.
|
|
53
|
+
* @param options - Threshold options.
|
|
54
|
+
* @returns The resulting mask.
|
|
55
|
+
*/
|
|
56
|
+
export declare function threshold(image: IJS, options?: ThresholdOptions): Mask;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=threshold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/operations/threshold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAoB7B,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,EAAE,OAAO;IACT,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,GAAG,QAAQ;CACZ;AAED,UAAU,oBAAoB;IAC5B;;OAEG;IACH,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE;;;;OAIG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,oBAAY,gBAAgB,GACxB,yBAAyB,GACzB,yBAAyB,CAAC;AAE9B;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,GAAG,EACV,SAAS,GAAE,kBAA4C,GACtD,MAAM,CA0CR;AAGD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAgB1E"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { imageToOutputMask } from '../utils/getOutputImage';
|
|
2
|
+
import { validateValue } from '../utils/validators';
|
|
3
|
+
import huang from './thresholds/huang';
|
|
4
|
+
import intermodes from './thresholds/intermodes';
|
|
5
|
+
import isodata from './thresholds/isodata';
|
|
6
|
+
import li from './thresholds/li';
|
|
7
|
+
import maxEntropy from './thresholds/maxEntropy';
|
|
8
|
+
import mean from './thresholds/mean';
|
|
9
|
+
import minError from './thresholds/minError';
|
|
10
|
+
import minimum from './thresholds/minimum';
|
|
11
|
+
import moments from './thresholds/moments';
|
|
12
|
+
import { otsu } from './thresholds/otsu';
|
|
13
|
+
import percentile from './thresholds/percentile';
|
|
14
|
+
import renyiEntropy from './thresholds/renyiEntropy';
|
|
15
|
+
import shanbhag from './thresholds/shanbhag';
|
|
16
|
+
import { triangle } from './thresholds/triangle';
|
|
17
|
+
import yen from './thresholds/yen';
|
|
18
|
+
export var ThresholdAlgorithm;
|
|
19
|
+
(function (ThresholdAlgorithm) {
|
|
20
|
+
ThresholdAlgorithm["HUANG"] = "HUANG";
|
|
21
|
+
ThresholdAlgorithm["INTERMODES"] = "INTERMODES";
|
|
22
|
+
ThresholdAlgorithm["ISODATA"] = "ISODATA";
|
|
23
|
+
ThresholdAlgorithm["LI"] = "LI";
|
|
24
|
+
ThresholdAlgorithm["MAX_ENTROPY"] = "MAX_ENTROPY";
|
|
25
|
+
ThresholdAlgorithm["MEAN"] = "MEAN";
|
|
26
|
+
ThresholdAlgorithm["MIN_ERROR"] = "MIN_ERROR";
|
|
27
|
+
ThresholdAlgorithm["MINIMUM"] = "MINIMUM";
|
|
28
|
+
ThresholdAlgorithm["MOMENTS"] = "MOMENTS";
|
|
29
|
+
ThresholdAlgorithm["OTSU"] = "OTSU";
|
|
30
|
+
ThresholdAlgorithm["PERCENTILE"] = "PERCENTILE";
|
|
31
|
+
ThresholdAlgorithm["RENYI_ENTROPY"] = "RENYI_ENTROPY";
|
|
32
|
+
ThresholdAlgorithm["SHANBHAG"] = "SHANBHAG";
|
|
33
|
+
ThresholdAlgorithm["TRIANGLE"] = "TRIANGLE";
|
|
34
|
+
ThresholdAlgorithm["YEN"] = "YEN";
|
|
35
|
+
})(ThresholdAlgorithm || (ThresholdAlgorithm = {}));
|
|
36
|
+
/**
|
|
37
|
+
* Compute threshold value for an image using the specified algorithm.
|
|
38
|
+
*
|
|
39
|
+
* @param image - The grey image.
|
|
40
|
+
* @param algorithm - Algorithm that defines the threshold.
|
|
41
|
+
* @returns The threshold value for the image.
|
|
42
|
+
*/
|
|
43
|
+
export function computeThreshold(image, algorithm = ThresholdAlgorithm.OTSU) {
|
|
44
|
+
if (image.channels !== 1) {
|
|
45
|
+
throw new Error('threshold can only be computed on images with one channel');
|
|
46
|
+
}
|
|
47
|
+
const histogram = image.histogram();
|
|
48
|
+
switch (algorithm) {
|
|
49
|
+
case ThresholdAlgorithm.HUANG:
|
|
50
|
+
return huang(histogram);
|
|
51
|
+
case ThresholdAlgorithm.INTERMODES:
|
|
52
|
+
return intermodes(histogram);
|
|
53
|
+
case ThresholdAlgorithm.ISODATA:
|
|
54
|
+
return isodata(histogram);
|
|
55
|
+
case ThresholdAlgorithm.LI:
|
|
56
|
+
return li(histogram, image.size);
|
|
57
|
+
case ThresholdAlgorithm.MAX_ENTROPY:
|
|
58
|
+
return maxEntropy(histogram, image.size);
|
|
59
|
+
case ThresholdAlgorithm.MEAN:
|
|
60
|
+
return mean(histogram, image.size);
|
|
61
|
+
case ThresholdAlgorithm.MINIMUM:
|
|
62
|
+
return minimum(histogram);
|
|
63
|
+
case ThresholdAlgorithm.MIN_ERROR:
|
|
64
|
+
return minError(histogram, image.size);
|
|
65
|
+
case ThresholdAlgorithm.MOMENTS:
|
|
66
|
+
return moments(histogram, image.size);
|
|
67
|
+
case ThresholdAlgorithm.OTSU:
|
|
68
|
+
return otsu(histogram, image.size);
|
|
69
|
+
case ThresholdAlgorithm.PERCENTILE:
|
|
70
|
+
return percentile(histogram);
|
|
71
|
+
case ThresholdAlgorithm.RENYI_ENTROPY:
|
|
72
|
+
return renyiEntropy(histogram, image.size);
|
|
73
|
+
case ThresholdAlgorithm.SHANBHAG:
|
|
74
|
+
return shanbhag(histogram, image.size);
|
|
75
|
+
case ThresholdAlgorithm.TRIANGLE:
|
|
76
|
+
return triangle(histogram);
|
|
77
|
+
case ThresholdAlgorithm.YEN:
|
|
78
|
+
return yen(histogram, image.size);
|
|
79
|
+
default:
|
|
80
|
+
throw new RangeError(`unsupported threshold algorithm: ${algorithm}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// See: https://docs.opencv.org/4.0.1/d7/d1b/group__imgproc__misc.html#gaa9e58d2860d4afa658ef70a9b1115576
|
|
84
|
+
/**
|
|
85
|
+
* Create a black and white image based on a threshold value.
|
|
86
|
+
*
|
|
87
|
+
* @param image - The grey image to convert.
|
|
88
|
+
* @param options - Threshold options.
|
|
89
|
+
* @returns The resulting mask.
|
|
90
|
+
*/
|
|
91
|
+
export function threshold(image, options = {}) {
|
|
92
|
+
let thresholdValue;
|
|
93
|
+
if ('threshold' in options) {
|
|
94
|
+
thresholdValue = options.threshold;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
thresholdValue = computeThreshold(image, options.algorithm);
|
|
98
|
+
}
|
|
99
|
+
validateValue(thresholdValue, image);
|
|
100
|
+
const result = imageToOutputMask(image, options);
|
|
101
|
+
for (let i = 0; i < image.size; i++) {
|
|
102
|
+
result.setBitByIndex(i, image.getValueByIndex(i, 0) > thresholdValue ? 1 : 0);
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=threshold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../src/operations/threshold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"huang.d.ts","sourceRoot":"","sources":["../../../src/operations/thresholds/huang.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAuE5D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* * see http://rsb.info.nih.gov/ij/developer/source/ij/process/AutoThresholder.java.html.
|
|
3
|
+
* Huang: Implements Huang's fuzzy thresholding method: Huang, L-K & Wang, M-J J (1995),
|
|
4
|
+
* "Image thresholding by minimizing the measure of fuzziness", Pattern Recognition 28(1): 41-51
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Return a threshold for a histogram using Huang algorithm.
|
|
8
|
+
*
|
|
9
|
+
* @param histogram - Image histogram.
|
|
10
|
+
* @returns The threshold.
|
|
11
|
+
*/
|
|
12
|
+
export default function huang(histogram) {
|
|
13
|
+
/* Determine the first non-zero bin */
|
|
14
|
+
let firstBin = 0;
|
|
15
|
+
for (let ih = 0; ih < histogram.length; ih++) {
|
|
16
|
+
if (histogram[ih] !== 0) {
|
|
17
|
+
firstBin = ih;
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/* Determine the last non-zero bin */
|
|
22
|
+
let lastBin = histogram.length - 1;
|
|
23
|
+
for (let ih = histogram.length - 1; ih >= firstBin; ih--) {
|
|
24
|
+
if (histogram[ih] !== 0) {
|
|
25
|
+
lastBin = ih;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const term = 1.0 / (lastBin - firstBin);
|
|
30
|
+
const mu0 = new Array(histogram.length);
|
|
31
|
+
let sumPix = 0;
|
|
32
|
+
let numPix = 0;
|
|
33
|
+
for (let ih = firstBin; ih < histogram.length; ih++) {
|
|
34
|
+
sumPix += ih * histogram[ih];
|
|
35
|
+
numPix += histogram[ih];
|
|
36
|
+
mu0[ih] = sumPix / numPix;
|
|
37
|
+
}
|
|
38
|
+
const mu1 = new Array(histogram.length);
|
|
39
|
+
sumPix = numPix = 0;
|
|
40
|
+
for (let ih = lastBin; ih > 0; ih--) {
|
|
41
|
+
sumPix += ih * histogram[ih];
|
|
42
|
+
numPix += histogram[ih];
|
|
43
|
+
mu1[ih - 1] = sumPix / numPix;
|
|
44
|
+
}
|
|
45
|
+
/* Determine the threshold that minimizes the fuzzy entropy*/
|
|
46
|
+
let threshold = -1;
|
|
47
|
+
let minEnt = Number.MAX_VALUE;
|
|
48
|
+
for (let it = 0; it < histogram.length; it++) {
|
|
49
|
+
let ent = 0;
|
|
50
|
+
let muX;
|
|
51
|
+
for (let ih = 0; ih <= it; ih++) {
|
|
52
|
+
/* Equation (4) in Ref. 1 */
|
|
53
|
+
muX = 1 / (1 + term * Math.abs(ih - mu0[it]));
|
|
54
|
+
if (!(muX < 1e-6 || muX > 0.999999)) {
|
|
55
|
+
/* Equation (6) & (8) in Ref. 1 */
|
|
56
|
+
ent +=
|
|
57
|
+
histogram[ih] *
|
|
58
|
+
(-muX * Math.log(muX) - (1 - muX) * Math.log(1 - muX));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (let ih = it + 1; ih < histogram.length; ih++) {
|
|
62
|
+
/* Equation (4) in Ref. 1 */
|
|
63
|
+
muX = 1 / (1 + term * Math.abs(ih - mu1[it]));
|
|
64
|
+
if (!(muX < 1e-6 || muX > 0.999999)) {
|
|
65
|
+
/* Equation (6) & (8) in Ref. 1 */
|
|
66
|
+
ent +=
|
|
67
|
+
histogram[ih] *
|
|
68
|
+
(-muX * Math.log(muX) - (1 - muX) * Math.log(1 - muX));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (ent < minEnt) {
|
|
72
|
+
minEnt = ent;
|
|
73
|
+
threshold = it;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return threshold;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=huang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"huang.js","sourceRoot":"","sources":["../../../src/operations/thresholds/huang.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,SAAsB;IAClD,sCAAsC;IACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QAC5C,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YACvB,QAAQ,GAAG,EAAE,CAAC;YACd,MAAM;SACP;KACF;IAED,qCAAqC;IACrC,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,KAAK,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,EAAE,EAAE;QACxD,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,GAAG,EAAE,CAAC;YACb,MAAM;SACP;KACF;IAED,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,EAAE,GAAG,QAAQ,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QACnD,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;KAC3B;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE;QACnC,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;KAC/B;IAED,6DAA6D;IAC7D,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAC9B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;QAC5C,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,GAAG,CAAC;QACR,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;YAC/B,4BAA4B;YAC5B,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,EAAE;gBACnC,kCAAkC;gBAClC,GAAG;oBACD,SAAS,CAAC,EAAE,CAAC;wBACb,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aAC1D;SACF;QAED,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACjD,4BAA4B;YAC5B,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,EAAE;gBACnC,kCAAkC;gBAClC,GAAG;oBACD,SAAS,CAAC,EAAE,CAAC;wBACb,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aAC1D;SACF;QAED,IAAI,GAAG,GAAG,MAAM,EAAE;YAChB,MAAM,GAAG,GAAG,CAAC;YACb,SAAS,GAAG,EAAE,CAAC;SAChB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intermodes.d.ts","sourceRoot":"","sources":["../../../src/operations/thresholds/intermodes.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CA6BjE"}
|