高斯模糊

Unity Shader屏幕后处理高斯模糊

匆匆过客 提交于 2019-12-16 07:22:33
原理 利用卷积计算,使用的卷积核叫高斯核 使用一个N x N的高斯核对图像进行卷积滤波,就需要N x N x W x H次纹理采样,当N的大小不断增加时,采样次数会变得非常巨大,不过我们可以把这个二维高斯函数拆分成两个一维函数. 得到的结果是一样的。 实现 我们会先后调用两个Pass,第一个Pass使用竖直方向的一维高斯核进行滤波,第二个Pass使用水平方向的一维高斯核,得到最终的目标图像. 首先,创建一个脚本: public class GaussianBlur : PostEffectsBase 声明需要的Shader,并创建相应的材质: public Shader gaussianBlurShader ; private Material gaussianBlurMaterial = null ; public Material material { get { gaussianBlurMaterial = CheckShaderAndCreateMaterial ( gaussianBlurShader , gaussianBlurMaterial ) ; return gaussianBlurMaterial ; } } 然后提供调整高斯模糊迭代次数、模糊范围、缩放系数的参数: [ Range ( 0 , 4 ) ] public int iterations = 3 ;

均值模糊与高斯模糊

折月煮酒 提交于 2019-12-06 18:48:30
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespace cv; using namespace std; const int g_nTrackbarMaxValue = 9; //定义轨迹条最大值 int g_nTrackbarValue; //定义轨迹条初始值 int g_nKernelValue; //定义kernel尺寸 Mat src, dst; //均值滤波 void on_kernelTrackbar(int,void *) { //根据输入值重新计算kernel尺寸 g_nKernelValue = g_nTrackbarValue * 2 + 1; //均值滤波函数 blur(src, dst, Size(g_nKernelValue, g_nKernelValue)); imshow("均值滤波", dst); } //高斯滤波 void on_kernelTrackbar2(int, void*) { //根据输入值重新计算kernel尺寸 g_nKernelValue = g_nTrackbarValue * 2 + 1; //均值滤波函数 GaussianBlur(src, dst, Size(g_nKernelValue, g

GPUImage学习总结

此生再无相见时 提交于 2019-12-06 14:16:15
GPUImage是iOS上一个基于OpenGL进行图像处理的开源框架,内置大量滤镜,架构灵活,可以在其基础上很轻松地实现各种图像处理功能。 GPUImgae特性 1,丰富的输入组件 摄像头、图片、视频、OpenGL纹理、二进制数据、UIElement(UIView, CALayer) 2,大量现成的内置滤镜(4大类) 1). 颜色类(亮度、色度、饱和度、对比度、曲线、白平衡...) 2). 图像类(仿射变换、裁剪、高斯模糊、毛玻璃效果...) 3). 颜色混合类(差异混合、alpha混合、遮罩混合...) 4). 效果类(像素化、素描效果、压花效果、球形玻璃效果...) 3,丰富的输出组件 UIView、视频文件、GPU纹理、二进制数据 4,灵活的滤镜链 滤镜效果之间可以相互串联、并联,调用管理相当灵活。 5,接口易用 滤镜和OpenGL资源的创建及使用都做了统一的封装,简单易用,并且内置了一个cache模块实现了framebuffer的复用。 6,线程管理 OpenGLContext不是多线程安全的,GPUImage创建了专门的contextQueue,所有的滤镜都会扔到统一的线程中处理。 7,轻松实现自定义滤镜效果 继承GPUImageFilter自动获得上面全部特性,无需关注上下文的环境搭建,专注于效果的核心算法实现即可。 滤镜基本原理

[Android] 图片JNI(C++\Java)高斯模糊 多线程

跟風遠走 提交于 2019-12-05 18:06:37
======================================================== 作者: qiujuer 博客: blog.csdn.net/qiujuer 网站: www.qiujuer.net 开源库: Genius-Android 转载请注明出处: http://blog.csdn.net/qiujuer/article/details/41777001 ======================================================== 在我的博客中,曾经发布了一篇 高斯模糊(堆栈模糊) 的文章;在其中使用了国外的一个 堆栈模糊 来实现对图片的模糊处理;同时弄了一个JNI C++ 的版本。 这篇文章依然是堆栈模糊;可以说最原始的地方还是堆栈模糊部分;只不过是支持多线程的。 纳尼?? 感情是之前那个不支持多线程?Sorry,我说错了;两个都是支持多线程调用的。不过新讲的这个是能在内部采用多线程进行 分段模糊 。 原来的: [Android]-图片JNI(C++\Java)高斯模糊的实现与比较 开工吧 说明:其中代码大部分来源于网络,不过都是开源的。 最原始的代码: stackblur.cpp // The Stack Blur Algorithm was invented by Mario Klingemann, /

高斯模糊原理,算法

落爺英雄遲暮 提交于 2019-12-04 01:05:11
作者:Hohohong 链接:https://www.jianshu.com/p/8d2d93c4229b 來源:简书 图像卷积滤波与高斯模糊 1.1 图像卷积滤波 对于滤波来说,它可以说是图像处理最基本的方法,可以产生很多不同的效果。以下图来说 图中矩阵分别为二维原图像素矩阵,二维的图像滤波矩阵(也叫做卷积核,下面讲到滤波器和卷积核都是同个概念),以及最后滤波后的新像素图。对于原图像的每一个像素点,计算它的领域像素和滤波器矩阵的对应元素的成绩,然后加起来,作为当前中心像素位置的值,这样就完成了滤波的过程了。 可以看到,一个原图像通过一定的卷积核处理后就可以变换为另一个图像了。而对于滤波器来说,也是有一定的规则要求的。 ① 滤波器的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。 ② 滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。 ③ 如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。 ④ 对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。 1.2 卷积核一些用法

