首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python科学计算教程

  • 25-02-18 12:21
  • 4242
  • 5502
blog.csdn.net

2024年,微小冷对Python科学计算技术进行了总结,并在科学计算、可视化、图像处理、点云处理等方面,以快速入门为目的,挑选出学习过程中最核心的知识主线,写成麻雀虽小五脏俱全的教程。

文章目录

  • 可视化
    • 1 可视化初步
    • 2 子图绘制
    • 3 坐标投影
    • 4 刻度设置
    • 5 共享坐标
    • 6 颜色填充
    • 7 文字和字体
    • 8 伪彩图和等高线图
    • 9 三维绘图
    • 10 动态绘图
  • 科学计算
    • 数组
    • 数据生成
    • 读写二进制和文本文件
    • 微积分
    • 插值
    • 数据拟合
    • 傅里叶变换
    • 卷积
    • 滤波
    • 基础统计
    • 线性代数
  • 图像处理
    • 1 初步
    • 2 光斑分析
    • 3 插值变换
    • 4 形态学处理
    • 5 滤波
    • 6 opencv初步
    • 7 相机校准
    • 8 图像分割
    • 9 边缘检测
    • 10 目标识别
  • 点云处理
    • 1 Open3d 初步
    • 2 点云变换
    • 3 点云配准
    • 4 曲面处理
    • 5 点云分割

可视化

1 可视化初步

  • Python可视化初步

本讲先通过曲线绘图的基本案例,引入Python可视化的最简实践,接下来着重讲解两个内容

  1. Python绘制图像的基本流程:包括创建绘图窗口(fig)、添加绘图坐标系(ax)、在坐标系上绘制曲线、以及调用show显示图像。
  2. 图像中肉眼可见的设计元素,比如点型、线型、颜色、图例等。

在这里插入图片描述

2 子图绘制

  • 子图绘制

本讲由浅入深,介绍了三种子图的布局方案

  1. 最简单的通过三个数字指定的规整的网格布局
  2. 多种不同分割方式的网格,一起完成一次布局
  3. 基于GridSpec,指定网格单元格的宽高比例,实现更灵活的子图布局,如让一个子图占据2/3的宽度。

在这里插入图片描述

3 坐标投影

  • 坐标投影

所谓坐标投影,就是该便绘图内容在图窗中的透视,从而完成3D图像、极坐标以及地理空间映射等绘图需求。本节针对这三种情况,分别予以案例演示

  1. 三维坐标系下的曲线图:介绍了如何使用projection参数创建三维坐标系,以及 z z z轴的投影方法,并绘制三维曲线图。
  2. 极坐标系下的曲线图:通过设置projection为polar,可以绘制极坐标系下的曲线图。
  3. 地理坐标系下的曲线图:介绍了matplotlib支持的多种地理坐标系,并展示了如何使用不同的地理坐标系绘制世界地图。举例说明了不同的地理坐标系对世界地图的投影效果。

在这里插入图片描述

4 刻度设置

  • 刻度设置

本节将目光聚焦到图像的刻度轴设置问题上,并着重讲解了四种刻度映射方案

  1. 将坐标轴映射为对数坐标
  2. 用自定义函数来重新映射坐标轴
  3. 重置刻度,用更加灵活的列表或者字符串来标记坐标轴
  4. 取消坐标轴
    在这里插入图片描述

5 共享坐标

  • 共享坐标轴

本节针对多坐标轴的设置进行了讲解,着重讲解三种情况

  1. 一个子图中的多组数据,彼此之间相差过大,从而设置多组坐标轴
  2. 一组数据,两套坐标,比如角度和弧度,从而需要设置多组数据。
  3. 多个子图之间存在坐标尺度上的关联,从而需要共享坐标轴。
    在这里插入图片描述

6 颜色填充

  • 颜色填充

本节针对常见的绘图元素——填充,进行展开说明,通过三个案例来透彻地讲解Python在绘图时遇到的颜色填充问题,并且从实用性出发,对回归图这种综合绘图类型予以示例。
在这里插入图片描述

7 文字和字体

  • 文字和字体

本讲对图像中的字体设置进行了集中讲解,使得在绘图窗口中添加文字注释成为可能。
在这里插入图片描述

8 伪彩图和等高线图

  • 伪彩图和等高线图

前面几讲的内容,主要集中在曲线图的绘制,学会了曲线图,也就学会了一系列与曲线图逻辑相似的图像表达。而本讲则针对另一种绘图逻辑进行讲解,此即类矩阵图像。

除了这种绘图类型之外,还讲解了colorbar的设置方法,使得灵活设置colorbar成为矩阵图的标配。

