JAVA高斯模糊代码实现
来源:互联网 发布:inodesetup mac 编辑:程序博客网 时间:2024/06/09 19:41
/* * 用高斯滤波器平滑原图像 * @param image 输入图像 * @return 高斯滤波后的图像 */ public static BufferedImage gaussFiltering(BufferedImage image) { int size=5;// 高斯模板 float[] elements = getGaussTemplate(1,size); /** * Kernel 类定义了一个矩阵,描述指定的像素及其周围像素如何影响过滤操作输出图像中像素位置的计算值。 * X 原点和 Y 原点指示 kernel 矩阵元素对应于为其计算输出值的像素位置。 */Kernel kernel = new Kernel(size, size, elements);//只接受float类型的 /** * ConvolveOp类实现从源到目标的卷积。使用卷积核的卷积是一种通过输入像素来计算输出像素的空间运算, * 方法是将核与输入像素邻域相乘。这种运算使得直接邻域可按核数学指定的方式影响输出像素。 */ConvolveOp blur = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); image= blur.filter(image, null); return image; } /** * 高斯模板 * @param sigma 标准差 * @param size 高斯模板高,宽 * @return 高斯模板 */ public static float[] getGaussTemplate(int sigma,int size){ float[] temp=new float[size*size]; double[][] Gaussian_Temp = new double[size][size]; int i,j; double sum = 0; double weight= 2*Math.PI*sigma*sigma; for(i =0;i <size;i++){ for(j = 0;j < size;j++){ Gaussian_Temp[i][j] =weight* Math.exp(-((i-size/2)*(i-size/2)+(j-size/2)*(j-size/2))/(2.0*sigma*sigma)); sum += Gaussian_Temp[i][j]; } } int k=0; for(i = 0; i < size;i++){ for(j = 0;j < size;j++){ Gaussian_Temp[i][j] = Gaussian_Temp[i][j]/sum;//归一化处理 temp[k++]=Float.parseFloat(String.valueOf(Gaussian_Temp[i][j]));//double转float temp[k-1]=Float.parseFloat(String .format("%.6f",temp[k-1]));//统一5位小数 } } return temp; }
阅读全文
0 0
- JAVA高斯模糊代码实现
- java简单实现高斯模糊效果,一行代码即可实现
- 实现高斯模糊
- 实现图片模糊,高斯模糊
- 高斯模糊实现小结
- 高斯模糊实现小结
- opencv实现高斯模糊
- 高斯模糊实现小结
- 高斯模糊实现小结
- 高斯模糊实现小结
- 高斯模糊及实现
- opencv实现高斯模糊
- iOS高斯模糊实现
- 高斯模糊的实现
- Android实现高斯模糊
- android 高斯模糊实现
- 高斯模糊实现小结
- IOS实现高斯模糊
- IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案
- 【学习笔记】DTMF相关的学习-三种方式
- 阿里云服务器价格,用一张表来展示
- 由跳槽想到的人生抉择
- 监听ContentProvider
- JAVA高斯模糊代码实现
- H5实战(一):照片墙效果
- PhantomJS、Selenium、Chrome驱动的mac版安装和配置
- Thread(target=Test1())中target写函数名时带括号和不带括号有什么区别?
- 多线程之Thread和Runable选择及原理(二)
- CodeForces 534A A. Exam
- 方法的匹配顺序
- 1005. Spell It Right (20)
- 作业管理