我正在使用这个:
blur = cv2.GaussianBlur(dst,(5,5),0)
我想以此显示内核矩阵:
print(cv2.getGaussianKernel(ksize=(5,5),sigma=0))
但是我收到类型错误:
TypeError: an integer is required (got type tuple)
如果我只放5,我将得到5x1矩阵。模糊内核不是5x5吗?还是我缺少基本的东西?
答案 0 :(得分:4)
高斯核是可分离的。因此,生成的内核是1D。 GaussianBlur
函数沿每个图像维度依次应用此一维内核。可分离性意味着该过程产生与应用2D卷积(或3D图像的情况下为3D)完全相同的结果。但是工作量大大减少了。对于5x5内核,2D卷积执行25次乘法和加法,可分离实现仅执行5 + 5 = 10。对于较大的内核,收益越来越显着。
要查看完整的2D内核,请将GaussianBlur
函数应用于全为零且中间的单个像素设置为1的图像。这与Dirac delta函数等效,可以用来分析线性时不变函数(==卷积滤波器)。