react-native-mask-segment-c.../dist/utils/maskSegmentation.d.ts
a1518 843544b9e8 fix: align default pipeline config with docs and split large modules
- Fix DEFAULT_PIPELINE_CONFIG from PIPELINE_HIGH (1440) to PIPELINE_MEDIUM
  (720) to match documented performance estimates and test expectations
- Extract geometry/hit-detection utilities from MaskSegmentCanvas.tsx into
  canvasGeometry.ts (~380 lines)
- Extract outline path functions from maskSegmentation.ts into
  maskOutlinePaths.ts (~470 lines)
- Net reduction of ~1,700 lines across the two core files

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 02:13:38 -07:00

123 lines
4.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { type WrappedMat } from './opencvAdapter';
import { type SkPath } from '@shopify/react-native-skia';
export type RegionPickMap = {
buffer: Uint8Array;
cols: number;
rows: number;
};
export type SegmentMaskResult = {
regions: SegmentRegion[];
pickMap: RegionPickMap;
labels: Uint8Array;
baseboardBinary: Uint8Array;
segCols: number;
segRows: number;
/** splitWalls 时:墙像素 → 子区索引 0..N-1非墙为 WALL_SUB_LABEL_NONE */
wallSubLabels?: Uint8Array;
};
export type SegmentRegion = {
id: number;
/** 语义分区名door / cabinet / baseboard …) */
name: string;
/** 参考色 hex */
hex: string;
/** 参考色BGR */
color: {
b: number;
g: number;
r: number;
};
polygons: {
x: number;
y: number;
}[][];
/** 上色/高亮蒙版:严格像素条带,不填充黑色空洞 */
maskPolygons?: {
x: number;
y: number;
}[][];
hitPolygons?: {
x: number;
y: number;
}[][];
outlinePolygons?: {
x: number;
y: number;
}[][];
bbox: {
x: number;
y: number;
w: number;
h: number;
};
area: number;
/** 踢脚线等细条区域,点击检测需加宽容差 */
thinStrip?: boolean;
};
export declare function buildRegionOutlinePolygons(reg: SegmentRegion): NormPoint[][];
import { buildAllRegionOutlinePaths, buildRegionOutlinePathForRegion } from './maskOutlinePaths';
export { buildAllRegionOutlinePaths, buildRegionOutlinePathForRegion };
/** 从二值图逐行条带构建蒙版(供 Skia PathBuilder 使用) */
export declare function appendMaskBinaryToPathBuilder(binary: Uint8Array, cols: number, rows: number, rect: {
x: number;
y: number;
w: number;
h: number;
}, builder: {
moveTo: (x: number, y: number) => unknown;
lineTo: (x: number, y: number) => unknown;
close: () => unknown;
}, minRunPx?: number): void;
/** 从语义标签逐行条带构建蒙版(避免维护多张二值图) */
export declare function appendLabelMaskToPathBuilder(labels: Uint8Array, semanticIndex: number, cols: number, rows: number, rect: {
x: number;
y: number;
w: number;
h: number;
}, builder: {
moveTo: (x: number, y: number) => unknown;
lineTo: (x: number, y: number) => unknown;
close: () => unknown;
}, minRunPx?: number): void;
export type RegionMaskData = {
labels: Uint8Array;
baseboardBinary: Uint8Array;
cols: number;
rows: number;
wallSubLabels?: Uint8Array;
};
/** 蒙版路径构建降采样(屏幕显示不需要分割分辨率,点击仍用全分辨率 pickMap */
export declare function downsampleMaskDataForPaths(maskData: RegionMaskData, maxLongSide: number): RegionMaskData;
/** 单次扫描构建所有分区 Skia 蒙版路径(单 label pass避免每像素 × 语义数循环) */
export declare function buildAllRegionMaskPaths(regions: SegmentRegion[], maskData: RegionMaskData, rect: {
x: number;
y: number;
w: number;
h: number;
}): Map<number, SkPath>;
type NormPoint = {
x: number;
y: number;
};
export declare function buildBaseboardBinaryFromMask(buffer: Uint8Array, cols: number, rows: number): Uint8Array;
/** 分割分辨率踢脚线二值图最近邻放大到点击查表分辨率(避免全图 junction 重算) */
export declare function upscaleBinaryMask(src: Uint8Array, srcCols: number, srcRows: number, dstCols: number, dstRows: number): Uint8Array;
export declare function isBaseboardMaskPixel(buffer: Uint8Array, cols: number, rows: number, x: number, y: number, baseboardBinary?: Uint8Array | null): boolean;
export { isStrictBaseboardPixel as isBaseboardPixel } from './maskSemanticPalette';
export declare function getMaskQuantKey(b: number, g: number, r: number): string;
/** @deprecated 请使用 isBaseboardMaskPixel */
export declare function isKickPlatePixel(b: number, g: number, r: number): boolean;
export declare function extractRegionsFromMaskBuffer(buffer: Uint8Array, cols: number, rows: number, _options: {
minArea: number;
approxEpsilon: number;
}): Promise<SegmentMaskResult>;
export declare function extractRegionsFromMaskBufferSync(buffer: Uint8Array, cols: number, rows: number, _options: {
minArea: number;
approxEpsilon: number;
}): SegmentMaskResult;
/** @deprecated 请使用 extractRegionsFromMaskBuffer */
export declare function extractRegionsFromMask(maskMat: WrappedMat, options: {
minArea: number;
approxEpsilon: number;
}): Promise<SegmentRegion[]>;
//# sourceMappingURL=maskSegmentation.d.ts.map