分享好友 人工智能首页 频道列表

opecv 卷积原理、边缘填充方式、卷积操作详解

卷积神经网络  2023-03-08 13:435350

什么是二维卷积呢?看下面一张图就一目了然:
opecv 卷积原理、边缘填充方式、卷积操作详解
卷积就是循环对图像跟一个核逐个元素相乘再求和得到另外一副图像的操作,比如结果图中第一个元素5是怎么算的呢?原图中3×3的区域与3×3的核逐个元素相乘再相加:
5=1×1+2×0+1×0+0×0+1×0+1×0+3×0+0×0+2×2
算完之后,整个框再往右移一步继续计算,横向计算完后,再往下移一步继续计算。
简而言之,卷积是一个对应位置像素值相乘后再相加的操作。
不难发现,前面我们用3×3的核对一副6×6的图像进行卷积,得到的是4×4的图,图片缩小了!那怎么办呢?我们可以把原图扩充一圈,再卷积,这个操作叫填充padding。

padding(边缘填充)

图像卷积后大小可参考 卷积和反卷积后图像大小

opecv 卷积原理、边缘填充方式、卷积操作详解
那么扩展的这一层应该填充什么值呢?OpenCV中有好几种填充方式,都使用 cv.copyMakeBorder() 函数实现,一起来看看。

cv.copyMakeBorder() 参数讲解
src:要处理的原图
top, bottom, left, right:上下左右要扩展的像素数
borderType:边框类型,这个就是需要关注的填充方式。其中默认方式和固定值方式最常用

边缘填充方式

固定值填充

顾名思义,cv.BORDER_CONSTANT 这种方式就是边框都填充成一个固定的值,比如下面的程序都填充0:

代码

img = cv.imread('baby_gg.bmp', 0)
print(img)
# 固定值边框,统一都填充0也称为zero padding
cons = cv.copyMakeBorder(img, 1, 1, 1, 1, cv.BORDER_CONSTANT, value=0)
print(cons)

图解固定值padding

opecv 卷积原理、边缘填充方式、卷积操作详解

默认填充方式

默认边框cv.BORDER_DEFAULT其实是取镜像对称的像素填充。

图解默认填充方式

opecv 卷积原理、边缘填充方式、卷积操作详解
opecv 卷积原理、边缘填充方式、卷积操作详解

代码

default = cv.copyMakeBorder(img, 1, 1, 1, 1, cv.BORDER_DEFAULT)
print(default)

opencv对图像进行卷积

OpenCV中用 cv2.filter2D() 实现卷积操作,比如我们的核是下面这样(3×3区域像素的和除以10):
opecv 卷积原理、边缘填充方式、卷积操作详解

代码

# 基本卷积操作
import cv2 as cv
import numpy as np

img = cv.imread('paojie.jpg')
# 定义卷积核
kernel = np.ones((3, 3), np.float32) / 10
# 卷积操作,-1表示通道数与原图相同
dst = cv.filter2D(img, -1, kernel)
# 两张图片横向合并,便于对比显示
result = np.hstack((img,dst))

cv.imshow('result',result)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果

opecv 卷积原理、边缘填充方式、卷积操作详解

查看更多关于【卷积神经网络】的文章

展开全文
相关推荐
反对 0
举报 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
技术向:一文读懂卷积神经网络 - 艾斯1213
技术向:一文读懂卷积神经网络自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet、cuda-convnet2。为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益。正文之前,先

0评论2023-03-08630

卷积神经网络CNN理解 卷积神经网络 简书
自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet、cuda-convnet2。为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益。正文之前,先说几点自己对于CNN的感触。先明

0评论2023-03-08590

理解图像的卷积
转自:https://www.zhihu.com/question/22298352从数学上讲,卷积就是一种运算。某种运算,能被定义出来,至少有以下特征:首先是抽象的、符号化的其次,在生活、科研中,有着广泛的作用比如加法: ,是抽象的,本身只是一个数学符号在现实中,有非常多的意

0评论2023-03-08835

学习笔记TF028:实现简单卷积网络
载入MNIST数据集。创建默认Interactive Session。初始化函数,权重制造随机噪声打破完全对称。截断正态分布噪声,标准差设0.1。ReLU,偏置加小正值(0.1),避免死亡节点(dead neurons)。卷积层函数,tf.nn.conv2d,TensorFlow 2 维卷积函数,参数x输入,W卷积

0评论2023-02-13932

卷积的本质及物理意义
提示:对卷积的理解分为三部分讲解1)信号的角度2)数学家的理解(外行)3)与多项式的关系1 来源卷积其实就是为冲击函数诞生的。“冲击函数”是狄拉克为了解决一些瞬间作用的物理现象而提出的符号。古人曰:“说一堆大道理不如举一个好例子”,冲量这一物理

0评论2023-02-12993

更多推荐