image-js 1.5.0 → 1.6.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 (52) hide show
  1. package/dist/image-js.esm.js +313 -5
  2. package/dist/image-js.esm.js.map +1 -1
  3. package/dist/image-js.esm.min.js +2 -2
  4. package/dist/image-js.esm.min.js.map +1 -1
  5. package/dist/image-js.umd.js +315 -9
  6. package/dist/image-js.umd.js.map +1 -1
  7. package/dist/image-js.umd.min.js +2 -2
  8. package/dist/image-js.umd.min.js.map +1 -1
  9. package/dist-types/image-js.d.ts +23 -2
  10. package/lib/Mask.d.ts +8 -0
  11. package/lib/Mask.d.ts.map +1 -1
  12. package/lib/Mask.js +10 -0
  13. package/lib/Mask.js.map +1 -1
  14. package/lib/maskAnalysis/getContourMoore.d.ts +10 -0
  15. package/lib/maskAnalysis/getContourMoore.d.ts.map +1 -0
  16. package/lib/maskAnalysis/getContourMoore.js +107 -0
  17. package/lib/maskAnalysis/getContourMoore.js.map +1 -0
  18. package/lib/maskAnalysis/getContourPavlidis.d.ts +11 -0
  19. package/lib/maskAnalysis/getContourPavlidis.d.ts.map +1 -0
  20. package/lib/maskAnalysis/getContourPavlidis.js +90 -0
  21. package/lib/maskAnalysis/getContourPavlidis.js.map +1 -0
  22. package/lib/maskAnalysis/getExternalContour.d.ts +11 -0
  23. package/lib/maskAnalysis/getExternalContour.d.ts.map +1 -0
  24. package/lib/maskAnalysis/getExternalContour.js +18 -0
  25. package/lib/maskAnalysis/getExternalContour.js.map +1 -0
  26. package/lib/maskAnalysis/maskAnalysis.types.d.ts +8 -2
  27. package/lib/maskAnalysis/maskAnalysis.types.d.ts.map +1 -1
  28. package/lib/maskAnalysis/utils/getExtendedBorderPoints.d.ts.map +1 -1
  29. package/lib/maskAnalysis/utils/getExtendedBorderPoints.js +2 -4
  30. package/lib/maskAnalysis/utils/getExtendedBorderPoints.js.map +1 -1
  31. package/lib/maskAnalysis/utils/getExternalContourUtils.d.ts +17 -0
  32. package/lib/maskAnalysis/utils/getExternalContourUtils.d.ts.map +1 -0
  33. package/lib/maskAnalysis/utils/getExternalContourUtils.js +32 -0
  34. package/lib/maskAnalysis/utils/getExternalContourUtils.js.map +1 -0
  35. package/lib/roi/Roi.d.ts +7 -0
  36. package/lib/roi/Roi.d.ts.map +1 -1
  37. package/lib/roi/Roi.js +9 -0
  38. package/lib/roi/Roi.js.map +1 -1
  39. package/lib/roi/getExternalContour.d.ts +10 -0
  40. package/lib/roi/getExternalContour.d.ts.map +1 -0
  41. package/lib/roi/getExternalContour.js +11 -0
  42. package/lib/roi/getExternalContour.js.map +1 -0
  43. package/package.json +1 -1
  44. package/src/Mask.ts +12 -0
  45. package/src/maskAnalysis/getContourMoore.ts +143 -0
  46. package/src/maskAnalysis/getContourPavlidis.ts +102 -0
  47. package/src/maskAnalysis/getExternalContour.ts +27 -0
  48. package/src/maskAnalysis/maskAnalysis.types.ts +8 -2
  49. package/src/maskAnalysis/utils/getExtendedBorderPoints.ts +2 -4
  50. package/src/maskAnalysis/utils/getExternalContourUtils.ts +33 -0
  51. package/src/roi/Roi.ts +11 -0
  52. package/src/roi/getExternalContour.ts +17 -0
