用c语言实现灰度图像的二维卷积操作,原图像边界填充方式为镜像填充,请给出代码
时间: 2023-03-10 17:08:54 浏览: 72
可以参考下面的代码:int width = img.getWidth();
int height = img.getHeight();
int[][] imgData = new int[width][height];
int[][] imgResult = new int[width][height];
int[][] filter = {{1,2,1},{2,4,2},{1,2,1}};//将图像数据存入imgData
for(int i = 0; i < width; i++){
for(int j = 0; j < height; j++){
imgData[i][j] = img.getRGB(i, j);
}
}//对图像进行镜像边界填充
for(int i = 1; i < width-1; i++){
imgData[i][0] = imgData[i][1];
imgData[i][height-1] = imgData[i][height-2];
}
for(int j = 1; j < height-1; j++){
imgData[0][j] = imgData[1][j];
imgData[width-1][j] = imgData[width-2][j];
}//对图像进行二维卷积
for(int i = 1; i < width-1; i++){
for(int j = 1; j < height-1; j++){
int sum = 0;
for(int m = -1; m < 2; m++){
for(int n = -1; n < 2; n++){
sum += imgData[i+m][j+n] * filter[m+1][n+1];
}
}
imgResult[i][j] = sum / 16;
}
}//将处理结果存入img
for(int i = 0; i < width; i++){
for(int j = 0; j < height; j++){
img.setRGB(i, j, imgResult[i][j]);
}
}
相关推荐
![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)