盒式过滤器的平滑内核大小
Smoothing kernel size for box filter
对于 OpenCV 中的框滤波器,平滑内核大小可以通过 cv2.boxFilter() 中的 ksize 参数定义。我想知道ksize到底是X、Y正方向还是原点附近的尺寸?
在上图中 - ksize 应该是 (1, 1),正确吗?还是应该是 (0.5, 1)?例如,对于宽度为 5 的两个方向,ksize 应该是 (5, 5) 还是 (10, 5)?对于上述情况,我希望正负 X 方向的宽度均为 5,而 y 方向的高度均为 5。我认为 y 无论如何都应该为 5,因为盒式过滤器的负 y 并没有多大意义。
通过测试boxFilter的脉冲响应很容易发现。设 x
为 9x9 图像
>>> x
array([[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.]])
然后 运行 boxFilter with ksize=(5,5) 作为 cv2.boxFilter(x, 6, (5,5))
产生
array([[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])
就像Cris说的,ksize是box的全宽和全高,filter是居中的
对于 OpenCV 中的框滤波器,平滑内核大小可以通过 cv2.boxFilter() 中的 ksize 参数定义。我想知道ksize到底是X、Y正方向还是原点附近的尺寸?
在上图中 - ksize 应该是 (1, 1),正确吗?还是应该是 (0.5, 1)?例如,对于宽度为 5 的两个方向,ksize 应该是 (5, 5) 还是 (10, 5)?对于上述情况,我希望正负 X 方向的宽度均为 5,而 y 方向的高度均为 5。我认为 y 无论如何都应该为 5,因为盒式过滤器的负 y 并没有多大意义。
通过测试boxFilter的脉冲响应很容易发现。设 x
为 9x9 图像
>>> x
array([[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0.]])
然后 运行 boxFilter with ksize=(5,5) 作为 cv2.boxFilter(x, 6, (5,5))
产生
array([[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0.04, 0.04, 0.04, 0.04, 0.04, 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])
就像Cris说的,ksize是box的全宽和全高,filter是居中的