Python函数卷积 python的卷积函数

2021-02-08 Python OpenCV GaussianBlur()函数borderType= None)函数
此函数利用高斯滤波器平滑一张图像 。该函数将源图像与指定的高斯核进行卷积 。
src:输入图像
ksize:(核的宽度,核的高度) , 输入高斯核的尺寸,核的宽高都必须是正奇数 。否则,将会从参数sigma中计算得到 。
dst:输出图像,尺寸与输入图像一致 。
sigmaX:高斯核在X方向上的标准差 。
sigmaY:高斯核在Y方向上的标准差 。默认为None , 如果sigmaY=0,则它将被设置为与sigmaX相等的值 。如果这两者都为0,则它们的值会从ksize中计算得到 。计算公式为:
borderType:像素外推法,默认为None(参考官方文档 BorderTypes
)
在图像处理中 , 高斯滤波主要有两种方式:
1.窗口滑动卷积
2.傅里叶变换
在此主要利用窗口滑动卷积 。其中二维高斯函数公式为:
根据上述公式 , 生成一个3x3的高斯核,其中最重要的参数就是标准差,标准差越大,核中心的值与周围的值差距越?。?曲线越平滑 。标准差越?。?核中心的值与周围的值差距越大,曲线越陡峭 。
从图像的角度来说,高斯核的标准差越大,平滑效果越不明显 。高斯核的标准差越?。交Ч矫飨?。
可见 , 标准差越大,图像平滑程度越大
参考博客1:关于GaussianBlur函数
参考博客2:关于高斯核运算
怎样用python构建一个卷积神经网络?用keras框架较为方便
首先安装anaconda,然后通过pip安装keras
1、#导入各种用到的模块组件
from __future__ import absolute_import
from __future__ import print_function
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers.advanced_activations import PReLU
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.optimizers import SGD, Adadelta, Adagrad
from keras.utils import np_utils, generic_utils
from six.moves import range
from data import load_data
import random
import numpy as np
np.random.seed(1024)# for reproducibility
2、 。#打乱数据
index = [i for i in range(len(data))]
random.shuffle(index)
data = https://www.04ip.com/post/data[index]
label = label[index]
print(data.shape[0], ' samples')
#label为0~9共10个类别,keras要求格式为binary class matrices,转化一下,直接调用keras提供的这个函数
label = np_utils.to_categorical(label, 10)
###############
#开始建立CNN模型
###############
#生成一个model
model = Sequential()
3、#第一个卷积层 , 4个卷积核,每个卷积核大小5*5 。1表示输入的图片的通道,灰度图为1通道 。
#border_mode可以是valid或者full,具体看这里说明:
#激活函数用tanh
#你还可以在model.add(Activation('tanh'))后加上dropout的技巧: model.add(Dropout(0.5))
model.add(Convolution2D(4, 5, 5, border_mode='valid',input_shape=(1,28,28)))
model.add(Activation('tanh'))
#第二个卷积层,8个卷积核,每个卷积核大小3*3 。4表示输入的特征图个数,等于上一层的卷积核个数
4、全连接层,先将前一层输出的二维特征图flatten为一维的 。
#Dense就是隐藏层 。16就是上一层输出的特征图个数 。4是根据每个卷积层计算出来的:(28-5+1)得到24,(24-3+1)/2得到11,(11-3+1)/2得到4
#全连接有128个神经元节点,初始化方式为normal
model.add(Flatten())
model.add(Dense(128, init='normal'))
model.add(Activation('tanh'))
#Softmax分类,输出是10类别

推荐阅读