java GaussianFilter 实现
时间: 2023-10-23 11:29:45 浏览: 159
GaussianFilter 是一个常用的图像处理滤波器,可以用于图像平滑处理。在 Java 中,可以通过使用 BufferedImage 和 Kernel 类来实现 GaussianFilter。
以下是一个简单的 Java GaussianFilter 实现代码:
```
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
public class GaussianFilter {
public static BufferedImage apply(BufferedImage image, int radius, float sigma) {
int size = radius * 2 + 1;
float[] data = new float[size * size];
float sigma22 = 2 * sigma * sigma;
float sigmaPi2 = (float) (2 * Math.PI * sigma);
int index = 0;
for (int y = -radius; y <= radius; y++) {
for (int x = -radius; x <= radius; x++) {
float distance = x * x + y * y;
data[index] = (float) Math.exp(-distance / sigma22) / sigmaPi2;
index++;
}
}
Kernel kernel = new Kernel(size, size, data);
ConvolveOp op = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
return op.filter(image, null);
}
}
```
代码中,apply() 方法接收一个 BufferedImage 对象,一个卷积半径 radius 和一个高斯标准差 sigma。它会计算出对应的高斯核,并使用 ConvolveOp 对象进行卷积处理,最终返回处理后的图像。
使用方法如下:
```
BufferedImage image = ImageIO.read(new File("input.jpg"));
BufferedImage filteredImage = GaussianFilter.apply(image, 5, 2.0f);
ImageIO.write(filteredImage, "jpg", new File("output.jpg"));
```
上述代码将读取名为 input.jpg 的图像文件,并对其进行半径为 5,标准差为 2.0 的高斯滤波处理,最终将处理后的图像保存为 output.jpg 文件。
注意:使用该代码需要引入 java.awt.image 包。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)