感觉基础没有学好,知识的高楼是建不起来的,即使建起来也是危楼。
之前没有细致的理解两个区别的时候一直觉得两个差不多就是一个东西,至少在算的过程差不多,现在细致理解起来还是有挺大区别的。
1、滤波(filte)就是冈萨雷斯的数字图像处理书中的“相关(correlation)”,这里滤波和卷积的核(掩膜)都用一个g:
1 | 1 | 1 |
0 | 0 | 0 |
-1 | -1 | -1 |
源图像为im:
1 | 2 | 3 | 4 | 5 | 6 |
2 | 3 | 4 | 5 | 6 | 7 |
3 | 4 | 5 | 6 | 7 | 8 |
4 | 5 | 6 | 7 | 8 | 9 |
0 | 0 | 0 | 0 | 0 | 0 |
5 | 6 | 7 | 8 | 9 | 10 |
不论滤波还是卷积操作,都需要对源图像填0,
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 |
0 | 2 | 3 | 4 | 5 | 6 | 7 | 0 |
0 | 3 | 4 | 5 | 6 | 7 | 8 | 0 |
0 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 5 | 6 | 7 | 8 | 9 | 10 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 |
0 | 0 | 0 |
-1 | -1 | -1 |
红色的点直接对应相乘再相加,可以得到滤波后图像的第一个点值为-5,然后Z字形划过生成滤波图像:
-5 | -9 | -12 | -15 | -18 | -13 |
-4 | -6 | -6 | -6 | -6 | -4 |
-4 | -6 | -6 | -6 | -6 | -4 |
7 | 12 | 15 | 18 | 21 | 15 |
-2 | -3 | -3 | -3 | -3 | -2 |
0 | 0 | 0 | 0 | 0 | 0 |
2、卷积操作,其实我一直也不理解为什要有卷积这个东西,因为卷积就是把核(掩膜)g翻转个180°,就是把它上下颠倒一下再来进行滤波操作的过程。
翻转的核:
-1 | -1 | -1 |
0 | 0 | 0 |
1 | 1 | 1 |
蓝色的点和前面蓝色的点相乘再相加,就得到卷积后图像的最后一个点0。
最后matlab中滤波函数是imfilter()、卷积函数是conv2()。