MATLAB的imfilter函数之python实现(python-opencv)

目录

  • MATLAB的imfilter函数之python实现(python-opencv)
    • 背景及环境
    • 复现imfilter()

MATLAB的imfilter函数之python实现(python-opencv)

背景及环境

  1. 背景 用python复现研发者写好的代码(MATLAB版),实验室模式项目工程;
  2. 环境 opencv3 + numpy + python 树莓派/win10系统都可用
  3. MATLAB源码
M=fspecial('average',3);
grayFrame=imfilter(SrcgrayFrame,M);

意思是
创建一个3x3平均滤波矩阵(3x3的,加和为1的矩阵),
使用imfilter函数对原灰度图进行滤波,
imfilter函数使用刚才创建的3x3滤波矩阵进行滤波,滤波模式:相关(corr);
边界:填0;
大小:same
MATLAB的imfilter函数之python实现(python-opencv)_第1张图片

复现imfilter()

  1. 全网搜 python实现MATLABimfiler函数,找到 OpenCV中的filter2D可以复现
  2. 使用OpenCV中的filter2D复现上面MATLAB的代码
    这里有好几个深坑,记录下来希望大家能躲掉。
    1.cv2.filter2D在opencv 3.4.0中不支持整型输入,需要将输入数组转化为float32类型才可正确执行。
    灵魂:SrcgrayFrame.astype('float32')
    2.imfilter参数设置
    简短截说,上代码:
kernel = np.ones((3, 3), np.float32)/9
grayFrame = cv2.filter2D(SrcgrayFrame.astype('float32'), -1, kernel,borderType=cv2.BORDER_CONSTANT)

参数解释:
cv2.filter2D(原图像.转float32 , 转完的图像与原图像同样深度,卷积核(就上面定义的那个numpy数组),边界类型=常量)

【官方文档
https://docs.opencv.org/master/d4/d86/group__imgproc__filter.html#ga27c049795ce870216ddfb366086b5a04】

你可能感兴趣的:(python,实现方案)