卷积核

为什么需要卷积操作

1、特征提取

使用特定的卷积核,能够提取出图片数据特定方向的信息

卷积操作即是对图像的像素点进行乘运算 并将结果矩阵的所有值求和得出一个数的结果

image

此处 input 即是一个 55 像素大小的图片 使用一个 33 矩阵对图片最左上角 9 个像素点进行卷积运算(乘)矩阵算法1

依次从坐标 0,0 ,3,3 --> 1,0,4,3 计算 9 次

image

最终得出 9 个结果 并按顺序排列即可得 33 矩阵
此处暴力推导出结果 3
3 矩阵特征之一 33 矩阵与任何图像计算后 原图像大小变为 长宽少 2 像素的新图像(特征)
新图像的所有像素点(大小 3
3)与原图像(大小 5*5)拥有抽象的映射关系 对于减少计算量 简单化复杂特征是非常必要的

相当于使用卷积操作压缩了图像大小 提取了某种符合卷积核的抽象信息 所以某些时候这些卷积核也叫滤波器 用于提取某种类型的图片信息

在某些时候我们不想特征缩小 即引入填充和步长的概念 填充 步长2

image

此处以提取边缘信息的卷积核为例 示例图image

解释下这个核 提取向右的特征数据

image

相反的还有提取向左的特征数据

image

向下趋度

image

像上趋度

image

四个方向的趋度合并即可获取物体轮廓特征

下载 4

强化边缘信息 1

\left\vert1,1,1\right\vert

\left\vert1,0,1\right\vert

\left\vert1,1,1\right\vert

image

强化边缘信息 2

\left\vert0,0,0\right\vert

\left\vert0,8,0\right\vert

\left\vert0,0,0\right\vert

image

其实已经可以看出 从矩阵的数字规律就可大致得出卷积核的作用

数值大的一方得到强化 数值小的一方被减弱 数值为负的的特征数值越大则抑制越重

附上一个可以在线测试卷积效果的网址

Image Kernels explained visually

代码部分

import cv2
import numpy as np
import matplotlib.pyplot as plt


if __name__ == '__main__':


    # 读取图像
    image = cv2.imread('C:/Users/jm/Pictures/0eRWZ7.jpg', cv2.IMREAD_GRAYSCALE)

    kernel = np.array([[-1, 0, 1],
                       [-1, 0, 1],
                       [-1, 0, 1]])
    # 对图像提取向右特征
    right_image = cv2.filter2D(image, -1, kernel)

    kernel = np.array([[1, 0, -1],
                       [1, 0, -1],
                       [1, 0, -1]])
    # 对图像提取向左特征
    left_image = cv2.filter2D(image, -1, kernel)

    kernel = np.array([[1, 1, 1],
                       [0, 0, 0],
                       [-1, -1, -1]])
    # 对图像提取向上特征
    top_image = cv2.filter2D(image, -1, kernel)

    kernel = np.array([[-1, -1, -1],
                       [0, 0, 0],
                       [1, 1, 1]])
    # 对图像提取向下特征
    bottom_image = cv2.filter2D(image, -1, kernel)

    # 合并所有方向特征 获取轮廓信息
    combined_image = cv2.addWeighted(cv2.addWeighted(left_image, 0.5, right_image, 0.5, 0),
                                     0.5,
                                     cv2.addWeighted(top_image, 0.5, bottom_image, 0.5, 0),
                                     0.5,
                                     0)

    # 显示原始图像和卷积后的图像
    plt.figure(figsize=(8, 5))

    plt.subplot(3, 4, 5)
    plt.title('Original Image')
    plt.imshow(image, cmap='gray')
    plt.axis('off')

    plt.subplot(3, 4, 6)
    plt.title('left_image Image')
    plt.imshow(left_image, cmap='gray')
    plt.axis('off')

    plt.subplot(3, 4, 8)
    plt.title('Right Image')
    plt.imshow(right_image, cmap='gray')
    plt.axis('off')

    plt.subplot(3, 4, 3)
    plt.title('top_image Image')
    plt.imshow(top_image, cmap='gray')
    plt.axis('off')

    plt.subplot(3, 4, 11)
    plt.title('bottom_image Image')
    plt.imshow(bottom_image, cmap='gray')
    plt.axis('off')

    plt.subplot(3, 4, 7)
    plt.title('Combined Image')
    plt.imshow(combined_image, cmap='gray')
    plt.axis('off')

    plt.tight_layout()
    plt.show()

image


  1. 矩阵算法

    简单数相乘 等于乘数乘以每个矩阵制

                      $\left\vert a,b,c\right\vert$         $\left\vert3\times a,3\times b,3\times c\right\vert$
    
            3    $\times$ $\left\vert d,e,f\right\vert$   =  $\left\vert3\times d,3\times e,3\times f\right\vert$  
    
                      $\left\vert g,h,i\right\vert$         $\left\vert3\times g,3\times h,3\times i\right\vert$
    

    矩阵与矩阵乘法 对应位置相乘即可

    \left\vert A,B,C\right\vert \left\vert a,b,c\right\vert \left\vert A\times a,B\times b,C\times c\right\vert

    \left\vert D,E,F\right\vert \times \left\vert d,e,f\right\vert = \left\vert D\times d,E\times e,F\times f\right\vert

    \left\vert G,H,I\right\vert \left\vert g,h,i\right\vert \left\vert G\times g,H\times h,I\times i\right\vert

    加法减法等相同

    矩阵与矩阵点乘 等于第 n 行乘第 n 列 依次计算

    	                                     $\left\vert a,b,c\right\vert$            $\left\vert a,b,c\right\vert$             $\left\vert a,b,c\right\vert$
    
             			            $A\times\left\vert d,e,f\right\vert$   $B\times\left\vert d,e,f\right\vert$    C $\times$ $\left\vert d,e,f\right\vert$
    
           			                     $\left\vert g,h,i\right\vert$            $\left\vert g,h,i\right\vert$            $\left\vert g,h,i\right\vert$
    

    \left\vert A,B,C\right\vert \left\vert a,b,c\right\vert \left\vert a,b,c\right\vert \left\vert a,b,c\right\vert \left\vert a,b,c\right\vert

    \left\vert D,E,F\right\vert \times \left\vert d,e,f\right\vert = D\times\left\vert d,e,f\right\vert E\times\left\vert d,e,f\right\vert F\times\left\vert d,e,f\right\vert

    \left\vert G,H,I\right\vert \left\vert g,h,i\right\vert \left\vert g,h,i\right\vert \left\vert g,h,i\right\vert \left\vert g,h,i\right\vert

    	                                     $\left\vert a,b,c\right\vert$             $\left\vert a,b,c\right\vert$               $\left\vert a,b,c\right\vert$
    
             			            $G\times\left\vert d,e,f\right\vert$   $H\times\left\vert d,e,f\right\vert$      $I\times\left\vert d,e,f\right\vert$
    
           			                     $\left\vert g,h,i\right\vert$             $\left\vert g,h,i\right\vert$               $\left\vert g,h,i\right\vert$  
    
  2. 填充 步长

  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 51 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 724 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖 • 1 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    408 引用 • 3574 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 2 关注
  • abitmean

    有点意思就行了

    29 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 2 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖 • 1 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 488 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 6 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 47 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 510 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 700 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    75 引用 • 1737 回帖 • 5 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1705 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 73 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 670 关注
  • 导航

    各种网址链接、内容导航。

    40 引用 • 173 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 4 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 595 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 1 关注