卷积处理过程模拟:用Python实现OpenCV函数filter2D等效的卷积功能

Posted LaoYuanPython

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卷积处理过程模拟:用Python实现OpenCV函数filter2D等效的卷积功能相关的知识,希望对你有一定的参考价值。

一、引言

在《OpenCV-Python 图像平滑处理:卷积函数filter2D详解及均值滤波案例》介绍了filter2D相关的功能及使用,下面老猿用Python、numpy矩阵运算以及OpenCV-Python的图像基础操作模拟实现一个卷积程序。该程序支持使用特定的卷积核对图像进行卷积处理,除了卷积核和锚点参数外,本程序模拟filter2D实现时其他参数都使用的是默认值。

二、程序实现需要关注的三点

2.1、在filter2D的卷积核矩阵类型为浮点类型

在图像处理中,数字图像都是整数型矩阵,当用核矩阵和卷积核进行卷积处理时,如果不强制将数字图像矩阵转为浮点型,那么在相关矩阵运算过程中必须指定结果类型也为浮点型,否则会丢失精度。老猿采用的是在运算过程中将图像矩阵元素转为核矩阵元素类型相同的类型。

2.2、numpy的矩阵从浮点转为整型时的取值处理

numpy的矩阵从浮点转为整型时的整型取值是去除小数部分,不进行四舍五入处理,而filter2D经测试是进行了四舍五入处理的。

下面是numpy浮点矩阵转换为整型矩阵的一个测试,测试代码如下:

kernal 

以上是关于卷积处理过程模拟:用Python实现OpenCV函数filter2D等效的卷积功能的主要内容,如果未能解决你的问题,请参考以下文章

用Python实现艺术绘画,人生苦短,代码赛高

OpenCV 完整例程54. OpenCV 实现图像二维卷积

OpenCV 完整例程53. Scipy 实现图像二维卷积

[OpenCV-Python] OpenCV 中的图像处理 部分 IV (二)

怎么在c++的平台下用opencv做一个对图像的卷积?????

OpenCV学习笔记——图像平滑处理(滤波)