在这里插入图片描述

9 三维绘图

  • 3D

尽管在讲解坐标投影时,已经提到了通过坐标映射的方式来绘制三维图像的方法,但并没有展开讲解三维图像的类型。本节针对三维散点图、曲面图、网格图以及三角面图进行了示例介绍,通过三个案例,来掌握三维绘图的方法。
在这里插入图片描述

10 动态绘图

  • 动态绘图

本节是Python可视化的最后一讲,也是Matplotlib绘图中最炫酷的部分,动态绘图。本节通过三个案例,来由浅入深地讲解了Python动态绘图的主干。并且重点讲解animate绘制动图时的函数调用逻辑。

在这里插入图片描述

科学计算

数组

  • ?数组

numpy是python中最常用的科学计算包,而数组则是是numpy的核心类型,也是Python称为科学计算领域首选语言的关键类型,可以不夸张地说,正是数组类型的强大与易用性,筑就了Python帝国。本节作为一个番外,或者说预备知识,介绍一些数组中最基础的概念和操作。

数据生成

  • ?数据生成

正所谓巧妇难为无米之炊,没有数据,也就没法对数据进行分析,从而数值计算也就成了无根之木了。所以,本节就介绍一些数据生成方法,主要分为两种数据

  1. 常见序列,比如自然数列、等差数列、等比数列
  2. 常用矩阵,比如单位阵、对角阵、坐标网格等

在这里插入图片描述

读写二进制和文本文件

  • ?读写二进制和文本文件

在实际工作中,很多数据是由其他软硬件设备产生的,如果想要处理,就要学会读取。如果处理结果需要保存,那么也需要将Python内存中的数据写入到硬盘上。numpy中提供了一些文件交互函数,用于外部数据的读取和存储。本节介绍三种数据类型的读写操作

  • 文本文件
  • 二进制文件
  • numpy的二进制文件:npy

微积分

  • ?微积分

微积分是现代科学最基础的数学工具,而其离散形式就是差分和求和。本文除了讲解差分、求和之外,还对积分、多重积分的精确数值求解函数进行了讲解。

在这里插入图片描述

插值

  • ?插值

插值的目的是估计或“插”出一个函数在某些未知点上的值,这些未知点位于已知数据点的范围内,常用于填充空白数据,以便进行更平滑的数据分析和可视化。本文介绍了一元插值和多元插值,并且对不同次数的插值效果进行了对比,诸如零次插值、线性插值、二次插值、三次插值等。

在这里插入图片描述

数据拟合

  • ?拟合

所谓数据拟合,就是用一个系数待定的函数表达式,尽可能地逼近给定的一组数据。本节由浅入深地介绍了多项式拟合、非线性拟合以及多元非线性拟合。

在这里插入图片描述

傅里叶变换

  • ?FFT

傅里叶变换是一种重要的数学工具,是信号处理的基石,通过时域和频域的相互转换,将一个复杂的信号分解为一系列三角函数的叠加。文章解释了如何使用傅里叶变换将复杂信号分解为三角函数,并展示了如何通过滤波和频域分析来处理信号。

在这里插入图片描述

卷积

  • ?卷积

本节对卷积的概念进行了介绍,并针对Python不同库中提供的一维和多维卷积函数进行了详细讲解,尤其对卷积过程中出现的边缘效应极其克服方法进行了说明。
在这里插入图片描述

滤波

  • ?滤波

数据滤波的目的,是把混杂甚至淹没在噪声中的信号提取出来。本节介绍了三种不同的滤波思想和方法,即维纳滤波、巴特沃斯滤波器以及排序滤波。

在这里插入图片描述

基础统计

  • ?统计

分析统计特征是数据分析过程中必不可少的一步,本节对Python中提供的基础统计函数进行了降级,并且介绍了Python中最具统计风格的模块Pandas,及其可视化软件PandasGUI,让你可以像操作Excel一样操作Pandas。

  • 在这里插入图片描述

线性代数

  • ?线性代数

矩阵是线性代数的核心对象,是由m mm行n nn列的数组成的矩形数阵,从编程的角度理解,就是二维数组。在Numpy中,数组支持元素之间的各种运算,也支持与单个数值的各种运算。本节介绍了线性代数中常见的一些运算,比如矩阵乘法,并且展开讲解最小二乘法的矩阵化过程。

图像处理

1 初步

  • ?初步

图像的本质就是矩阵,图像处理,也就是矩阵处理。所以,在Python中,numpy和matplotlib可以完全胜任最简单的图像处理工作。本节介绍了图像处理的基础流程:读取图片、灰度映射、展示图片以及图像保存。

