Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么OpenCV MedianBlur中缺少BorderType选项?_C++_Image_Opencv - Fatal编程技术网

C++ 为什么OpenCV MedianBlur中缺少BorderType选项?

C++ 为什么OpenCV MedianBlur中缺少BorderType选项?,c++,image,opencv,C++,Image,Opencv,我正在与OpenCV合作,我提出了一个问题,例如,为什么GaussianBlur有用于BorderType的选项,而MedianBlur没有呢? 我研究过可分离过滤器,也许它与此有关? 因为GaussianBlur是可分离的,但MedianBlur不是。 在OpenCV的开放源代码中,很难理解为什么这两个过滤器会有这样的差异。可能是因为决定了中值滤波器不需要参数。当算法计算靠近图像边界的像素值和该像素在空间图像域的邻域时,它们只是在实现中忽略了它,并且仅从放置在图像上的像素计算中值,但是,你可以

我正在与OpenCV合作,我提出了一个问题,例如,为什么GaussianBlur有用于BorderType的选项,而MedianBlur没有呢?
我研究过可分离过滤器,也许它与此有关?
因为GaussianBlur是可分离的,但MedianBlur不是。

在OpenCV的开放源代码中,很难理解为什么这两个过滤器会有这样的差异。

可能是因为决定了中值滤波器不需要参数。当算法计算靠近图像边界的像素值和该像素在空间图像域的邻域时,它们只是在实现中忽略了它,并且仅从放置在图像上的像素计算中值,但是,你可以编写实现,而不是省略像素,将它们视为0或128或255,或者由它们附近的像素计算的其他值,但这可能不是好方法。p>
例如,如果您必须使用遮罩大小为3的中值滤波器计算图像角的像素值,当您仅从图像上放置的四个像素计算中值时,这是非常好的。你不需要所有的9像素在附近。添加一些插值可能会使结果失真。

可能是因为在中值滤波的情况下不需要参数。当算法计算靠近图像边界的像素值和该像素在空间图像域的邻域时,它们只是在实现中忽略了它,并且仅从放置在图像上的像素计算中值,但是,你可以编写实现,而不是省略像素,将它们视为0或128或255,或者由它们附近的像素计算的其他值,但这可能不是好方法。p>
例如,如果您必须使用遮罩大小为3的中值滤波器计算图像角的像素值,当您仅从图像上放置的四个像素计算中值时,这是非常好的。你不需要所有的9像素在附近。添加一些插值可能会扭曲结果。

但我已经阅读了MedianFilter的源代码,其中有一部分边框。它使用cv::CopyMakeBorder,但只使用option BORDER\u REPLICATE标记,但不止此项,而且在很多情况下都有帮助。没有填充也不行,因为它会比填充慢很多。但是我已经阅读了MedianFilter的源代码,有一部分是BORDER。它使用cv::CopyMakeBorder,但只使用option BORDER\u REPLICATE标记,但不止此项,而且在很多情况下都有帮助。如果没有填充,因为这比填充要慢得多。似乎有些聪明人认为在
medianBlur
的环境中,使用
borderType=BORDER\u REPLICATE
对任何人都适用。但是,例如,当尝试从图像中删除细(网格)线时,当线接触/穿过图像边界时,此边界类型将产生不需要的结果。我的工作是使用
copyMakeBorder(…,上/下/左/右=ksize/2,borderType=BORDER\u REFLECT\u 101)
。但是由于
medianBlur(…)
也添加了一个边框,所以这里的效率有点低……似乎有个聪明人决定在
medianBlur
的上下文中使用
borderType=border\u REPLICATE
对任何人都适用。但是,例如,当尝试从图像中删除细(网格)线时,当线接触/穿过图像边界时,此边界类型将产生不需要的结果。我的工作是使用
copyMakeBorder(…,上/下/左/右=ksize/2,borderType=BORDER\u REFLECT\u 101)
。但是由于
medianBlur(…)
也添加了一个边框,所以这里的效率有点低。。。