我创建了一个知乎圈子:【平凡而诗意】,专注于分享前沿技术、编程开发、实用工具等方面内容,感兴趣的可以首页搜索【平凡而诗意】加入我的圈子,让我们一起玩耍吧!QQ学习交流群:1077239487

平凡而诗意 - 知乎​www.zhihu.com​www.zhihu.com

QQ学习交流群:1077239487


前言

很多人想入门AI,可是AI包含很多方向,我建议首先应该明确的选择一个方向,然后有目标、有针对的去学习。

计算机视觉作为目前AI领域研究较多、商业应用较为成功的一个方向,这几年也是非常火热,无论是学术界还是企业界,学术界有CVPR、ICCV、ECCV等顶刊,企业界对计算机视觉领域的人口需求也非常的大,因此,我从计算机视觉这个方向开始着手AI教程。

介绍

最近几年计算机视觉非常火,也出现了很多成熟的卷积神经网络模型,比如R-CNN系列、SSD、YOLO系列,而且,这些模型在github上也有很多不错的开源代码,所以,很多入门计算机视觉的人会早早的克隆下开源代码、利用tensorflow或pytorch搭建计算机视觉平台进行调试。

我个人不推崇这种方式,我更推崇对图像底层的技术有一些了解,比如图像去噪、图像分割等技术,这有几点好处:

  • 对图像内部的结构有更清晰的认识
  • 这些技术可以用于计算机视觉预处理或后处理,能够有助于提高计算机视觉模型精度

第一讲,我从图像去噪开始说起,图像去噪是指减少图像中造成的过程。现实中的图像会受到各种因素的影响而含有一定的噪声,噪声主要有以下几类:

  • 椒盐噪声
  • 加性噪声
  • 乘性噪声
  • 高斯噪声

图像去噪的方法有很多种,其中均值滤波、中值滤波等比较基础且成熟,还有一些基于数学中偏微分方程的去噪方法,此外,还有基于频域的小波去噪方法。均值滤波、中值滤波这些基础的去噪算法以其快速、稳定等特性,在项目中非常受欢迎,在很多成熟的软件或者工具包中也集成了这些算法,下面,我们就来一步一步实现以下。

编程实践

完整代码地址:
https://github.com/jakpopc/aiLearnNotes/blob/master/computer_vision/image_denoising.py
requirement:scikit-image/opencv/numpy

首先读取图像,图像来自于voc2007:

img 

生成噪声图像,就是在原来图像上加上一些分布不规律的像素值,可以自己用随机数去制造噪声,在这里,就用Python第三方库scikit-image的random_noise添加噪声:

方法1:

noise_img 

mode是可选参数:分别有'gaussian'、'localvar'、'salt'、'pepper'、's&p'、'speckle',可以选择添加不同的噪声类型。

方法2:

也可以自己生成噪声,与原图像进行加和得到噪声图像:

def 

最后是图像去噪,图像去噪的算法有很多,有基于偏微分热传导方程的,也有基于滤波的,其中基于滤波的以其速度快、算法成熟,在很多工具包中都有实现,所以使用也就较多,常用的滤波去噪算法有以下几种:

  • 中值滤波
  • 均值滤波
  • 高斯滤波

滤波的思想和这两年在计算机视觉中用的较多的卷积思想类似,都涉及窗口运算,只是卷积是用一个卷积核和图像中对应位置做卷积运算,而滤波是在窗口内做相应的操作,

以均值滤波为例,

对图像中每个像素的像素值进行重新计算,假设窗口大小ksize=3,图像中棕色的"5"对应的像素实在3*3的邻域窗口内进行计算,对于均值滤波就是求3*3窗口内所有像素点的平均值,也就是

同理,对于中值滤波就是把窗口内像素按像素值大小排序求中间值,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到,

下面开始编写去噪部分的代码:

方法1:

可以使用opencv这一类工具进行去噪:

# 中值滤波

方法2:

编程一步一步实现图像去噪,首先是计算窗口邻域内的值,这里以计算中值为例:

def 

然后是去噪部分,对每个像素使用compute_pixel_value函数计算新像素的值:

def 


感兴趣的可以关注公众号"平凡而诗意",共享了一些机器学习、计算机视觉等方面的教材电子版、文章、资源等。

C++ 偏微分数值计算库_【动手学计算机视觉】第一讲:图像预处理之图像去噪...相关推荐

  1. C++ 偏微分数值计算库_一文带你了解计算流体力学CFD及其应用领域

    计算流体力学的发展 计算流体动力学(Computational Fluid Dynamics)简写为CFD,经过半个世纪的迅猛发展,这门学科已经是相当的成熟了,一个重要的标志就是近几十年来,各种CFD ...

  2. C++ 偏微分数值计算库_蒙特卡罗计算积分 - 人工智能遇见磐创

    作者|Cory Maklin 编译|VK 来源|Towards Datas Science 通常情况下,我们不能解析地求解积分,必须借助其他方法,其中就包括蒙特卡罗积分.你可能还记得,函数的积分可以解 ...

  3. 一阶微分算子锐化图像_【动手学计算机视觉】第三讲:图像预处理之图像分割...

    本讲完整代码>> 前言 图像分割是一种把图像分成若干个独立子区域的技术和过程.在图像的研究和应用中,很多时候我们关注的仅是图像中的目标或前景(其他部分称为背景),它们对应图像中特定的.具有 ...

  4. 动手学ocr·十讲--学习笔记一

    动手学ocr·十讲 技术导论 课程链接请点击这里 1.1 OCR技术背景: OCR是什么 OCR(Optical Character Recognition,光学字符识别)是计算机视觉重要方向之一.传 ...

  5. 从零学前端第一讲:前端开发是什么?给初学者有什么建议?

    这里是修真院前端小课堂,本篇分析的主题是 [从零学前端第一讲:前端开发是什么?给初学者有什么建议?] 初识前端 1.前端开发是什么? 2.前端开发有前途吗? 3.前端开发哪里学? 4.前端发展 5.对 ...

  6. 动手学深度学习之图像风格迁移

    参考伯禹学习平台<动手学深度学习>课程内容内容撰写的学习笔记 原文链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/less ...

  7. 卷积核和全连接层的区别_「动手学计算机视觉」第十六讲:卷积神经网络之AlexNet...

    前言 前文详细介绍了卷积神经网络的开山之作LeNet,虽然近几年卷积神经网络非常热门,但是在LeNet出现后的十几年里,在目标识别领域卷积神经网络一直被传统目标识别算法(特征提取+分类器)所压制,直到 ...

  8. dqn在训练过程中loss越来越大_[动手学强化学习] 2.DQN解决CartPole-v0问题

    强化学习如何入门: 强化学习怎么入门好?​www.zhihu.com 最近在整理之前写的强化学习代码,发现pytorch的代码还是老版本的. 而pytorch今年更新了一个大版本,更到0.4了,很多老 ...

  9. C++ 偏微分数值计算库_SymPy 符号计算基本教程

    SymPy 是一个由 Python 语言编写的符号计算库.我将在本文中简要地介绍如何利用 SymPy 进行符号计算.在介绍 SymPy 之前,我们首先要明确何谓符号计算?计算机代数系统又是什么? 什么 ...

最新文章

  1. android studio gradle 配置
  2. JMS - QueueBrowser
  3. Github issue里MVP和Stretch label的区别
  4. 让自己的user能够看到S4 product master这个tile
  5. python[进阶] 6.使用一等函数实现设计模式
  6. java 动态代理范例 InvocationHandler与Proxy
  7. Windows系统中常见的进程DOS操作命令
  8. YaoLingJump开发者日志(四)
  9. [Effective JavaScript 笔记] 第7条:视字符串为16位的代码单元序列
  10. Pr剪辑上分攻略 -- 动漫电影混剪
  11. AXURE版富文本输入框(富文本编辑器)教程+下载
  12. 计算机磁盘管理没有打开方式,Win10系统双击磁盘和文件夹打不开提示没有与之关联的程序怎么办...
  13. 迷你星球java,如何用手机制作迷你星球?迷你星球制作方法演示
  14. 0005 键盘打字如何练成像黑客一样的飞速
  15. antd table 设置固定高度
  16. 关系型数据库与NoSql数据库的优缺点
  17. Auto病毒专杀工具常见问题
  18. 单文件程序制作一键通三合一 v5.10 杏雨梨云版
  19. 详细解读Modbus RTU、Modbus ASCII、Modbus TCP的区别
  20. java遍历List数据的三种写法

热门文章

  1. 一例IBM服务器Raid磁盘阵列故障
  2. Pacbio三代基因组组装简介
  3. (邓爱萍)Java抽象 继承 接口
  4. Python基础语法学习笔记
  5. 第三代DNA测序及其相关生物信息学技术发展概况
  6. js监听audio播放完毕
  7. 【ES6】变量的解构赋值
  8. 车辆检测--A Closer Look at Faster R-CNN for Vehicle Detection
  9. LeetCode 3. Longest Substring Without Repeating Characters-- c++,java,python解法
  10. 计算机在线声音,电脑怎么在线录音