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];

}

 

时间: 2024-10-11 11:41:49

iOS实现图像指定区域模糊的相关文章

YUV420如何扣取指定区域的图像数据

YUV420数据的存储方式有两类:planar和packed.planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V.对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的. 本文记录一个对于planar的YUV420格式,大小为720P的RAW图像,读取指定区域的数据,并保存为一个新的YUV420格式RAW. 首先指定的新的宽高必须是4的整倍数,不然新图像会有底边会花,这是由YUV420这个数据存储格式决定的,如下图: int CutB

四种比较简单的图像显著性区域特征提取方法原理及实现-----> AC/HC/LC/FT。

laviewpbt  2014.8.4 编辑 Email:[email protected]   QQ:33184777 最近闲来蛋痛,看了一些显著性检测的文章,只是简单的看看,并没有深入的研究,以下将研究的一些收获和经验共享. 先从最简单的最容易实现的算法说起吧: 1. LC算法 参考论文:Visual Attention Detection in Video Sequences Using Spatiotemporal Cues. Yun Zhai and Mubarak Shah.  Pa

四种简单的图像显著性区域特征提取方法-----> AC/HC/LC/FT。

四种简单的图像显著性区域特征提取方法-----> AC/HC/LC/FT. 分类: 图像处理 2014-08-03 12:40 4088人阅读 评论(4) 收藏 举报 salient region detec显著性检测 laviewpbt  2014.8.3 编辑 Email:[email protected]   QQ:33184777 最近闲来蛋痛,看了一些显著性检测的文章,只是简单的看看,并没有深入的研究,以下将研究的一些收获和经验共享.      先从最简单的最容易实现的算法说起吧: 1

VB.NET屏幕指定区域截图代码,保存到Image中

VB.NET屏幕指定区域截图代码,保存到Image中 使用VB.NET实现屏幕上指定位置的图像进行截图功能,保存到Image中 Dim texthwnd As IntPtr texthwnd = FindWindowEx(0, 0, vbNullString, "等待输入验证码") Dim pl As SwtPj.WINDOWPLACEMENT GetWindowPlacement(texthwnd, pl) Dim image As Bitmap = New Bitmap(119,

ACM 图像有用区域

图像有用区域 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 “ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色.       图1                                                        图2 已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点).

img只显示图片一部分 或 css设置背景图片只显示图片指定区域

17:14 2016/3/22img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片左上角为0,0或0%,0%,右下角为高度和宽度,或100%,100%. clip:rect(300px 100px 300px 0px); 设置显示图片的某个区域,分别是上右下左的顺序设置 部分代码:<style type="text/css">img {position:abs

iOS实现图像的反色,怀旧,色彩直方图效果

反色是与原色叠加可以变为白色的颜色,即用白色(RGB:1.0,1.0,1.0)减去原色的颜色.比如说红色(RGB:1.0,0,0)的反色是青色(0,1.0,1.0).在OPENGL ES中为1. 通过导入GPUImage库的GPUImageColorInvertFilter来实现iOS的图像反色处理 1 ( 2 varying highp vec2 textureCoordinate; 3 4 uniform sampler2D inputImageTexture; 5 6 void main(

nyoj 92 图像有用区域 【bfs】

图像有用区域 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 "ACKing"同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色.       图1                                                        图2 已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0

ios中图像进行压缩方法汇总

ios中图像进行压缩方法汇总 在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需 要图片引用作为参数. 方法一: 代码如下: - (UIImage*)scaleFromImage:(UIImage*)image scaledToSize:(CGSize)