首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

简略的java高斯模糊图片算法

2013-11-25 
简单的java高斯模糊图片算法  通过对像素点取平均值计算出高斯模糊效果,没有实现权重,只有简单的模糊,矩阵

简单的java高斯模糊图片算法
  通过对像素点取平均值计算出高斯模糊效果,没有实现权重,只有简单的模糊,矩阵为3X3
  import java.awt.Color;
  import java.awt.image.BufferedImage;
  import java.io.File;
  import java.io.IOException;
  import javax.imageio.ImageIO;
  public class Test
  {
  /**
  * 简单高斯模糊算法
  *
  * @param args
  * @throws IOException [参数说明]
  *
  * @return void [返回类型说明]
  * @exception throws [违例类型] [违例说明]
  * @see [类、类#方法、类#成员]
  */
  public static void main(String[] args)
  throws IOException
  {
  BufferedImage img = ImageIO.read(new File("c:/ex/Wind.jpg"));
  System.out.println(img);
  int height = img.getHeight();
  int width = img.getWidth();
  int[][] matrix = new int[3][3];
  int[] values = new int[9];
  for (int i = 0; i < width; i++)
  {
  for (int j = 0; j < height; j++)
  {
  readPixel(img, i, j, values);
  fillMatrix(matrix, values);
  img.setRGB(i, j, avgMatrix(matrix));
  }
  }
  ImageIO.write(img, "jpeg", new File("c:/ex/test.jpg"));//保存为test.jpeg文件
  }
  private static void readPixel(BufferedImage img, int x, int y, int[] pixels)
  {
  int xStart = x - 1;
  int yStart = y - 1;
  int current = 0;
  for (int i = xStart; i < 3 + xStart; i++)
  {
  for (int j = yStart; j < 3 + yStart; j++)
  {
  int tx = i;
  if (tx < 0)
  {
  tx = -tx;
  }
  else if (tx >= img.getWidth())
  {
  tx = x;
  }
  int ty = j;
  if (ty < 0)
  {
  ty = -ty;
  }
  else if (ty >= img.getHeight())
  {
  ty = y;
  }
  pixels[current++] = img.getRGB(tx, ty);
  }
  }
  }
  private static void fillMatrix(int[][] matrix, int… values)
  {
  int filled = 0;
  for (int i = 0; i < matrix.length; i++)
  {
  int[] x = matrix[i];
  for (int j = 0; j < x.length; j++)
  {
  x[j] = values[filled++];
  }
  }
  }
  private static int avgMatrix(int[][] matrix)
  {
  int r = 0;
  int g = 0;
  int b = 0;
  for (int i = 0; i < matrix.length; i++)
  {
  int[] x = matrix[i];
  for (int j = 0; j < x.length; j++)
  {
  if (j == 1)
  {
  continue;
  }
  Color c = new Color(x[j]);
  r += c.getRed();
  g += c.getGreen();
  b += c.getBlue();
  }
  }
  return new Color(r / 8, g / 8, b /。getRGB();
  }
  }
     广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,本文主要讲述简单的java高斯模糊图片算法,更多java知识,android知识,ios知识,疯狂软件官网持续更新中。
  疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。技术知识沉淀深厚的老师,让你感受Java的魅力,激发你对于编程的热爱,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,成为真正的技术高手;通过大量全真企业项目疯狂训练,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!时间不等人,赶紧联系我们吧!疯狂java培训中心地址:广州天河区车陂沣宏大厦3楼。

热点排行