/** * A region extracted at a specific resolution */ export type AttentionRegion = { /** * - Center X coordinate in original image */ x: number; /** * - Center Y coordinate in original image */ y: number; /** * - Radius in original image pixels */ radius: number; /** * - Resolution multiplier (1.0 = full) */ resolution: number; /** * - Extracted pixel data */ data: Uint8Array; /** * - Width of extracted region */ width: number; /** * - Height of extracted region */ height: number; /** * - Number of pixels in region */ pixelCount: number; /** * - 'fovea' | 'parafovea' | 'periphery' */ type: string; }; /** * Foveal Attention System * * Mimics the human eye's fovea-parafovea-periphery structure: * - Fovea (center 5°): Maximum resolution, ~50% of visual processing power * - Parafovea (5-10°): Medium resolution, pattern recognition * - Periphery (>10°): Low resolution, motion detection * * This allows processing ~75% fewer pixels while maintaining * high-quality tracking in the area of interest. */ /** * A region extracted at a specific resolution * @typedef {Object} AttentionRegion * @property {number} x - Center X coordinate in original image * @property {number} y - Center Y coordinate in original image * @property {number} radius - Radius in original image pixels * @property {number} resolution - Resolution multiplier (1.0 = full) * @property {Uint8Array} data - Extracted pixel data * @property {number} width - Width of extracted region * @property {number} height - Height of extracted region * @property {number} pixelCount - Number of pixels in region * @property {string} type - 'fovea' | 'parafovea' | 'periphery' */ export class FovealAttention { /** * @param {number} width - Input image width * @param {number} height - Input image height * @param {Object} config - Configuration */ constructor(width: number, height: number, config: Object); width: number; height: number; config: Object; minDim: number; foveaRadius: number; parafoveaRadius: number; /** * Initialize pre-allocated extraction buffers * @private */ private _initBuffers; foveaBuffer: Uint8Array | undefined; parafoveaBuffer: Uint8Array | undefined; peripheryBuffer: Uint8Array | undefined; peripheryDims: { width: number; height: number; } | undefined; /** * Build a circular mask for foveal extraction * @private */ private _buildCircularMask; circularMask: Uint8Array | undefined; /** * Extract attention region at specified center * * @param {Uint8Array} inputData - Grayscale input image * @param {number} centerX - X coordinate of attention center * @param {number} centerY - Y coordinate of attention center * @param {number} priority - Priority level (0=highest) * @returns {AttentionRegion} Extracted region */ extract(inputData: Uint8Array, centerX: number, centerY: number, priority?: number): AttentionRegion; /** * Extract foveal region at full resolution * @private */ private _extractFovea; /** * Extract parafoveal region at half resolution * @private */ private _extractParafovea; /** * Extract periphery at quarter resolution (motion detection only) * @private */ private _extractPeriphery; /** * Get combined multi-resolution representation * Uses fovea at center, parafovea around it, periphery for the rest * * @param {Uint8Array} inputData - Input image * @param {number} cx - Fovea center X * @param {number} cy - Fovea center Y * @returns {Object} Multi-resolution representation */ extractMultiResolution(inputData: Uint8Array, cx: number, cy: number): Object; /** * Compute total pixels in multi-resolution representation * @private */ private _computeTotalPixels; /** * Update configuration * @param {Object} config - New configuration */ configure(config: Object): void; }