Android MediaPlayer MP3播放器(倍速和音量)的封装和所见的问题

会有一股神秘感。 提交于 2019-12-03 18:36:06
Android MediaPlayer MP3播放器(倍速和音量)的封装和所见的问题 文章目录 Android MediaPlayer MP3播放器(倍速和音量)的封装和所见的问题 一.技术选型 二.为了方便调试 三.实现步骤 1.创建Library(也可以不创建,直接从demo中写也行) 2.创建一个布局文件..(有点啰嗦了别嫌弃) 3.Java类继承RelativeLayout(组合式自定义控件) 4.设置结束监听回调的接口 5.封面图使用的Glide圆形工具 6.添加耳机连接的广播接收者 四.出现的问题 1.属性动画点暂停后再次点击开始将会从头开始播放 2.进度条的进度问题 3.华为手机设置倍速问题 4.界面绘制出现过慢或者ANR 5.解决完界面绘制出现过慢或者ANR发现获取音频长度不准确..... 6.免积分下载地址 (记得点赞) 技术实现 咱要感谢谷歌大哥的mediaplayer,虽然有些问题挺难搞定,但是咱还是充满信心 功能包括 MP3格式音乐的播放(MediaPlayer也支持其他格式 so:不解释了) MediaPlayer倍速 MediaPlayer音量设置 进度条设置 结束 播放完成监听 背景和封面 背景高斯模糊(图片都是在线图片) 封面旋转动画(已解决从结束位置开始) 等等… 运行效果 代码可能比较多,仔细阅读,转发请标明出处 一.技术选型

OpenCV---高斯模糊(均值模糊的另一种)

匿名 (未验证) 提交于 2019-12-03 00:39:02
高斯分布: 高斯模糊的原理 一:图像产生高斯噪声循环代码实现(耗时) def clamp(pv):   #使我们的随机值在0-255之间 if pv > 255 : return 255 if pv < 0 : return 0 return pv import cv2 as cv import numpy as np def gaussian_noise(image): #对图像加上高斯噪声 h,w,c = image.shape for row in range(h):   #十分耗时 for col in range(w): s = np.random.normal(0,20,3 )  #产生3个随机值,符合正态分布,第一个参数是概率分布的均值,对应分布中心,,第二个是概率分布的标准差,越小越瘦高,第三个是输出的值个数 b = image[row,col, 0 ] #blue g = image[row,col, 1 ] #green r = image[row,col, 2 ] #red image[row,col, 0 ] = clamp(b+s[ 0 ]) image[row,col, 1 ] = clamp(g+s[ 1 ]) image[row,col, 2 ] = clamp(r+s[ 2 ]) cv.imshow( " noise image " ,image)

高斯模糊

匿名 (未验证) 提交于 2019-12-02 23:34:01
要想实现高斯模糊的特点,则需要通过构建对应的权重矩阵来进行滤波。 1.3.1 正态分布 正态分布 正态分布中,越接近中心点,取值越大,越远离中心,取值越小。 计算平均值的时候,我们只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。正态分布显然是一种可取的权重分配模式。 1.3.2 高斯函数 如何反映出正态分布?则需要使用高函数来实现。 上面的正态分布是一维的,而对于图像都是二维的,所以我们需要二维的正态分布。 正态分布的密度函数叫做"高斯函数"(Gaussian function)。它的一维形式是: 其中,μ是x的均值,σ是x的方差。因为计算平均值的时候,中心点就是原点,所以μ等于0。 根据一维高斯函数,可以推导得到二维高斯函数: 有了这个函数 ,就可以计算每个点的权重了。 1.3.3 获取权重矩阵 假定中心点的坐标是(0,0),那么距离它最近的8个点的坐标如下: 更远的点以此类推。 为了计算权重矩阵,需要设定σ的值。假定σ=1.5,则模糊半径为1的权重矩阵如下: 这9个点的权重总和等于0.4787147,如果只计算这9个点的加权平均,还必须让它们的权重之和等于1,因此上面9个值还要分别除以0.4787147,得到最终的权重矩阵。 除以总值这个过程也叫做”归一问题“ 目的是让滤镜的权重总值等于1。否则的话

python-Scipy工具包

匿名 (未验证) 提交于 2019-12-02 22:54:36
Scipy工具包,是用于数值运算的开源工具包。它提供了很多高效操作,可以实现数值积分、优化、统计、信号处理、以及最重要的图像处理功能。 图像高斯模糊就是将灰度图像I和一个高斯核进行卷积:I.=I*G 所以也叫高斯模糊,高斯模糊对图像插值操作、兴趣点计算以及去噪等都有很大的作用。 from scipy .ndimage .filters #im是灰度图,5表示标准差 im2=filters,gaussian_filter(im, 5 ) 标准差越大,该图像越模糊 图像导数用来描述图像强度的变化情况,分别用灰度图像I的x和y方向导数Ix和Iy描述。 1. 读取.mat文件 mat文件存储的是matlab数据集,可以使用scipy.io 模块进行读取: data =scipy.io.loadmat (' test . mat' ) #保存 scipy .io.savemat('test.mat', data ) 2. imsave()函数从scipy.misc模块导入,作用是将数组直接保存为图像文件。 文章来源: python-Scipy工具包