public BufferedImage convolution(BufferedImage srcImage) {
// 平滑滤波器
float mask[] = new float[]{1.0f/16, 2.0f/16, 1.0f/16,
2.0f/16, 4.0f/16, 2.0f/16,
1.0f/16, 2.0f/16, 1.0f/16};
int width = srcImage.getWidth();
int height = srcImage.getHeight();
int srcRGBs[] = new int[width*height];
srcImage.getRGB(0, 0, width, height, srcRGBs, 0, width);
int paddedRGBs[] = new int[(width+4)*(height+4)];
int paddedIndex = 2 * (width+4) + 2;
for (int i = 0; i < height * width; i++) {
while ( 1 >= (paddedIndex % (width + 4)) ||
(paddedIndex % (width + 4)) >= (width + 2) )
paddedIndex++;
paddedRGBs[paddedIndex] = srcRGBs[i];
paddedIndex++;
}
// 对填充过后的RGB数组进行卷积操作
int rgb[] = new int[3]; // 存储RGB值
int rgbs[][] = new int[9][3]; // 存储滤波器中9个像素的RGB值
float frgb[] = new float[3]; // 滤波处理后的RGB
int new
图像处理——卷积
最新推荐文章于 2024-09-13 21:46:31 发布
本文探讨了在Java中进行图像处理时卷积操作遇到的问题,主要表现为处理后的图像出现空白。原因是循环中变量积累超出255,导致像素值全为255。解决方法是将变量声明置于循环内部,确保每次迭代时变量重新初始化。
摘要由CSDN通过智能技术生成