zoukankan      html  css  js  c++  java
  • iOS实现图像指定区域模糊

      在大多图像处理中,我们会应用到高斯模糊处理图像,通常用它来减少图像噪声以及降低细节层次。在此文中介绍了高斯模糊的实现和可选区域的模糊【美图秀秀-背景虚化】

      高斯模糊的原理中,它是根据高斯曲线调节像素色值,它是有选择地模糊图像。说得直白一点,就是高斯模糊能够把某一点周围的像素色值按高斯曲线统计起来,采用数学上加权平均的计算方法得到这条曲线的色值,最后能够留下人物的轮廓,即曲线.是指当 Adobe Photoshop 将加权平均应用于像素时生成的钟形曲线。在PS中间,你应该知道所有的颜色不过都是数字,各种模糊不过都是算法。把要模糊的像素色值统计,用数学上加权平均的计算方法(高斯函数)得到色值,对范围、半径等进行模糊,大致就是高斯模糊。
      高斯模糊算法公式[使用正态分布]
              二维图形表示形式
     
    OpenGL ES 算法实现
     1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))

    附:GLSL内置指数函数说明图

     在GPUImage中我们可以使用GPUImageGaussianBlurFilter来实现高斯模糊。(GPUImageGaussianBlurFilter仅可以全图模糊,而不能部分模糊)

    texelSpacingMultiplier是模糊的强度,数值越大,模糊效果越明显

    blurRadiusInPixels是像素范围,用于计算平均值。

    高斯模糊应用

     1 + (UIImage *)applyGaussianBlur:(UIImage *)image
     2 {
     3     GPUImageGaussianBlurFilter *filter = [[GPUImageGaussianBlurFilter alloc] init];
     4 //    filter.texelSpacingMultiplier = 5.0;
     5     filter.blurRadiusInPixels = 1.0;
     6     [filter forceProcessingAtSize:image.size];
     7     GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];
     8     [pic addTarget:filter];
     9     [pic processImage];
    10     [filter useNextFrameForImageCapture];
    11     return [filter imageFromCurrentFramebuffer];
    12 }

       

    GPUImageGaussianSelectiveBlurFilter可以部分模糊,也就是选区外模糊 

    excludeCircleRadius用来调整模糊区域

    + (UIImage *)applyGaussianSelectiveBlur:(UIImage *)image

    {

        GPUImageGaussianSelectiveBlurFilter *filter = [[GPUImageGaussianSelectiveBlurFilter alloc] init];

        //    filter.texelSpacingMultiplier = 5.0;

        filter.excludeCircleRadius = 120 / 320.0;

        [filter forceProcessingAtSize:image.size];

        GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];

        [pic addTarget:filter];

        [pic processImage];

        [filter useNextFrameForImageCapture];

        return [filter imageFromCurrentFramebuffer];

    }

     

     
     
  • 相关阅读:
    YUV图片旋转
    mac http&git代理配置
    iOS 如何保持线程一直在运转
    iOS 后台录音Tweak实现参考--stackoverflow
    NSTimer的精确度
    svn递归添加目录下面所有文件
    利用instruments工具查看其它app的性能
    iOS符号表手工还原
    Hbase的安装测试工作
    Hadoop集群中pig工具的安装过程记录
  • 原文地址:https://www.cnblogs.com/salam/p/5145699.html
Copyright © 2011-2022 走看看