C++ 偏微分数值计算库_【动手学计算机视觉】第一讲:图像预处理之图像去噪...
我创建了一个知乎圈子:【平凡而诗意】,专注于分享前沿技术、编程开发、实用工具等方面内容,感兴趣的可以首页搜索【平凡而诗意】加入我的圈子,让我们一起玩耍吧!QQ学习交流群:1077239487
平凡而诗意 - 知乎www.zhihu.comwww.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++ 偏微分数值计算库_【动手学计算机视觉】第一讲:图像预处理之图像去噪...相关推荐
- C++ 偏微分数值计算库_一文带你了解计算流体力学CFD及其应用领域
计算流体力学的发展 计算流体动力学(Computational Fluid Dynamics)简写为CFD,经过半个世纪的迅猛发展,这门学科已经是相当的成熟了,一个重要的标志就是近几十年来,各种CFD ...
- C++ 偏微分数值计算库_蒙特卡罗计算积分 - 人工智能遇见磐创
作者|Cory Maklin 编译|VK 来源|Towards Datas Science 通常情况下,我们不能解析地求解积分,必须借助其他方法,其中就包括蒙特卡罗积分.你可能还记得,函数的积分可以解 ...
- 一阶微分算子锐化图像_【动手学计算机视觉】第三讲:图像预处理之图像分割...
本讲完整代码>> 前言 图像分割是一种把图像分成若干个独立子区域的技术和过程.在图像的研究和应用中,很多时候我们关注的仅是图像中的目标或前景(其他部分称为背景),它们对应图像中特定的.具有 ...
- 动手学ocr·十讲--学习笔记一
动手学ocr·十讲 技术导论 课程链接请点击这里 1.1 OCR技术背景: OCR是什么 OCR(Optical Character Recognition,光学字符识别)是计算机视觉重要方向之一.传 ...
- 从零学前端第一讲:前端开发是什么?给初学者有什么建议?
这里是修真院前端小课堂,本篇分析的主题是 [从零学前端第一讲:前端开发是什么?给初学者有什么建议?] 初识前端 1.前端开发是什么? 2.前端开发有前途吗? 3.前端开发哪里学? 4.前端发展 5.对 ...
- 动手学深度学习之图像风格迁移
参考伯禹学习平台<动手学深度学习>课程内容内容撰写的学习笔记 原文链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/less ...
- 卷积核和全连接层的区别_「动手学计算机视觉」第十六讲:卷积神经网络之AlexNet...
前言 前文详细介绍了卷积神经网络的开山之作LeNet,虽然近几年卷积神经网络非常热门,但是在LeNet出现后的十几年里,在目标识别领域卷积神经网络一直被传统目标识别算法(特征提取+分类器)所压制,直到 ...
- dqn在训练过程中loss越来越大_[动手学强化学习] 2.DQN解决CartPole-v0问题
强化学习如何入门: 强化学习怎么入门好?www.zhihu.com 最近在整理之前写的强化学习代码,发现pytorch的代码还是老版本的. 而pytorch今年更新了一个大版本,更到0.4了,很多老 ...
- C++ 偏微分数值计算库_SymPy 符号计算基本教程
SymPy 是一个由 Python 语言编写的符号计算库.我将在本文中简要地介绍如何利用 SymPy 进行符号计算.在介绍 SymPy 之前,我们首先要明确何谓符号计算?计算机代数系统又是什么? 什么 ...
最新文章
- android studio gradle 配置
- JMS - QueueBrowser
- Github issue里MVP和Stretch label的区别
- 让自己的user能够看到S4 product master这个tile
- python[进阶] 6.使用一等函数实现设计模式
- java 动态代理范例 InvocationHandler与Proxy
- Windows系统中常见的进程DOS操作命令
- YaoLingJump开发者日志(四)
- [Effective JavaScript 笔记] 第7条:视字符串为16位的代码单元序列
- Pr剪辑上分攻略 -- 动漫电影混剪
- AXURE版富文本输入框(富文本编辑器)教程+下载
- 计算机磁盘管理没有打开方式,Win10系统双击磁盘和文件夹打不开提示没有与之关联的程序怎么办...
- 迷你星球java,如何用手机制作迷你星球?迷你星球制作方法演示
- 0005 键盘打字如何练成像黑客一样的飞速
- antd table 设置固定高度
- 关系型数据库与NoSql数据库的优缺点
- Auto病毒专杀工具常见问题
- 单文件程序制作一键通三合一 v5.10 杏雨梨云版
- 详细解读Modbus RTU、Modbus ASCII、Modbus TCP的区别
- java遍历List数据的三种写法
热门文章
- 一例IBM服务器Raid磁盘阵列故障
- Pacbio三代基因组组装简介
- (邓爱萍)Java抽象 继承 接口
- Python基础语法学习笔记
- 第三代DNA测序及其相关生物信息学技术发展概况
- js监听audio播放完毕
- 【ES6】变量的解构赋值
- 车辆检测--A Closer Look at Faster R-CNN for Vehicle Detection
- LeetCode 3. Longest Substring Without Repeating Characters-- c++,java,python解法
- 计算机在线声音,电脑怎么在线录音