UNPKG

id-scanner-lib

Version:

Browser-based ID card, QR code, and face recognition scanner with liveness detection

177 lines (176 loc) 5.38 kB
/** * @file 图像处理工具类 * @description 提供图像预处理功能,用于提高OCR识别率 * @module ImageProcessor * @version 1.3.2 */ /** * 图像处理器配置选项 */ export interface ImageProcessorOptions { brightness?: number; contrast?: number; grayscale?: boolean; invert?: boolean; blur?: number; sharpen?: boolean; } /** * 图像压缩选项 */ export interface ImageCompressionOptions { maxSizeMB?: number; maxWidthOrHeight?: number; useWebWorker?: boolean; maxIteration?: number; quality?: number; fileType?: string; } /** * 图像处理工具类 * * 提供各种图像处理功能,用于优化识别效果 */ export declare class ImageProcessor { /** * 将ImageData转换为Canvas元素 * * @param {ImageData} imageData - 要转换的图像数据 * @returns {HTMLCanvasElement} 包含图像的Canvas元素 */ static imageDataToCanvas(imageData: ImageData): HTMLCanvasElement; /** * 将Canvas转换为ImageData * * @param {HTMLCanvasElement} canvas - 要转换的Canvas元素 * @returns {ImageData|null} Canvas的图像数据,如果获取失败则返回null */ static canvasToImageData(canvas: HTMLCanvasElement): ImageData | null; /** * 调整图像亮度和对比度 * * @param imageData 原始图像数据 * @param brightness 亮度调整值 (-100到100) * @param contrast 对比度调整值 (-100到100) * @returns 处理后的图像数据 */ static adjustBrightnessContrast(imageData: ImageData, brightness?: number, contrast?: number): ImageData; /** * 将图像转换为灰度图 * * @param imageData 原始图像数据 * @returns 灰度图像数据 */ static toGrayscale(imageData: ImageData): ImageData; /** * 锐化图像 * * @param imageData 原始图像数据 * @param amount 锐化程度,默认为2 * @returns 锐化后的图像数据 */ static sharpen(imageData: ImageData, amount?: number): ImageData; /** * 对图像应用阈值操作,增强对比度 * * @param imageData 原始图像数据 * @param threshold 阈值 (0-255) * @returns 处理后的图像数据 */ static threshold(imageData: ImageData, threshold?: number): ImageData; /** * 将图像转换为黑白图像(二值化) * * @param imageData 原始图像数据 * @returns 二值化后的图像数据 */ static toBinaryImage(imageData: ImageData): ImageData; /** * 使用OTSU算法计算最佳阈值 * * @param imageData 灰度图像数据 * @returns 最佳阈值 */ private static getOtsuThreshold; /** * 批量应用图像处理 * * @param imageData 原始图像数据 * @param options 处理选项 * @returns 处理后的图像数据 */ static batchProcess(imageData: ImageData, options: ImageProcessorOptions): ImageData; /** * 压缩图片文件 * * @param file 图片文件 * @param options 压缩选项 * @returns Promise<File> 压缩后的文件 */ static compressImage(file: File, options?: ImageCompressionOptions): Promise<File>; /** * 从图片文件创建ImageData * * @param file 图片文件 * @returns Promise<ImageData> */ static createImageDataFromFile(file: File): Promise<ImageData>; /** * 将ImageData转换为File对象 * * @param imageData ImageData对象 * @param fileName 输出文件名 * @param fileType 输出文件类型 * @param quality 图片质量 (0-1) * @returns Promise<File> */ static imageDataToFile(imageData: ImageData, fileName?: string, fileType?: string, quality?: number): Promise<File>; /** * 将图像调整到指定大小 * @param image 输入图像 * @param maxWidth 最大宽度 * @param maxHeight 最大高度 * @param keepAspectRatio 是否保持宽高比 * @returns 调整后的图像 */ static resizeImage(image: ImageData | HTMLImageElement | HTMLCanvasElement, maxWidth: number, maxHeight: number, keepAspectRatio?: boolean): ImageData; /** * 边缘检测算法,用于识别图像中的边缘 * 基于Sobel算子实现 * * @param imageData 原始图像数据,应已转为灰度图 * @param threshold 边缘阈值,默认为30 * @returns 检测到边缘的图像数据 */ static detectEdges(imageData: ImageData, threshold?: number): ImageData; /** * 卡尼-德里奇边缘检测 * 相比Sobel更精确的边缘检测算法 * * @param imageData 灰度图像数据 * @param lowThreshold 低阈值 * @param highThreshold 高阈值 * @returns 边缘检测结果 */ static cannyEdgeDetection(imageData: ImageData, lowThreshold?: number, highThreshold?: number): ImageData; /** * 高斯模糊 */ private static gaussianBlur; /** * 生成高斯核 */ private static generateGaussianKernel; /** * 计算梯度强度和方向 */ private static computeGradients; /** * 非极大值抛弃 */ private static nonMaxSuppression; /** * 双阈值处理 */ private static hysteresisThresholding; }