卷积神经网络——灰度图像的卷积
一、前提介绍:
卷积在图像处理中经常被用于平滑、模糊、锐化、去噪、边缘取等工作中。图像处理中的卷积操作,其实就是利用卷积核(模板)在目标图像上滑动,将图像上的像素点依次对应到卷积核的中间像素处,每个像素点对齐后将图像上的像素灰度值与卷积核对应位置上的数值相乘,然后将相乘后的所有值相加,相加的结果作为当前像素的灰度值,并最终滑动完所有图像像素点的过程。
如上图所示:最左侧矩阵是一个灰度图像,中间是一个3*3的小矩阵,称为“卷积核”或“过滤器”。
1.导包
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
2. 过程:
#图像的卷积运算
#输入参数
# image:原图像
# mfilter:滤波器
#输出参数
# convImage:卷积后的图像
3.定义卷积函数:
def ImageConvolution( image, mfilter ):mI, nI = np.shape( image )[mF, nF] = np.shape( mfilter )halfHeight = int( mF / 2 )halfWidht = int( nF / 2 )convImage = np.zeros( (mI, nI) )#卷积图像#根据滤波器长度奇偶性的不同调整扩充图像的范围if mF % 2 == 0:imData = np.pad( image, (halfWidht, halfWidht-1), 'constant' )else:imData = np.pad( image, (halfWidht, halfHeight), 'constant' )padmI, padnI = imData.shapeconvHeight = padmI - mF + 1convWidth = padnI - nF + 1#依次截取与滤波器大小相同的图像块进行内积运算for i in range( convHeight ):for j in range( convWidth ):localImage = imData[ i:i+mF, j:j+nF ] convImage[i][j] = np.sum( localImage * mfilter )convImage1 = convImage.clip( 0, 255 )return convImage1
4.根据滤波器对图像进行卷积
filter1 = [ [-1, -2, -1], [0, 0, 0], [1, 2, 1] ]imageConv = ImageConvolution( img, filter1 )plt.figure( 'filter1' )plt.imshow( imageConv, cmap = 'gray' )plt.axis( 'off' )filter2 = [ [1, -1], [1, -1] ]imageConv = ImageConvolution( img, filter2 )plt.figure( 'filter2' )plt.imshow( imageConv, cmap = 'gray' )plt.axis( 'off' )filter3 = [ [-1, 1, 1, -1], [-1, 1, 1, -1], [-1, 1, 1, -1], [-1, 1, 1, -1] ]imageConv = ImageConvolution( img, filter3 )plt.figure( 'filter3' )plt.imshow( imageConv, cmap = 'gray' )plt.axis( 'off' ) if __name__ == '__main__':main()
结果:
卷积神经网络——灰度图像的卷积相关推荐
- xml文件 卷积神经网络_理解卷积神经网络中的输入与输出形状(Keras实现)
即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑.本文章将帮助你理解卷积神经网络的输入和输出形状. 让我们看看一个例子.CNN ...
- 卷积神经网络四种卷积类型
卷积神经网络四种卷积类型 https://www.toutiao.com/a6631333810287936013/ 一般卷积 首先,我们需要就定义卷积层的一些参数达成一致. 卷积核大小(Kernel ...
- 04.卷积神经网络 W2.深度卷积网络:实例探究(作业:Keras教程+ResNets残差网络)
文章目录 作业1:Keras教程 1. 快乐的房子 2. 用Keras建模 3. 用你的图片测试 4. 一些有用的Keras函数 作业2:残差网络 Residual Networks 1. 深层神经网 ...
- 花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层
目录 0. 前言 1. 2D 图像卷积 2. 3D 图像卷积 3. 过滤器(核函数) 4. 过滤器应用于边缘检测 5. padding 填充 6. stride 步长 7. 使用卷积的动机 8. 1乘 ...
- 神经网络与卷积神经网络,什么是卷积神经网络
前馈神经网络.BP神经网络.卷积神经网络的区别与联系 一.计算方法不同1.前馈神经网络:一种最简单的神经网络,各神经元分层排列.每个神经元只与前一层的神经元相连.接收前一层的输出,并输出给下一层.各层 ...
- 图卷积神经网络3-空域卷积:GNN/GraphSAGE/PGC的引入和介绍
知乎主页https://www.zhihu.com/people/shuang-shou-cha-dai-53https://www.zhihu.com/people/shuang-shou-cha- ...
- 图卷积神经网络4-空域卷积:空域卷积局限性分析和过平滑解决方案
知乎主页https://www.zhihu.com/people/shuang-shou-cha-dai-53https://www.zhihu.com/people/shuang-shou-cha- ...
- 卷积神经网络(2D卷积神经网络和3D卷积神经网络理解)
前言 卷积神经⽹络(convolutional neural network,CNN)是⼀类强⼤的神经⽹络,正是为处理图像 数据而设计的.基于卷积神经⽹络结构的模型在计算机视觉领域中已经占主导地位,当 ...
- 一维卷积神经网络结构图,一维卷积神经网络原理
1.卷积神经网络算法是什么? 一维构筑.二维构筑.全卷积构筑. 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Fe ...
- 描述卷积神经网络的结构,卷积神经网络三大特点
什么是卷积神经网络?为什么它们很重要 卷积神经网络(ConvolutionalNeuralNetwork,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理 ...
最新文章
- 分屏如何保持运行状态_摊铺机熨平板如何保持稳定的工作状态?
- 用 Python 和 OpenCV 检测图片上的条形码Detecting Barcodes in Images with Python and OpenCV
- Mongodb 自动增长 自增id 实现
- Selenium介绍
- Java中lastValue_在Logstash中为sql_last_value使用表的ID?
- 加密的病历单(信息学奥赛一本通-T1137)
- 网易严选退出双十一:“抵制”鼓吹过度消费
- DIY高清云台(吊舱)方案
- python包导入细节_python 如何上传包到pypi
- java word checkbox_springmvc poi 导出word 复选框 怎么用
- 12个开源的后台端管理系统
- 蛋花花谈程序员怎样快速提升自己的专业能力
- STM32时钟简介及系统时钟频率的更改方式
- h5 invoke android,uniapp安卓版本11.0.0以上真机调试App: onLaunch have been invoked
- Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
- 照片尺寸怎么修改,3大工具推荐
- 如何利用计算机隐藏文件,如何查找隐藏的计算机文件夹
- 今天来详细说一说贴片三极管
- zbrush变化目标(Morph Target)子调控板解释
- 4-5 实现其他菜单项(Implementing the Other Menus)
热门文章
- 什么是ribbon?
- 在c语言中是闰年的条件为,C语言如何判断是闰年,闰年判断条件?
- java根据ip地址获取详细地域信息
- 修复 Fontconfig Error
- sap税码配置_SAP那些事-技巧篇-42-Billing plan预收款税码问题
- 一项采用MasimoO3(R)的前瞻性研究就通气抢救疗法对COVID-19患者脑氧合的效应进行了深入探查
- 本地iis部署之后网页无法打开
- Vue----.stop、.prevent、.capture、.self用法以及.stop和.self的区别
- Windows Server 2016 (Updated Feb 2018) (x64)下载
- OutMan——C语言中的冒泡排序、选择排序、折半查找以及指针的介绍