在这里插入图片描述

2 光斑分析

  • ?光斑分析

光斑是工程中经常出现的图像数据,其特点是目标明确,分布清晰。对光斑图像的分析,主要包括质心定位、目标截取以及半径拟合等。由于图像是二维数组,有两个可以操作的方向,故而除了全局的质心外,其每一行或每一列均有一个质心,行质心和列质心的交叉点,就是图像的质心,图像如下,左侧为原始光斑,右侧为其行质心和列质心。

在这里插入图片描述

3 插值变换

  • ?插值变换

尽管numpy提供了一些矩阵函数,但图像处理是一个十分浩瀚的领域,numpy的体量显然有些不够。相比之下,【scipy】封装了【ndimage】模块,即专用的多维数组处理模块,自然也涵盖了二维图像的处理。ndimage中提供了对数组进行平移、缩放以及旋转操作的函数,分别是shift, zoom, rotate,可以实现下面的变换效果。

在这里插入图片描述

4 形态学处理

  • ?形态学处理

最基础的形态学操作有四个,分别是腐蚀、膨胀、开计算和闭计算,【scipy.ndimage】分别实现了二值数组和灰度数组的这四种运算。而针对灰度图像,【scipy.ndimage】还提供了礼帽、黑帽、形态学梯度和拉普拉斯梯度等操作。

在这里插入图片描述

5 滤波

  • ?滤波

所谓滤波,在图像处理中往往表示特定模板下的卷积运算,其功能有二,一是用于边缘检测,二是用于数据平滑。图像边缘往往变化比较剧烈,相应地其导数的绝对值也就更大,换言之,对图像进行求导,可以增强边缘处的变化,从而起到边缘检测的效果。

在这里插入图片描述

6 opencv初步

  • ?opencv初步

opencv是跨平台图像处理库,为许多编程语言提供了接口,Python自然在列,但在使用pip安装时需要注意install的是【opencv-python】。

作为专业的图像处理库,opencv自然也提供了读取、处理、显示以及保存图片的全流程功能,此外还可以打开摄像头。

在这里插入图片描述

7 相机校准

  • ?相机校准

相片是三维世界在二维平面上的投射,故而其深度信息是损失掉了的。但是,如果把拍照看作理想的小孔成像过程,那么相片中的每个像素,都将通过一个锥体与世界中真实的点一一对应,这时如果再来一条参考光线,那么理论上就可以实现二维图像的三维重构了。

在这里插入图片描述

8 图像分割

  • ?图像分割

opencv提供了多种二值化分割方案,除了可以指定阈值之外,还支持OTSU算法以及自适应阈值算法。此外,还可以通过距离变换,对图像的前景、背景进行分割。并且提供了连通域函数,可以将前景中联通的目标一一分割出来。

其中,三个主要的函数是【adaptiveThreshold】、【distanceTransform】以及【connectedComponents】。

在这里插入图片描述

9 边缘检测

  • ?边缘检测

opencv中提供了多种边缘检测方法,除了经典的Canny算子,还实现了霍夫变换,用于检测直线和圆形的边界。这三个函数分别是【Canny】,【HoughLines】以及【HoughCircles】。
在这里插入图片描述

10 目标识别

  • ?目标识别

在Python中实现目标识别任务,最常用的方法是调用dlib模块。其中提供了人脸检测和车辆检测的功能,通过人脸特征点的比对,可以根据特征点的距离完成人脸对比。

在这里插入图片描述

点云处理

1 Open3d 初步

Open3d 初步

open3d是Python中最常用的点云模块,可用于读取、保存和显示点云。
在这里插入图片描述

2 点云变换

点云变换

open3d的点云类提供了平移、缩放以及旋转的空间变换方法,可以实现如下转换。
在这里插入图片描述

3 点云配准

点云配准

ICP, 即Iterative Closest Point, 迭代点算法,在使用ICP算法之后,两个点云的叠加图像变化如下。
在这里插入图片描述

4 曲面处理

曲面处理

最原始的点云只包含了点的位置信息,这些信息可以呈现出一些散点,但并不能还原出物体的样貌。相比之下,曲面更加完美地表现物体,我们平时看到的三维模型,实际上也是通过曲面来实现的。open3d对曲面对象也有着非常不错的支持,并提供了示例文件,如下图所示
在这里插入图片描述

5 点云分割

点云分割

open3d封装了kd树、octree等数据结构,并提供了DBSCAN聚类、RANSAC平面分割算法。

在这里插入图片描述

注:本文转载自blog.csdn.net的微小冷的文章"https://blog.csdn.net/m0_37816922/article/details/145316230"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top