我正在使用核心图像将一些过滤器应用于CIImage。
图像中有闪光灯非常烦人。
我尝试过使用CIMedian Filter和CINoiseReduction过滤器。过滤器很少或没有用。
我甚至试图增加图像的对比度,但是,它会降低OCR图像的准确性。
更新:
目前我增加了图像的对比度,效果很好(只有1个字,亮度稍高,看起来白色不会被检测到):
// Add filter increase the exposure
CIImage *inputImage = [[CIImage alloc] initWithImage:_inputImage.image];
CIFilter *exposureAdjustmentFilter = [CIFilter filterWithName:@"CIExposureAdjust"];
[exposureAdjustmentFilter setDefaults];
[exposureAdjustmentFilter setValue:inputImage forKey:@"inputImage"];
[exposureAdjustmentFilter setValue:[NSNumber numberWithFloat:exposureNumber] forKey:@"inputEV"]; //set it to 5.0 will be able to remove the background blue color, and make the black color text standout
CIImage *outputImageAfterExposure = [exposureAdjustmentFilter valueForKey:@"outputImage"];
@holex,我试过使用边缘过滤器,但由于我不太了解inputIntensity参数,因此无法获得理想的结果:
// Use edge detection filter
CIImage *inputImageEdgeDetection = outputImageAfterExposure;
CIFilter *ciEdges = [CIFilter filterWithName:@"CIEdges"];
[ciEdges setDefaults];
[ciEdges setValue:inputImageEdgeDetection forKey:kCIInputImageKey];
[ciEdges setValue:@(5) forKey:@"inputIntensity"]; // what is this for?
CIImage *outputImageAfterEdgeDetection = [ciEdges valueForKey:kCIOutputImageKey];
对于inputIntensity,文档非常模糊: 一个NSNumber对象,其属性类型为CIAttributeTypeScalar,其显示名称为Intensity。 默认值:1.00
在CIEdge过滤器后添加图像: