id-scanner-lib
Version:
Browser-based ID card, QR code, and face recognition scanner with liveness detection
177 lines (176 loc) • 5.38 kB
TypeScript
/**
* @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;
}