使用 Python 进行卷积?
图像识别过去常常使用更简单的方法,例如线性回归和相似性比较。结果显然不太好,即使是识别手写字母这样简单的任务也证明很困难。卷积神经网络 (CNN) 旨在通过提供一种计算成本低廉的方法来模拟人脑感知图像时的神经活动,从而超越我们传统的方法。
卷积神经网络概述

与我们识别不同物体的方式非常相似,计算机算法需要遍历数百万张图像,才能能够概括输入并对其从未见过的图像做出判断。
计算机将每张图像都视为数字的二维数组,称为像素。为了识别图像中的物体,计算机使用一种特殊的人工神经网络:卷积神经网络 (CNN)。CNN 的名称来源于网络中最重要的操作之一:卷积。
在卷积神经网络中,每一层都组织成宽度、高度和深度。卷积是 CNN 的主要部分,它组合两个函数以创建第三个函数(合并两组信息)。这意味着考虑一个(图像)卷积,我们只需将两个矩阵逐元素相乘,然后求和。
卷积是图像处理中的一个三步过程 -
我们获取输入图像。
我们将应用于输入图像的内核矩阵。
以及用于存储输入图像与内核卷积输出的最终图像。
下面是使用 opencv 实现 Sobel 滤波器的小例子,Sobel 滤波器是一种用于边缘检测的图像处理滤波器。
示例代码
import cv2
import numpy as np
img = cv2.imread('beach.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY).astype(float)
edge_x = cv2.Sobel(img,cv2.CV_64F,1,0,ksize = 3)
edge_y = cv2.Sobel(img,cv2.CV_64F,0,1,ksize = 3)
edge = np.sqrt(edge_x ** 2 + edge_y ** 2)
# image can be normalized to
# fit into 0..255 color space
cv2.imwrite('beach_convol.jpg', edge)输入图像

输出图像

广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP