【cv学习笔记2】1 卷积
2018-03-07 13:57
155 查看
1 卷积定义
卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列x(n)和h(n),则卷积的结果y(n)=∑i=−∞∞x(i)h(n−i)=x(n)∗h(n)y(n)=∑i=−∞∞x(i)h(n−i)=x(n)∗h(n)
一维卷积
【例】X = [10, 1, 2, 3, 0, 3]
H= [0.4, 1, 0.5, 2] (卷积核
Kernel)
Y=X * H
。。。。。。
。。。。
import numpy as np from scipy import signal X = np.array([10, 1, 2, 3, 0, 3]) H = np.array([2, 0.5, 1, 0.4]) S = signal.convolve(X, H) print(S)
output:
[ 20. 7. 14.5 12. 3.9 9.8 2.7 3. 1.2]
二维卷积
y[i,j]=∑u=−kk∑v=−kkx[u,v]h[i−u,i−v]y[i,j]=∑u=−kk∑v=−kkx[u,v]h[i−u,i−v]【例】
import numpy as np from scipy import signal F = np.array([ [1, 2, 0, 7, 0, 3], [8, 7, 3, 4, 1, 0], [0, 3, 5, 3, 0, 1], [1, 2, 1, 7, 1, 0], [0, 0, 0, 0, 0, 1]]) H = np.array([ [-2, 1, 3], [-2, 0, 2], [1, 0, -1]]) S = signal.convolve2d(F, H, boundary='wrap',mode='valid') print(S)
output:
[[ 2 19 22 11] [-12 -10 16 22] [ 5 -10 -5 10]]
H、X的顺序是不影响结果的,S = H * X = X * H
2 图像的卷积运算
可看做是加权求和的过程,使用到的图像区域中每个像素分别与卷积核(权矩阵)的每个元素相乘,所有乘积只和作为区域中心像素的新值滤波器(卷积核)的一般要求
2D卷积需要四个循环嵌套,比较耗时,所以我们一般采用较小的卷积核,如3*3、5*5
滤波器的大小应该为奇数,如5*5 、7*7 ,这样才会有中心,7*7的核半径为3
滤波器矩阵所有的元素之和等于1,滤波前后图像的亮度保持不变。大于1,图像变亮,小于1,图像变暗
对于滤波后的结构,可能会出现0~255以外的数值。对这种情况,直接截断到0和255之间即可
边界处理
a595
当处理图像边界像素时,卷积核与图像区域不能匹配,卷积核中心与边界元素点对应,卷积运算出现问题,此时有以下几种处理方式:
1)想象I是无限长的图像的一部分,除了我们给定值的部分,其他部分的像素值都是0。
2)第二种方法也是想象I是无限图像的一部分。但没有指定的部分是用图像边界的值进行拓展。
3)第三种情况就是认为图像是周期性的。也就是I不断的重复。周期就是I的长度。在我们这里,I(0)和I(8)的值就是一样的,I(9)的值和I(1)的值也是一样的。
4)忽略边界像素(处理后的图像丢掉这些像素)
3 卷积在图像处理中的应用
均值模糊 高斯模糊高通滤波 低通滤波
图像锐化 浮雕
边缘检测
。。。
实例0
下面这个滤波器,只有中心点的值是1,邻域点的权值都是0。相当于未对图片进行变化
实例1 均值模糊
import cv2 import numpy as np img =cv2.imread("pp1.jpg") fil = np.array([[ 1/9,1/9, 1/9], [ 1/9, 1/9, 1/9], [ 1/9, 1/9, 1/9]]) res = cv2.filter2D(img,-1,fil) cv2.imshow('win',res) key_pressed=cv2.waitKey(0)
实例2 图像锐化
import cv2 import numpy as np img =cv2.imread("pp1.jpg") fil = np.array([[ -1,-1, -1], [ -1, 9, -1], [ -1, 1, -1]]) res = cv2.filter2D(img,-1,fil) cv2.imshow('win',res) key_pressed=cv2.waitKey(0)
实例3 边缘检测
其他效果
相关文章推荐
- OpenCV学习笔记-卷积边界
- Opencv2 学习笔记<一>:cv::Mat数据访问方式
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(4-2)-- 深度卷积模型
- 【python学习笔记】26:scipy卷积运算
- tensorflow 学习笔记(七)- 卷积层
- Udacity深度学习(google)笔记(3)——CNN 卷积模型
- CV | SIFTflow 学习笔记
- 深度学习阅读笔记(四)之卷积网络CNN
- UnityShader入门精要学习笔记(十九):卷积与边缘检测
- 学习笔记TF028:实现简单卷积网络
- Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解
- CNN学习笔记(二)卷积神经网络经典结构
- Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-02-基于Python的卷积运算
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-02-基于Python的卷积运算
- 学习笔记TF029:实现进阶卷积网络
- 学习笔记TF014:卷积层、激活函数、池化层、归一化层、高级层
- opencv学习笔记1:CV_MAT_ELEM_PTR与CV_MAT_ELEM的用法
- 吴恩达深度学习课程笔记之卷积神经网络基本操作详解
- openCV 学习笔记 cvFindDominantPoints找关键点