@@ -1498,12 +1498,18 @@ export declare function getBorderPoints(roi: Roi, options?: GetBorderPointsOptio
1498
1498
 
1499
1499
  export declare interface GetBorderPointsOptions {
1500
1500
  /**
1501
- * Should the inner borders be returned too?
1501
+ * Whether to include borders around holes inside the mask.
1502
+ * When `false`, the mask is solid-filled before processing, so only the outer contour is returned.
1503
+ * When `true`, pixels bordering interior holes are returned as well.
1502
1504
  * @default `false`
1503
1505
  */
1504
1506
  innerBorders?: boolean;
1505
1507
  /**
1506
- * Consider pixels connected by corners?
1508
+ * Whether to use 8-connectivity instead of 4-connectivity when detecting border pixels.
1509
+ * When `false`, a pixel is considered a border only if at least one of its 4 orthogonal
1510
+ * neighbors (up, down, left, right) is unset.
1511
+ * When `true`, diagonal neighbors are also considered, so a pixel touching an unset pixel
1512
+ * only by a corner is also returned as a border point.
1507
1513
  * @default `false`
1508
1514
  */
1509
1515
  allowCorners?: boolean;
@@ -1573,6 +1579,8 @@ export declare function getCrosscheckMatches(source: BriefDescriptor[], destinat
1573
1579
  */
1574
1580
  export declare function getDirection(x: number, y: number): number;
1575
1581
 
1582
+ declare type GetExternalContourOptions = Omit<GetBorderPointsOptions, 'innerBorers'>;
1583
+
1576
1584
  /**
1577
1585
  * Checks the surrounding values of a point. If they are all bigger or smaller than the pixel in question then this point is considered an extremum.
1578
1586
  * @param image - Image to find extrema from.
@@ -2864,6 +2872,13 @@ export declare class Mask {
2864
2872
  * @returns Array of border points.
2865
2873
  */
2866
2874
  getBorderPoints(options?: GetBorderPointsOptions): Point[];
2875
+ /**
2876
+ * Returns external contour of the mask. Unlike border points, returned points
2877
+ * follow the shape of the mask.
2878
+ * @param options - Get external contour options.
2879
+ * @returns Array of contour points.
2880
+ */
2881
+ getExternalContour(options?: GetExternalContourOptions): Point[];
2867
2882
  /**
2868
2883
  * Get the vertices of the convex Hull polygon of a mask.
2869
2884
  * @returns Array of the vertices of the convex Hull in clockwise order.
@@ -3601,6 +3616,12 @@ export declare class Roi {
3601
3616
  * @returns The array of border pixels.
3602
3617
  */
3603
3618
  getBorderPoints(options?: GetBorderPointsOptions): Point[];
3619
+ /**
3620
+ * Finds external contour of the roi from its mask.
3621
+ * @param options - GetExternalContourOptions.
3622
+ * @returns Array of contour points.
3623
+ */
3624
+ getExternalContour(options?: GetExternalContourOptions): Point[];
3604
3625
  /**
3605
3626
  * Returns an array of ROIs IDs that are included in the current ROI.
3606
3627
  * This will be useful to know if there are some holes in the ROI.
package/lib/Mask.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { BitDepth, Image } from './Image.js';
2
2
  import type { SubtractImageOptions } from './compare/index.js';
3
3
  import type { DrawLineOnMaskOptions, DrawPointsOptions, DrawPolygonOnMaskOptions, DrawPolylineOnMaskOptions, DrawRectangleOptions } from './draw/index.js';
4
4
  import type { AndOptions, InvertOptions, OrOptions } from './filters/index.js';
5
+ import type { GetExternalContourOptions } from './maskAnalysis/getExternalContour.ts';
5
6
  import type { ConvexHull, Feret, GetBorderPointsOptions, Mbr } from './maskAnalysis/index.js';
6
7
  import type { BottomHatOptions, ClearBorderOptions, CloseOptions, DilateOptions, ErodeOptions, FloodFillOptions, MorphologicalGradientOptions, OpenOptions, SolidFillOptions, TopHatOptions } from './morphology/index.js';
7
8
  import type { CopyToOptions, PaintMaskOnMaskOptions } from './operations/index.js';
@@ -250,6 +251,13 @@ export declare class Mask {
250
251
  * @returns Array of border points.
251
252
  */
252
253
  getBorderPoints(options?: GetBorderPointsOptions): Point[];
254
+ /**
255
+ * Returns external contour of the mask. Unlike border points, returned points
256
+ * follow the shape of the mask.
257
+ * @param options - Get external contour options.
258
+ * @returns Array of contour points.
259
+ */
260
+ getExternalContour(options?: GetExternalContourOptions): Point[];
253
261
  /**
254
262
  * Get the vertices of the convex Hull polygon of a mask.
255
263
  * @returns Array of the vertices of the convex Hull in clockwise order.
package/lib/Mask.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Mask.d.ts","sourceRoot":"","sources":["../src/Mask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mask.d.ts","sourceRoot":"","sources":["../src/Mask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAItF,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,sBAAsB,EACtB,GAAG,EACJ,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,4BAA4B,EAC5B,WAAW,EACX,gBAAgB,EAChB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAa/B,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AAEvC,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,IAAI;IACf;;OAEG;IACH,SAAgB,KAAK,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC;;OAEG;IACH,SAAgB,UAAU,EAAE,eAAe,CAAC;IAE5C;;OAEG;IACH,SAAgB,UAAU,EAAE,MAAM,CAAC;IAEnC;;OAEG;IACH,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,SAAgB,MAAM,EAAE,KAAK,CAAC;IAE9B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAElC;;;;;OAKG;gBACgB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB;IA0C3E;;;;;OAKG;WACW,UAAU,CACtB,KAAK,EAAE,IAAI,GAAG,KAAK,EACnB,OAAO,GAAE,qBAA0B,GAClC,IAAI;IASP;;;;;OAKG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAOtD;;;;;OAKG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnE;;;;;OAKG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAM1E;;;;OAIG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAI/C;;;;OAIG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAI5D;;;;;;OAMG;WACW,UAAU,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,EAAE,GACd,IAAI;IAUP;;;OAGG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;;OAKG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAKlD;;;;;OAKG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAMjE;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI1D;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAUnC;;;;;;OAMG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAKrE;;;;;;OAMG;IACI,QAAQ,CACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GACd,IAAI;IAKP;;;;;OAKG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAK9D;;;;;OAKG;IACI,eAAe,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GACd,IAAI;IAKP;;;;OAIG;IACI,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAI5C;;;;OAIG;IACI,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI3D;;;OAGG;IACI,WAAW;;;;;IAsBlB;;;;OAIG;IACI,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAM3B,YAAY,CAAC,UAAU,EAAE,eAAe,GAAG,KAAK;IAKvD;;;;OAIG;IACI,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAI5C;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAIlE;;;;;OAKG;IACI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAGnD;;;;;OAKG;IACI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI;IAKjD;;;;OAIG;IACI,eAAe,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,KAAK,EAAE;IAIjE;;;;;OAKG;IACI,kBAAkB,CAAC,OAAO,CAAC,EAAE,yBAAyB;IAI7D;;;OAGG;IACI,aAAa,IAAI,UAAU;IAIlC;;;OAGG;IACI,MAAM,IAAI,GAAG;IAIpB;;;OAGG;IACI,QAAQ,IAAI,KAAK;IAKxB;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAI1C;;;;OAIG;IACI,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAI5C;;;;OAIG;IACI,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAIxC;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAI1C;;;;OAIG;IACI,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAI5C;;;;OAIG;IACI,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAIlD;;;;OAIG;IACI,qBAAqB,CAAC,OAAO,CAAC,EAAE,4BAA4B,GAAG,IAAI;IAI1E;;;;OAIG;IACI,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAGtD;;;;OAIG;IACI,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAGlD;;;;OAIG;IACI,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAMlD;;;;;OAKG;IACI,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI;IAIzE;;;;;;OAMG;IACI,QAAQ,CACb,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,KAAK,EACT,OAAO,GAAE,qBAA0B,GAClC,IAAI;IAIP;;;;;OAKG;IACI,YAAY,CACjB,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,GAAE,yBAA8B,GACtC,IAAI;IAIP;;;;;OAKG;IACI,WAAW,CAChB,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,GAAE,wBAA6B,GACrC,IAAI;IAIP;;;;OAIG;IACI,aAAa,CAAC,OAAO,GAAE,oBAAoB,CAAC,IAAI,CAAM,GAAG,IAAI;IAMpE;;;;;OAKG;IACI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,GAAE,aAAa,CAAC,IAAI,CAAM,GAAG,IAAI;IAIpE;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAGrE"}
package/lib/Mask.js CHANGED
@@ -3,6 +3,7 @@ import { drawLineOnMask, drawPoints, drawPolygonOnMask, drawPolylineOnMask, draw
3
3
  import { and, invert, or } from './filters/index.js';
4
4
  import { getBorderPoints } from './maskAnalysis/getBorderPoints.js';
5
5
  import { getConvexHull } from './maskAnalysis/getConvexHull.js';
6
+ import { getExternalContour } from "./maskAnalysis/getExternalContour.js";
6
7
  import { getFeret } from './maskAnalysis/getFeret.js';
7
8
  import { getMbr } from './maskAnalysis/getMbr.js';
8
9
  import { bottomHat, clearBorder, close, dilate, erode, floodFill, morphologicalGradient, open, solidFill, topHat, } from './morphology/index.js';
@@ -361,6 +362,15 @@ export class Mask {
361
362
  getBorderPoints(options) {
362
363
  return getBorderPoints(this, options);
363
364
  }
365
+ /**
366
+ * Returns external contour of the mask. Unlike border points, returned points
367
+ * follow the shape of the mask.
368
+ * @param options - Get external contour options.
369
+ * @returns Array of contour points.
370
+ */
371
+ getExternalContour(options) {
372
+ return getExternalContour(this, options);
373
+ }
364
374
  /**
365
375
  * Get the vertices of the convex Hull polygon of a mask.
366
376
  * @returns Array of the vertices of the convex Hull in clockwise order.
package/lib/Mask.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Mask.js","sourceRoot":"","sources":["../src/Mask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mask.js","sourceRoot":"","sources":["../src/Mask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Mask } from '../Mask.ts';
2
+ import type { Point } from '../utils/geometry/points.ts';
3
+ /**
4
+ * Return an array with the coordinates of the pixels that are on the border of the mask using Moore's tracing algorithm.
5
+ * The reference is the top-left corner of the ROI.
6
+ * @param mask - Mask to process.
7
+ * @returns The array of border pixels.
8
+ */
9
+ export declare function getContourMoore(mask: Mask): Point[];
10
+ //# sourceMappingURL=getContourMoore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContourMoore.d.ts","sourceRoot":"","sources":["../../src/maskAnalysis/getContourMoore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAoCzD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAsDnD"}
@@ -0,0 +1,107 @@
1
+ import assert from 'node:assert';
2
+ import { getBitSafe, getCoordsFromIndex, } from "./utils/getExternalContourUtils.js";
3
+ /**
4
+ * Possible directions.
5
+ */
6
+ const directions = [
7
+ { dc: -1, dr: 0 }, // left
8
+ { dc: -1, dr: -1 }, // up-left
9
+ { dc: 0, dr: -1 }, // up
10
+ { dc: 1, dr: -1 }, // up-right
11
+ { dc: 1, dr: 0 }, // right
12
+ { dc: 1, dr: 1 }, // down-right
13
+ { dc: 0, dr: 1 }, // down
14
+ { dc: -1, dr: 1 }, // down-left
15
+ ];
16
+ // Lookup table for directions' index.
17
+ const directionIndexLookup = new Int8Array(9).fill(-1);
18
+ for (let i = 0; i < directions.length; i++) {
19
+ const { dc, dr } = directions[i];
20
+ directionIndexLookup[(dr + 1) * 3 + (dc + 1)] = i;
21
+ }
22
+ /**
23
+ * Return an array with the coordinates of the pixels that are on the border of the mask using Moore's tracing algorithm.
24
+ * The reference is the top-left corner of the ROI.
25
+ * @param mask - Mask to process.
26
+ * @returns The array of border pixels.
27
+ */
28
+ export function getContourMoore(mask) {
29
+ let index = 0;
30
+ const contour = [];
31
+ const visited = new Uint8Array(mask.width * mask.height);
32
+ while (mask.getBitByIndex(index) !== 1 && index !== mask.size) {
33
+ index++;
34
+ }
35
+ if (index === mask.size)
36
+ return contour;
37
+ const [row, col] = getCoordsFromIndex(index, mask.width);
38
+ const startingPoint = { column: col, row };
39
+ let currentPoint = startingPoint;
40
+ visited[index] = 1;
41
+ contour.push(currentPoint);
42
+ const firstNext = findNextPoint(mask, currentPoint, { column: col - 1, row });
43
+ if (!firstNext) {
44
+ return contour;
45
+ }
46
+ let startingBacktrackPoint = firstNext.prevPoint;
47
+ let backtrackPoint = firstNext.prevPoint;
48
+ currentPoint = firstNext.currPoint;
49
+ while (true) {
50
+ index = currentPoint.row * mask.width + currentPoint.column;
51
+ if (!visited[index]) {
52
+ visited[index] = 1;
53
+ contour.push(currentPoint);
54
+ }
55
+ const next = findNextPoint(mask, currentPoint, backtrackPoint);
56
+ assert.ok(next, 'Next border point is undefined.');
57
+ backtrackPoint = next.prevPoint;
58
+ currentPoint = next.currPoint;
59
+ if (currentPoint.column === startingPoint.column &&
60
+ currentPoint.row === startingPoint.row) {
61
+ if (backtrackPoint.column === startingBacktrackPoint.column &&
62
+ backtrackPoint.row === startingBacktrackPoint.row) {
63
+ break;
64
+ }
65
+ else {
66
+ startingBacktrackPoint = backtrackPoint;
67
+ }
68
+ }
69
+ }
70
+ return contour;
71
+ }
72
+ /**
73
+ * Finds next point to trace.
74
+ * @param mask - Mask in check.
75
+ * @param current - Current border point.
76
+ * @param previous - Last non-border point to start search from.
77
+ * @returns Object with new border point and last non-border point.
78
+ */
79
+ function findNextPoint(mask, current, previous) {
80
+ let prevPoint = previous;
81
+ // Vector from current back to previous
82
+ const backDc = previous.column - current.column;
83
+ const backDr = previous.row - current.row;
84
+ const startIndex = directionIndexLookup[(backDr + 1) * 3 + (backDc + 1)];
85
+ // Scan clockwise starting from that index.
86
+ for (let i = 0; i < directions.length; i++) {
87
+ const { dc, dr } = directions.at((startIndex + i) % directions.length);
88
+ const newCol = current.column + dc;
89
+ const newRow = current.row + dr;
90
+ if (getBitSafe(mask, newCol, newRow) === 1) {
91
+ // Stores found border point and last non-border point that
92
+ // was found. Will be used as a starting point in the next
93
+ // iteration.
94
+ return {
95
+ prevPoint,
96
+ currPoint: { column: newCol, row: newRow },
97
+ };
98
+ }
99
+ else {
100
+ prevPoint = { column: newCol, row: newRow };
101
+ }
102
+ }
103
+ // Is triggered only if the point has no neighbours. So it is undefined
104
+ // only if mask is made of one pixel.
105
+ return undefined;
106
+ }
107
+ //# sourceMappingURL=getContourMoore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContourMoore.js","sourceRoot":"","sources":["../../src/maskAnalysis/getContourMoore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Mask } from '../Mask.ts';
2
+ import type { Point } from '../utils/geometry/points.ts';
3
+ /**
4
+ * Return an array with the coordinates of the pixels that are on the
5
+ * external border of the mask using Theo Pavlidis's tracing algorithm.
6
+ * The reference is the top-left corner of the ROI.
7
+ * @param mask - Mask to process.
8
+ * @returns The array of external border pixels.
9
+ */
10
+ export declare function getContourPavlidis(mask: Mask): Point[];
11
+ //# sourceMappingURL=getContourPavlidis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContourPavlidis.d.ts","sourceRoot":"","sources":["../../src/maskAnalysis/getContourPavlidis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAoBzD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAStD"}
@@ -0,0 +1,90 @@
1
+ import { getBitSafe, getCoordsFromIndex, } from "./utils/getExternalContourUtils.js";
2
+ const DR = [-1, 0, 1, 0];
3
+ const DC = [0, 1, 0, -1];
4
+ function turnLeft(d) {
5
+ return ((d + 3) % 4);
6
+ }
7
+ function turnRight(d) {
8
+ return ((d + 1) % 4);
9
+ }
10
+ /**
11
+ * Return an array with the coordinates of the pixels that are on the
12
+ * external border of the mask using Theo Pavlidis's tracing algorithm.
13
+ * The reference is the top-left corner of the ROI.
14
+ * @param mask - Mask to process.
15
+ * @returns The array of external border pixels.
16
+ */
17
+ export function getContourPavlidis(mask) {
18
+ let index = 0;
19
+ while (index < mask.size && mask.getBitByIndex(index) !== 1) {
20
+ index++;
21
+ }
22
+ if (index === mask.size)
23
+ return [];
24
+ const [row, col] = getCoordsFromIndex(index, mask.width);
25
+ return traceFrom(mask, col, row);
26
+ }
27
+ /**
28
+ * Traces contour using Pavlidis algorithm.
29
+ * @param mask - Mask in check.
30
+ * @param startCol - Starting column.
31
+ * @param startRow - Starting row.
32
+ * @returns Array of contour points.
33
+ */
34
+ function traceFrom(mask, startCol, startRow) {
35
+ let row = startRow;
36
+ let column = startCol;
37
+ let dir = 2;
38
+ let inPlaceTurns = 0;
39
+ const seen = new Uint8Array(mask.width * mask.height);
40
+ const contour = [];
41
+ let visits = 0;
42
+ while (true) {
43
+ const idx = row * mask.width + column;
44
+ if (!seen[idx]) {
45
+ seen[idx] = 1;
46
+ contour.push({ row, column });
47
+ }
48
+ else if (row === startRow && column === startCol) {
49
+ if (visits === 2) {
50
+ break;
51
+ }
52
+ else {
53
+ visits++;
54
+ }
55
+ }
56
+ const left = turnLeft(dir);
57
+ const right = turnRight(dir);
58
+ const c1r = row + DR[left];
59
+ const c1c = column + DC[left];
60
+ const c2r = row + DR[dir];
61
+ const c2c = column + DC[dir];
62
+ const c3r = row + DR[right];
63
+ const c3c = column + DC[right];
64
+ if (getBitSafe(mask, c1c, c1r) === 1) {
65
+ dir = left;
66
+ row = c1r;
67
+ column = c1c;
68
+ inPlaceTurns = 0;
69
+ }
70
+ else if (getBitSafe(mask, c2c, c2r) === 1) {
71
+ row = c2r;
72
+ column = c2c;
73
+ inPlaceTurns = 0;
74
+ }
75
+ else if (getBitSafe(mask, c3c, c3r) === 1) {
76
+ dir = right;
77
+ row = c3r;
78
+ column = c3c;
79
+ inPlaceTurns = 0;
80
+ }
81
+ else {
82
+ dir = right;
83
+ inPlaceTurns++;
84
+ if (inPlaceTurns >= 4)
85
+ break;
86
+ }
87
+ }
88
+ return contour;
89
+ }
90
+ //# sourceMappingURL=getContourPavlidis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContourPavlidis.js","sourceRoot":"","sources":["../../src/maskAnalysis/getContourPavlidis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Mask } from '../Mask.ts';
2
+ import type { GetBorderPointsOptions } from './maskAnalysis.types.ts';
3
+ export type GetExternalContourOptions = Omit<GetBorderPointsOptions, 'innerBorers'>;
4
+ /**
5
+ * Finds external contour of the mask.
6
+ * @param mask - Mask to find contours from.
7
+ * @param options - GetExternalContourOptions.
8
+ * @returns Array of contour points.
9
+ */
10
+ export declare function getExternalContour(mask: Mask, options?: GetExternalContourOptions): import("../index_full.ts").Point[];
11
+ //# sourceMappingURL=getExternalContour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExternalContour.d.ts","sourceRoot":"","sources":["../../src/maskAnalysis/getExternalContour.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,sBAAsB,EACtB,aAAa,CACd,CAAC;AACF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,yBAA8B,sCAQxC"}
@@ -0,0 +1,18 @@
1
+ import { getContourMoore } from "./getContourMoore.js";
2
+ import { getContourPavlidis } from "./getContourPavlidis.js";
3
+ /**
4
+ * Finds external contour of the mask.
5
+ * @param mask - Mask to find contours from.
6
+ * @param options - GetExternalContourOptions.
7
+ * @returns Array of contour points.
8
+ */
9
+ export function getExternalContour(mask, options = {}) {
10
+ const { allowCorners = false } = options;
11
+ if (allowCorners) {
12
+ return getContourPavlidis(mask);
13
+ }
14
+ else {
15
+ return getContourMoore(mask);
16
+ }
17
+ }
18
+ //# sourceMappingURL=getExternalContour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExternalContour.js","sourceRoot":"","sources":["../../src/maskAnalysis/getExternalContour.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAU,EACV,UAAqC,EAAE;IAEvC,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACzC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -67,12 +67,18 @@ export interface Mbr {
67
67
  }
68
68
  export interface GetBorderPointsOptions {
69
69
  /**
70
- * Should the inner borders be returned too?
70
+ * Whether to include borders around holes inside the mask.
71
+ * When `false`, the mask is solid-filled before processing, so only the outer contour is returned.
72
+ * When `true`, pixels bordering interior holes are returned as well.
71
73
  * @default `false`
72
74
  */
73
75
  innerBorders?: boolean;
74
76
  /**
75
- * Consider pixels connected by corners?
77
+ * Whether to use 8-connectivity instead of 4-connectivity when detecting border pixels.
78
+ * When `false`, a pixel is considered a border only if at least one of its 4 orthogonal
79
+ * neighbors (up, down, left, right) is unset.
80
+ * When `true`, diagonal neighbors are also considered, so a pixel touching an unset pixel
81
+ * only by a corner is also returned as a border point.
76
82
  * @default `false`
77
83
  */
78
84
  allowCorners?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"maskAnalysis.types.d.ts","sourceRoot":"","sources":["../../src/maskAnalysis/maskAnalysis.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CACjD;AACD,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,WAAW,EAAE,aAAa,CAAC;IAC3B;;OAEG;IACH,WAAW,EAAE,aAAa,CAAC;IAC3B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"maskAnalysis.types.d.ts","sourceRoot":"","sources":["../../src/maskAnalysis/maskAnalysis.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CACjD;AACD,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,WAAW,EAAE,aAAa,CAAC;IAC3B;;OAEG;IACH,WAAW,EAAE,aAAa,CAAC;IAC3B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"getExtendedBorderPoints.d.ts","sourceRoot":"","sources":["../../../src/maskAnalysis/utils/getExtendedBorderPoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAE5D;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAkB3D"}
1
+ {"version":3,"file":"getExtendedBorderPoints.d.ts","sourceRoot":"","sources":["../../../src/maskAnalysis/utils/getExtendedBorderPoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAG5D;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAe3D"}
@@ -1,3 +1,4 @@
1
+ import { getExternalContour } from "../getExternalContour.js";
1
2
  /**
2
3
  * Get the pixels that surround an ROI. The pixels include the top and left borders,
3
4
  * but extend the right and bottom one by one pixel.
@@ -7,10 +8,7 @@
7
8
  * @returns - The array of points.
8
9
  */
9
10
  export function getExtendedBorderPoints(mask) {
10
- const borderPoints = mask.getBorderPoints({
11
- allowCorners: true,
12
- innerBorders: false,
13
- });
11
+ const borderPoints = getExternalContour(mask);
14
12
  const result = [];
15
13
  for (const point of borderPoints) {
16
14
  result.push(point, { column: point.column + 1, row: point.row }, { column: point.column + 1, row: point.row + 1 }, { column: point.column, row: point.row + 1 });
@@ -1 +1 @@
1
- {"version":3,"file":"getExtendedBorderPoints.js","sourceRoot":"","sources":["../../../src/maskAnalysis/utils/getExtendedBorderPoints.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAU;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;QACxC,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CACT,KAAK,EACL,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAC5C,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,EAChD,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"getExtendedBorderPoints.js","sourceRoot":"","sources":["../../../src/maskAnalysis/utils/getExtendedBorderPoints.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAU;IAChD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CACT,KAAK,EACL,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAC5C,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,EAChD,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Mask } from '../../Mask.ts';
2
+ /**
3
+ * Gets point's row and column from their index and mask width.
4
+ * @param index - point's index.
5
+ * @param maskWidth - mask width.
6
+ * @returns array of point's row and column.
7
+ */
8
+ export declare function getCoordsFromIndex(index: number, maskWidth: number): number[];
9
+ /**
10
+ * Safely get the bit value at the given column and row in the mask, returning 0 if out of bounds.
11
+ * @param mask - Mask to get the bit from.
12
+ * @param col - Column index.
13
+ * @param row - Row index.
14
+ * @returns the bit value.
15
+ */
16
+ export declare function getBitSafe(mask: Mask, col: number, row: number): number;
17
+ //# sourceMappingURL=getExternalContourUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExternalContourUtils.d.ts","sourceRoot":"","sources":["../../../src/maskAnalysis/utils/getExternalContourUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAElE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvE"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Gets point's row and column from their index and mask width.
3
+ * @param index - point's index.
4
+ * @param maskWidth - mask width.
5
+ * @returns array of point's row and column.
6
+ */
7
+ export function getCoordsFromIndex(index, maskWidth) {
8
+ return [Math.floor(index / maskWidth), index % maskWidth];
9
+ }
10
+ /**
11
+ * Safely get the bit value at the given column and row in the mask, returning 0 if out of bounds.
12
+ * @param mask - Mask to get the bit from.
13
+ * @param col - Column index.
14
+ * @param row - Row index.
15
+ * @returns the bit value.
16
+ */
17
+ export function getBitSafe(mask, col, row) {
18
+ if (!isInBounds(mask, col, row))
19
+ return 0;
20
+ return mask.getBit(col, row);
21
+ }
22
+ /**
23
+ * Checks if the given column and row are within the bounds of the mask.
24
+ * @param mask - Mask to check against.
25
+ * @param col - Column index.
26
+ * @param row - Row index.
27
+ * @returns whether the given column and row are within the bounds of the mask.
28
+ */
29
+ function isInBounds(mask, col, row) {
30
+ return col >= 0 && col < mask.width && row >= 0 && row < mask.height;
31
+ }
32
+ //# sourceMappingURL=getExternalContourUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExternalContourUtils.js","sourceRoot":"","sources":["../../../src/maskAnalysis/utils/getExternalContourUtils.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,SAAiB;IACjE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW;IAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW;IACtD,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AACvE,CAAC"}
package/lib/roi/Roi.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { Mask } from '../Mask.js';
2
+ import type { GetExternalContourOptions } from '../maskAnalysis/getExternalContour.ts';
2
3
  import type { Feret, GetBorderPointsOptions, Mbr } from '../maskAnalysis/index.js';
3
4
  import type { Point } from '../utils/geometry/points.js';
4
5
  import type { RoiMap } from './RoiMapManager.js';
@@ -62,6 +63,12 @@ export declare class Roi {
62
63
  * @returns The array of border pixels.
63
64
  */
64
65
  getBorderPoints(options?: GetBorderPointsOptions): Point[];
66
+ /**
67
+ * Finds external contour of the roi from its mask.
68
+ * @param options - GetExternalContourOptions.
69
+ * @returns Array of contour points.
70
+ */
71
+ getExternalContour(options?: GetExternalContourOptions): Point[];
65
72
  /**
66
73
  * Returns an array of ROIs IDs that are included in the current ROI.
67
74
  * This will be useful to know if there are some holes in the ROI.
@@ -1 +1 @@
1
- {"version":3,"file":"Roi.d.ts","sourceRoot":"","sources":["../../src/roi/Roi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,KAAK,EACV,KAAK,EACL,sBAAsB,EACtB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAuBtD,qBAAa,GAAG;;IACd;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B;;OAEG;IACH,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,SAAgB,MAAM,EAAE,KAAK,CAAC;IAC9B;;OAEG;IACH,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B;;OAEG;IACH,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAO9B,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,EACb,OAAO,EAAE,MAAM;IAUjB;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAI9C;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;;OAIG;IACI,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAI9C;;;OAGG;IACH,IAAI,GAAG,WAEN;IAED;;;;;OAKG;IACI,eAAe,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,KAAK,EAAE;IAIjE;;;;OAIG;IACH,IAAI,WAAW,aAyCd;IAED;;;OAGG;IACH,IAAI,eAAe,IAAI,MAAM,EAAE,CAsB9B;IAED;;;OAGG;IACH,IAAI,aAAa;aA9LK,MAAM;aAAO,MAAM;eAAS,MAAM;cAAQ,MAAM;MA2PrE;IAED;;;;;;OAMG;IAEH,IAAI,SAAS,WAUZ;IACD;;;OAGG;IACH,IAAI,cAAc,YAKjB;IACD;;;OAGG;IACH,IAAI,cAAc,YAKjB;IAED,IAAI,MAAM,aAuDT;IAED;;;;OAIG;IACH,IAAI,IAAI,WAEP;IACD;;;OAGG;IACH,IAAI,OAAO,IAAI,OAAO,CAIrB;IAED;;;;OAIG;IACH,IAAI,SAAS;gBA/WQ,MAAM;iBAAW,MAAM;MAmY3C;IAED;;;OAGG;IACH,IAAI,OAAO,aAgEV;IACD;;;OAGG;IACH,IAAI,SAAS,WAEZ;IACD;;;;OAIG;IACH,IAAI,UAAU,WAEb;IACD;;;OAGG;IACH,IAAI,aAAa,WAEhB;IAED;;;;OAIG;IACH,IAAI,QAAQ,WAEX;IAGD;;;;OAIG;IACH,IAAI,UAAU;gBA5eQ,KAAK,EAAE;iBAAW,MAAM;mBAAa,MAAM;MAgfhE;IACD;;;;OAIG;IACH,IAAI,GAAG,QAIN;IAMD,IAAI,SAAS,WAEZ;IACD;;;;;OAKG;IAEH,IAAI,KAAK,IAAI,KAAK,CAIjB;IACD;;;OAGG;IACH,MAAM;;;;;;;;;;;;;;;oBAnhBgB,KAAK,EAAE;qBAAW,MAAM;uBAAa,MAAM;;;;;;IAwiBjE;;;OAGG;IACH,IAAI,QAAQ,UAqBX;IA2BD;;;;OAIG;IACF,MAAM,CAAC,QAAQ,EAAE,OAAO;;;;CAoB1B"}
1
+ {"version":3,"file":"Roi.d.ts","sourceRoot":"","sources":["../../src/roi/Roi.ts"],"names":[],"mappings":"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"}