高斯模糊 毛玻璃 可以调节模糊度

2024-03-04 02:08
文章标签 模糊 高斯 调节 毛玻璃

本文主要是介绍高斯模糊 毛玻璃 可以调节模糊度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、框架

Accelerate.framework。

2、头文件

#import <Accelerate/Accelerate.h>


// 高斯模糊

-(UIImage*)getBlurImage:(UIImage*)image

{

    return [selfgaussBlur:0.2andImage:image];

}


- (UIImage*)gaussBlur:(CGFloat)blurLevel andImage:(UIImage*)originImage

{

    blurLevel = MIN(1.0,MAX(0.0, blurLevel));

    //int boxSize = (int)(blurLevel * 0.1 * MIN(self.size.width, self.size.height));

    int boxSize = 20;//模糊度参数配置,可以根据需要修改

    boxSize = boxSize - (boxSize % 2) + 1;

    NSData *imageData = UIImageJPEGRepresentation(originImage, 1);

    UIImage *tmpImage = [UIImageimageWithData:imageData];

    CGImageRef img = tmpImage.CGImage;

    vImage_Buffer inBuffer, outBuffer;

    vImage_Error error;

    void *pixelBuffer;

    //create vImage_Buffer with data from CGImageRef

    CGDataProviderRef inProvider = CGImageGetDataProvider(img);

    CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);

    inBuffer.width = CGImageGetWidth(img);

    inBuffer.height = CGImageGetHeight(img);

    inBuffer.rowBytes = CGImageGetBytesPerRow(img);

    inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);

    //create vImage_Buffer for output

    pixelBuffer = malloc(CGImageGetBytesPerRow(img) *CGImageGetHeight(img));

    outBuffer.data = pixelBuffer;

    outBuffer.width = CGImageGetWidth(img);

    outBuffer.height = CGImageGetHeight(img);

    outBuffer.rowBytes = CGImageGetBytesPerRow(img);

    NSInteger windowR = boxSize/2;

    CGFloat sig2 = windowR / 3.0;

    if(windowR>0){ sig2 = -1/(2*sig2*sig2); }

    int16_t *kernel = (int16_t*)malloc(boxSize*sizeof(int16_t));

    int32_t  sum = 0;

    for(NSInteger i=0; i<boxSize; ++i){

        kernel[i] = 255*exp(sig2*(i-windowR)*(i-windowR));

        sum += kernel[i];

    }

    free(kernel);

    // convolution

    error = vImageConvolve_ARGB8888(&inBuffer, &outBuffer,NULL,0, 0, kernel, boxSize,1, sum, NULL,kvImageEdgeExtend);

    error = vImageConvolve_ARGB8888(&outBuffer, &inBuffer,NULL,0, 0, kernel,1, boxSize, sum, NULL,kvImageEdgeExtend);

    outBuffer = inBuffer;

    if (error) {

        //NSLog(@"error from convolution %ld", error);

    }

    CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();

    CGContextRef ctx = CGBitmapContextCreate(outBuffer.data,

                                             outBuffer.width,

                                             outBuffer.height,

                                             8,

                                             outBuffer.rowBytes,

                                             colorSpace,

                                             kCGBitmapAlphaInfoMask &kCGImageAlphaNoneSkipLast);

    CGImageRef imageRef =CGBitmapContextCreateImage(ctx);

    UIImage *returnImage = [UIImageimageWithCGImage:imageRef];

    //clean up

    CGContextRelease(ctx);

    CGColorSpaceRelease(colorSpace);

    free(pixelBuffer);

    CFRelease(inBitmapData);

    CGImageRelease(imageRef);

    return returnImage;

}


这篇关于高斯模糊 毛玻璃 可以调节模糊度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771687

相关文章

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

高斯平面直角坐标讲解,以及地理坐标转换高斯平面直角坐标

高斯平面直角坐标系(Gauss-Krüger 坐标系)是基于 高斯-克吕格投影 的一种常见的平面坐标系统,主要用于地理信息系统 (GIS)、测绘和工程等领域。该坐标系将地球表面的经纬度(地理坐标)通过一种投影方式转换为平面直角坐标,以便在二维平面中进行距离、面积和角度的计算。 一 投影原理 高斯平面直角坐标系使用的是 高斯-克吕格投影(Gauss-Krüger Projection),这是 横

Winfrom中解决图像、文字模糊的方法

1.添加清单 2.将清单中的下面内容取消注释

【硬刚ES】ES入门 (13)Java API 操作(4)DQL(1) 请求体查询/term 查询,查询条件为关键字/分页查询/数据排序/过滤字段/Bool 查询/范围查询/模糊查询/高亮查询/聚合查

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。 1 请求体查询 2 高亮查询 3 聚合查询 package com.atguigu.es.test;import org.apache.http.HttpHost;import org.apache.lucene.search.TotalHits;import org.elasticse

【硬刚ES】ES入门 (8) 语法(6)DQL(3)组合查询/范围查询/模糊查询/单字段排序

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。 9 组合查询 `bool`把各种其它查询通过`must`(必须 )、`must_not`(必须不)、`should`(应该)的方 式进行组合 在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search

Mybatis like 模糊查询,有数据,但是就是查询不出来

今天修改项目遇到的问题,mybatis模糊查询,有数据,就是查不出来。也不报错。 问题虽然最后搞定了,来总结下。 Mybatis配置如下:<select id="getAll" resultMap="OaEmplyeeInfoResultMap"parameterType="com.deppon.oa.module.oaEmplyeeInfo.domain.OaEmplyeeInfo"

MyBatis - 在Xml中实现模糊查询

一、文本替换模式(有SQL注入风险) <if test="title != null and title != ''">AND title like '%${title}%'</if> 二、使用 Bind 标签 <if test="title != null and title != ''"><bind name="titleLike" value="'%' + title + '%'"

在移动应用程序中集成模糊方法的基于物联网的天气监测系统的实现

这篇论文的标题是《IMPLEMENTATION OF WEATHER MONITORING SYSTEM BASED INTERNET OF THINGS USING INTEGRATED FUZZY METHOD IN MOBILE APPLICATIONS》,作者是 Muhammad Malik Amin,来自 Politeknik Negeri Jakarta 的 D-IV INSTRUME

高斯混合模型(GMM)的EM算法实现

在 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明进行了详细说明。本文主要针对如何用EM算法在混合高斯模型下进行聚类进行代码上的分析说明。 GMM模型: 每个 GMM 由 K 个 Gaussian 分布组成,每个 Gaussian 称为一个“C