在理解 Scipy 或 OpenCV 中值滤波器函数时遇到问题

问题描述

我目前正在编写有关中值过滤器的内容,并想使用一些 Python 函数来创建示例。我有一个具有以下像素的示例图像:

[[255   0   0   0 158]  
 [  0 158 158 158 158]  
 [  0   0 255   0   0]  
 [  0   0   0   0 158]  
 [  0 255   0   0 158]]  

Python 结果如下所示:

[[158   0   0 158 158]
 [  0   0   0 158 158]
 [  0   0   0 158 158]
 [  0   0   0   0   0]
 [  0   0   0   0 158]]

我现在的问题是理解这个结果是如何创建的(我正在检查 3x3 半径),因为根据我的理解,第一个像素(位置 0,0 处的 255)应该有结果 0,因为周围缺少像素它用 0 填充。如果我手动检查它,我会考虑我们正在查看的填充:

0   0   0
0 255   0
0   0 158

所以有序数据将是 [0,158,255] 因此中位数应该是 0。结果 158 怎么样?许多其他值也存在类似的混淆。我在 Lizhe Ta 和 Jean Jiang 的“数字信号处理”中阅读了中值的工作原理。可以在此处找到章节(“13.4.2 中值过滤”和“示例 13.8”)https://www.sciencedirect.com/topics/computer-science/median-filter

我这样调用过滤器函数: 进口:

import cv2
from scipy import ndimage

代码片段:

median = cv2.medianBlur(gray,3)
print(median)
im_med = ndimage.median_filter(gray,3)
print(im_med)

因为我想编写自己的过滤器函数,所以我必须准确了解所有这些是如何工作的!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)