我在与OpenCV一起工作时,我想到了一个问题,为什么例如GaussianBlur有BorderType选项,而MedianBlur没有?
我研究了可分离的过滤器,也许它与之相关?
因为GaussianBlur是可分离的,但MedianBlur不是。
而且在OpenCV的开源代码中很难理解为什么这两个过滤器会有这种区别。

最佳答案

可能是因为决定在中值滤波器的情况下不需要该参数。当算法为靠近图像边界和该像素的邻近像素超出空间图像域的像素计算值时,他们只是在实现中忽略了该值,而仅从放置在图像上的像素计算中值,但是您可以编写实现而不是忽略该像素将它们视为0或128或255或其他值,这些值是根据它们附近的像素计算得出的,但这可能不是一个好方法。

例如,如果必须使用蒙版大小等于3的中值滤镜来计算图像一角的像素值,则仅从放置在图像上的四个像素计算中值时,它就很好了。您不需要附近所有9个像素。添加一些内插值可能会使结果失真。

关于c++ - 为什么OpenCV MedianBlur中没有BorderType选项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31581797/

10-09 13:28