《数字图像处理》实验报告
目录
一、 实验内容
二、 实现方法
1、图像平滑
1. // 均值滤波
6. DWORD div = 10;
KNN平滑滤波
2、图像锐化
1. // Roberts算法 交叉微分算法
三、 结果分析
1、图像平滑
加权均值滤波
2、图像锐化
四、 结论与展望
一、 实验内容
请根据提供的模板实现如下功能:
1) 图像平滑: 均值滤波、加权均值滤波、中值滤波、KNN平滑滤波(主要分析模板系数、大小、形状、滤波次数以及k值(KNN)对最终结果的影响)
2) 图像锐化:水平锐化、垂直锐化、交叉锐化、sobel锐化、prewitt锐化、laplacian锐化、wallis锐化(分析各个模板对最终锐化结果的影响)
学有余力的同学可以选做图像锐化部分。
二、 实现方法
1、图像平滑
均值滤波
算法原理:
在图像上,对待处理的像素给定一个模板,该模板包括了其周围的邻近像素。将模板中的全体像素的均值来替代原来的像素值的方法。
代码实现:
1. // 均值滤波
2. void meanFilter(RGBQUAD **dataOfBmp_dst, BYTE **dataOfBmp_gray, DWORD width, DWORD height)
3. {
4. for (DWORD i = 1; i < height - 1; i++)
5. {
6. for (DWORD j = 1; j < width - 1; j++)
7. {
8. BYTE tmp = ((BYTE)dataOfBmp_gray[i - 1][j - 1] + (BYTE)dataOfBmp_gray[i - 1][j] +
9. (BYTE)dataOfBmp_gray[i - 1][j + 1] + (BYTE)dataOfBmp_gray[i][j - 1] +
10. (BYTE)dataOfBmp_gray[i][j] + (BYTE)dataOfBmp_gray[i][j + 1] +
11. (BYTE)dataOfBmp_gray[i + 1][j - 1] + (BYTE)dataOfBmp_gray[i + 1][j] +
12. (BYTE)dataOfBmp_gray[i + 1][j + 1]) /
13. 9;
14. dataOfBmp_dst[i][j].rgbBlue = tmp;
15. dataOfBmp_dst[i][j].rgbGreen = tmp;
16. dataOfBmp_dst[i][j].rgbRed = tmp;
17. }
18. }
19.
20. // 保存
21. saveBmp(dataOfBmp_dst, width, height);
22. }