Python 使用cv2.GaussianBlur时关于边框类型的查询

Python 使用cv2.GaussianBlur时关于边框类型的查询,python,opencv,Python,Opencv,当使用填充时,边框|u REFLECT|u 101应为边框值的这种方式:gfedcb | abcdefgh | gfedcba 从图形上看,应该是这样的(图像的左上边框): 但是红场上的x怎么办?他们的价值观是如何决定的?谢谢 下图表示图像的左上部分。如果我想用一个3x3内核对这个图像进行高斯模糊,那么像素(每个像素都用一个x表示)就会被添加。为了计算原始图像中4(蓝色方块内部)占据的位置上的输出值,需要该蓝色方块内部的“x”像素值。现在,如果borderType=cv2.BORDER\u

当使用填充时,边框|u REFLECT|u 101应为边框值的这种方式:gfedcb | abcdefgh | gfedcba

从图形上看,应该是这样的(图像的左上边框):

但是红场上的x怎么办?他们的价值观是如何决定的?谢谢


下图表示图像的左上部分。如果我想用一个3x3内核对这个图像进行高斯模糊,那么像素(每个像素都用一个x表示)就会被添加。为了计算原始图像中4(蓝色方块内部)占据的位置上的输出值,需要该蓝色方块内部的“x”像素值。现在,如果borderType=cv2.BORDER\u REFLECT\u 101,我理解它们是什么值。但我不知道如果borderType=cv2.BORDER\u隔离会发生什么


红色部分是右下角3x3像素的副本,围绕X轴和Y轴翻转。即,
3,5,4;8,7,5 ; 7,6,3
易于使用
copyMakeBorder
@DanMašek顺便问一下,你知道BORDER_是如何工作的吗?描述中说“不要看ROI之外”,我不明白,因为当使用高斯模糊时,你需要通过填充创建的值(你的高斯核的值之和等于一,所以你应该使用内核下填充图像的所有值),请参见中的注释。我不明白。卷积(使用高斯模糊)如何在不考虑填充增加的像素值的情况下进行?不,这不是它的意思。使用
cv::Mat
实例以及numpy数组可以创建新的
Mat
/array,该数组充当源图像较小“感兴趣区域”(ROI)的视图。它不是一个副本,它仍然使用相同的底层数据,所以如果你修改它,你也会修改原始图像——它只是更小。(例如,您可以在示例图像中仅创建该红方块的视图)。现在,如果您尝试将
copyMakeBorder
(这是GaussingBlur在进行卷积之前所做的)应用于这样的图像,它将在默认情况下尝试使用…红色部分是右下角3x3像素的副本,围绕X轴和Y轴翻转。即,
3,5,4;8,7,5 ; 7,6,3
易于使用
copyMakeBorder
@DanMašek顺便问一下,你知道BORDER_是如何工作的吗?描述中说“不要看ROI之外”,我不明白,因为当使用高斯模糊时,你需要通过填充创建的值(你的高斯核的值之和等于一,所以你应该使用内核下填充图像的所有值),请参见中的注释。我不明白。卷积(使用高斯模糊)如何在不考虑填充增加的像素值的情况下进行?不,这不是它的意思。使用
cv::Mat
实例以及numpy数组可以创建新的
Mat
/array,该数组充当源图像较小“感兴趣区域”(ROI)的视图。它不是一个副本,它仍然使用相同的底层数据,所以如果你修改它,你也会修改原始图像——它只是更小。(例如,您可以在示例图像中仅创建该红方块的视图)。现在,如果您尝试将
copyMakeBorder
(这是GaussingBlur在进行卷积之前所做的)应用于这样的图像,它将在默认情况下尝试使用。。。