ORC

iOS 自己实现 名片识别 三 图片处理

2018-08-24  本文已影响164人  呆木大人

1. iOS 自己实现 名片识别 一 功能分析,模块划分

2. iOS 自己实现 名片识别 二 相机模块制作

3. iOS 自己实现 名片识别 三 图片处理

4. iOS 自己实现 名片识别 四 图片转文字以及归类

主题: 图片处理

声明:下面这些图片仅供学习使用

0.png

1.剪切图片

根据矩形特征剪切图片

// @property (nonatomic , strong) CIImage *img;
//@property (nonatomic , strong) CIRectangleFeature *feature;

_img = [_img imageByCroppingToRect:_feature.bounds];
1.png

2.图形矫正

根据特征修正图片 , 这一步很重要 , 是否做这一步直接影响识别精度

NSDictionary *para = @{
                           @"inputTopLeft": [CIVector vectorWithCGPoint:_feature.topLeft],
                           @"inputTopRight": [CIVector vectorWithCGPoint:_feature.topRight],
                           @"inputBottomLeft": [CIVector vectorWithCGPoint:_feature.bottomLeft],
                           @"inputBottomRight": [CIVector vectorWithCGPoint:_feature.bottomRight]
                           };
    _img = [_img imageByApplyingFilter:@"CIPerspectiveCorrection" withInputParameters:para];
2.png

3. 灰度处理

主要用来做文字识别所以直接去掉色彩信息

    CIColor *filterInputcolor = [CIColor colorWithRed:0.75 green:0.75 blue:0.75];
    //只有在主动设置的时候才丢弃颜色信息
    //CIColorMonochrome  单色滤镜
    _img = [_img imageByApplyingFilter:@"CIColorMonochrome" withInputParameters:@{kCIInputColorKey : filterInputcolor}];
3.png

4.提升亮度

会损失一部分背景纹理 饱和度不能太高

    NSDictionary *para = @{
                           kCIInputSaturationKey : @(0.35),  //饱和度
                           kCIInputBrightnessKey : @(0.2),  //亮度
                           kCIInputContrastKey : @(1.1)     //对比度
                           };
    
    //CIColorControls 调整饱和度、亮度和对比度值
    _img = [_img imageByApplyingFilter:@"CIColorControls" withInputParameters:para];
4.png

5. 曝光调节

_img = [_img imageByApplyingFilter:@"CIExposureAdjust" withInputParameters:@{kCIInputEVKey : @(0.65)}];
5.png

6.高斯模糊

查资料的时候都推荐这个,不过看不懂有什么用

_img = [_img imageByApplyingGaussianBlurWithSigma:0.4];
6.png

7.增强文字轮廓(描边)

     NSDictionary* para = @{
             kCIInputRadiusKey : @(2.5),                //获取或设置要检测的最小要素的半径。
             kCIInputIntensityKey : @(0.5),             //获取或设置增强对比度的强度
             };
    
    _img = [_img imageByApplyingFilter:@"CIUnsharpMask" withInputParameters:para];
7.png

8.调低亮度,增加对比度

使图片字体更黑

    NSDictionary *para = @{
                           kCIInputSaturationKey : @(0.35),  //饱和度
                           kCIInputBrightnessKey : @(-0.7),  //亮度
                           kCIInputContrastKey : @(1.9)     //对比度
                           };
    
    //CIColorControls 调整饱和度、亮度和对比度值
    _img = [_img imageByApplyingFilter:@"CIColorControls" withInputParameters:para];
9.png

9.增加曝光

使上一步调黑的背景变白

_img = [_img imageByApplyingFilter:@"CIExposureAdjust" withInputParameters:@{kCIInputEVKey : @(0.65)}];
10.png

至此图片的处理已经完成,剩下的就交给识别模块了

文字位置检测 , 裁剪 (文字位置检测与裁剪实现后,与不裁剪对比,明显不裁剪效果更好,所以把名片作为一个整体来识别了)

上一篇下一篇

猜你喜欢

热点阅读