- 博客(34)
- 资源 (30)
- 收藏
- 关注
原创 非线性优化库学习资料:Ceres Gtsam G2o
其中 Ceres 资料最完善也相对稳定,是谷歌的非线性优化库,Google Cartographer 就是调用了该库。http://www.ceres-solver.org/tutorial.html 既可以作为 Ceres 的学习材料,也可以作为非线性优化的学习材料。Gtsam 的学习可以观看深蓝的公开课:http://www.shenlanxueyuan.com/open/co...
2020-06-30 17:12:00 1841
原创 c++使用eigen库,矩阵维度错误
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32: error: static assertion failed: YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES#define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);在用高斯牛顿做迭...
2020-06-30 09:46:00 3907
原创 TensorFlow2.x —— mageDataGenerator
在图像深度学习任务中,对于小数据集,可以通过Image Data Augmentation图像增强技术来扩充数据。比如Keras的ImageDataGenerator。ImageDataGenerator的使用:tf.keras.preprocessing.image.ImageDataGenerator( featurewise_center=False, # 使输入数据集去中心化(均值为0), 按feature执行,数据中心化可以消除量纲对数据结构的影响。对输入的图片每个通道减去每个通道对应
2020-06-27 18:56:25 220
原创 目标检测模型评价指标IoU、mAP
文章目录一、IOU二、mAP2.1 简介2.2 计算方法三、模型速度一、IOU交并比loU(intersection-over-union)二、mAP2.1 简介mAP(mean average precision)平均准确率均值2.2 计算方法多标签图像分类任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准。首先用训练好的模型得到所有测试样本的置信度(confidence score) ,比如某个类别(如检测猫)有20个测试样本:接下来按照置信度的大小重新排序,我们想得
2020-06-24 10:40:20 721
原创 Tensorflow2.x——FeutureColumns特征列详解
文章目录特征列`feature_column`一,特征列用法概述二、数值列 Numeric column三、分箱列 Bucketized column四、分类识别列Categorical identity column五、分类词汇列Categorical vocabulary column六、分类词汇列categorical_column_with_vocabulary_file七、哈希列categorical_column_with_hash_bucket八、交叉列Crossed column九、指示列I
2020-06-22 17:41:48 381
原创 OpenCV_Python —— (10)视频读取存储
文章目录一、摄像头读取二、视频文件读取三、获取视频参数四、修改视频参数五、视频写入一、摄像头读取# 从摄像头获取图像数据cap = cv2.VideoCapture(0)while(True): # ret 读取成功True或失败False # frame读取到的图像的内容 # 读取一帧数据 ret,frame = cap.read() # 变为灰度图 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
2020-06-19 19:09:47 714
原创 OpenCV_Python —— (9)Canny边缘检测
文章目录Canny边缘检测原理1.噪声去除2.计算图像梯度3.非极大值抑制4.滞后阈值Canny使用Canny边缘检测原理Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在1986 年提出的。它是一个有很多步构成的算法,我们接下来会逐步介绍。1.噪声去除由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤波器去除噪声,这个前面我们已经学过了。2.计算图像梯度对平滑后的图像使用 Sobel 算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx 和 G
2020-06-19 18:49:34 195
原创 OpenCV_Python —— (8)图像梯度
I是图像像素的值(如:RGB值)一阶导数:x的梯度:Gx = I(x+1,y)-I(x,y)y的梯度:Gy = I(x,y+1)-I(x,y)二阶导数:x的梯度:I(x+1,y)+I(x-1,y)-2I(x,y)y的梯度:I(x,y+1)+I(x,y-1)-2I(x,y)OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器: Sobel,Scharr 和 Laplacian。Sobel, Scharr 其实就是求一阶或二阶导数。 Scharr 是对 Sobel的优化。Laplacian
2020-06-19 18:29:17 357
原创 OpenCV_Python —— (7)二值化Thresholding
二值化就是把图片传换成只有white和black这两种颜色。通过Thresholding,可以让图片中感兴趣的颜色变成主角–white,其余的颜色全部隐藏–black。另外,二值化后的图片也便于计算机进行分析,因为边缘轮廓十分清晰,所以计算机可以轻松找到边界线。然而,在找边界这方面,Thresholding并不是特别好的算法,有些时候遇到某些特殊图片效果也不好。# 需要转换成灰度图才能二值化gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)5种二值化方式
2020-06-19 18:10:38 511
原创 OpenCV_Python —— (6)图像色彩空间
文章目录一、RGB二、HSV色调H:饱和度S:明度V:三、L*a*b四、Grayscale一、RGBRGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。红、绿、蓝三个颜色通道每种色各分为256阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。在
2020-06-19 17:30:33 324
原创 OpenCV_Python —— (5)图像模糊/平滑/滤波
文章目录一、Averaging平均滤波二、Gaussian高斯模糊三、Median中值模糊四、Bilateral双边滤波一、Averaging平均滤波计算卷积框覆盖区域所有像素的平均值得到卷积的结果# 输入图像# 核的尺寸大小:(3,3) (5,15).....都可以,可以不是正方形blur = cv2.blur(image, (15,15))二、Gaussian高斯模糊现在把卷积核换成高斯核(简单来说,方框不变,将原来每个方框的值是相等的,现在里面的值是符合高斯分布的,方框中心的值最大,其
2020-06-19 17:16:20 269
原创 OpenCV_Python —— (4)形态学操作
文章目录一、结构元素二、Erosion腐蚀(白色部分被腐蚀,黑色部分变大)三、Dilation膨胀(白色部分膨胀,黑色部分变小)四、Opening开运算五、Closing闭运算六、先开运算再闭运算七、Gradient形态学梯度八、Top Hat顶帽/White Hat白帽九、Black Hat黑帽 原始图像一、结构元素因为形态学操作其实也是应用卷积来实现的,这个卷积核也叫结构元素。结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成
2020-06-19 16:59:17 885
原创 OpenCV_Python —— (3)通道切分合并、图像金字塔
文章目录一、通道切分合并二、图像金字塔图像金字塔高斯金字塔拉普拉斯金字塔一、通道切分合并# 通道切分(R, G, B) = cv2.split(image)# 通道合并merged = cv2.merge([R,G,B])二、图像金字塔图像金字塔一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具
2020-06-19 16:16:46 975
原创 OpenCV_Python —— (2)图像翻转、裁剪、图像算术、位计算
文章目录一、图像翻转二、裁剪三、图像算术四、位运算五、掩膜一、图像翻转# 包含所需的库import numpy as npimport cv2import matplotlib.pyplot as plt# 图像显示函数def show(image): plt.imshow(image) plt.axis('off') plt.show()# 显示原图像image = imread("test.jpg")show(image)# 水平翻转,第二个参数是坐标
2020-06-19 16:03:49 236 1
原创 OpenCV_Python —— (1)画基本图形
文章目录准备空白图像画直线画矩形画圆准备空白图像# 包含所需的库import numpy as npimport cv2import matplotlib.pyplot as plt# 图像显示函数def show(image): plt.imshow(image) plt.axis('off') plt.show()image = np.zeros((300,300,3),dtype='uint8')show(image)画直线# 需要画图的图像# 直
2020-06-19 15:41:53 113
原创 Matplotlib快速上手
文章目录一、Matplotlib图表各个部分详解二、图表窗口2.1 直接生成图表 plt.show()2.2 魔法函数,嵌入图表%matplotlib inline2.3 魔法函数,弹出可交互的matplotlib窗口2.4 魔法函数,弹出matplotlib控制台2.5 关闭窗口和清空图表内容三、图表的基本元素3.1图名,图例,轴标签,轴边界,轴刻度,轴刻度标签等3.2 网格、刻度、注释参数设置3.3 线型 linestyle3.4 点型 marker3.5 color参数三、图表保存输出Matplot
2020-06-19 10:54:16 215
原创 Pandas —— (8)数据读取
文章目录一、读取普通分隔数据:read_table二、读取excel数据:read_excel三、读取csv数据:read_csv打赏一、读取普通分隔数据:read_table可以读取txt,csvdata1 = pd.read_table('data1.txt', delimiter=',',header = 0, index_col=1)print(data1)# delimiter:用于拆分的字符,也可以用sep:sep = ','# header:用做列名的序号,默认为0(第一行)#
2020-06-18 20:14:41 178
原创 Pandas —— (7)数据分组
文章目录一、分组二、函数计算打赏分组统计 - groupby功能根据某些条件将数据拆分成组对每个组独立应用函数将结果合并到一个数据结构中Dataframe在行(axis=0)或列(axis=1)上进行分组,将一个函数应用到各个分组并产生一个新值,然后函数执行结果被合并到最终的结果对象中。df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwar
2020-06-18 20:06:48 199
原创 Pandas —— (6)多个DataFrame的合并、连接、去重、替换
文章目录一、merge合并 → 类似excel的vlookup1.1 参数on → 参考键1.2 参数how → 合并方式1.3 参数 left_on, right_on, left_index, right_index → 当键不为一个列时,可以单独设置左键与右键二、concat连接三、duplicated去重四、replace替换打赏Pandas具有全功能的,高性能内存中连接操作,与SQL等关系数据库非常相似pd.merge(left, right, how=‘inner’, on=None, l
2020-06-18 19:42:13 12430 1
原创 Pandas —— (5)文本数据处理
文章目录一、常用方法二、去掉空格strip三、替换replace四、拆分split、rsplit五、字符串索引打赏一、常用方法通过str访问,且自动排除丢失/ NA值s = pd.Series(['A','b','C','bbhello','123',np.nan,'hj'])df = pd.DataFrame({'key1':list('abcdef'), 'key2':['hee','fv','w','hija','123',np.nan]})# 直接通过
2020-06-18 17:36:14 179
原创 Pandas —— (4)常用数学、统计方法
文章目录基本参数:axis、skipna主要数学计算方法唯一值:.unique(),去重值计数:.value_counts()成员资格:.isin()打赏和numpy的操作基本一致基本参数:axis、skipna# 基本参数:axis、skipnaimport numpy as npimport pandas as pddf = pd.DataFrame({'key1':[4,5,3,np.nan,2], 'key2':[1,2,np.nan,4,5],
2020-06-18 17:02:58 246
原创 Pandas —— (3)数据查看、转置、添加、修改、删除、运算(对齐)、排序
文章目录一、数据查看、转置二、添加与修改三、删除 del / drop()四、基本运算,自动对齐五、排序5.1 按值(列)排序 .sort_values5.2 按索引(行)排序 .sort_index打赏一、数据查看、转置# 数据查看、转置df = pd.DataFrame(np.random.rand(16).reshape(8,2)*100, columns = ['a','b'])print(df.head(2))# .head()查看头部数据pri
2020-06-18 16:44:47 483
原创 Pandas —— (2)索引与切片
文章目录一、索引1.1 列索引:df['列名'] (Series不存在列索引)1.2 行索引:1.3 bool型索引1.4 多重索引:比如同时索引行和列二、切片打赏一、索引Series和Datafram索引的原理一样,我们以Dataframe的索引为例1.1 列索引:df[‘列名’] (Series不存在列索引)df = pd.DataFrame(np.random.rand(12).reshape(3,4)*100, index = ['one','two
2020-06-18 16:20:35 359
原创 Pandas —— (1)基础数据结构概念和创建
文章目录一、Pandas简介1.1 数据结构1.2 大小可变与数据复制二、Series 数据结构2.1 Series简介2.2 Series 创建方法2.2.1 由字典创建2.2.2 由数组创建(一维数组)三、Dataframe数据结构3.1 Dataframe简介3.2 Dataframe创建方法3.2.1 由数组/list组成的字典创建3.2.2 由Series组成的字典创建3.2.3 通过二维数组直接创建打赏一、Pandas简介1.1 数据结构1.2 大小可变与数据复制Pandas 所有
2020-06-18 15:43:12 140
原创 奇异值分解方法求解最小二乘问题的原理
文章目录一、奇异值分解(SVD)原理1.1 回顾特征值和特征向量1.2 SVD的定义1.3 求出SVD分解后的U,Σ,V矩阵1.4 SVD计算举例1.5 SVD的一些性质二、线性最小二乘问题2.1 最小二乘问题复习2.2 奇异值分解与线性最小二乘问题参考链接打赏一、奇异值分解(SVD)原理1.1 回顾特征值和特征向量我们首先回顾下特征值和特征向量的定义如下:Ax=λxAx=λxAx=λx其中A是一个n×n的实对称矩阵,x是一个n维向量,则我们说λ是矩阵A的一个特征值,而x是矩阵A的特征值λ所对应
2020-06-16 18:31:16 1724 2
原创 数学基础知识 ——(1)高等数学
数学基础知识一、高等数学1.1 导数1.1.1 导数定义:1.1.2 左右导数导数的几何意义和物理意义1.1.3 函数的可导性与连续性之间的关系1.1.4 四则运算法则1.1.5 基本导数与微分表1.1.6 复合函数,反函数,隐函数以及参数方程所确定的函数的微分法1.1.7 常用高阶导数公式1.2 微分中值定理 f′(x0)=0f^{\prime}\left(x_{0}\right)=0f′(x0)=01.2.1 费马定理1.2.2 罗尔定理1.2.3 拉格朗日中值定理1.2.4 柯西中值定理1.3 极
2020-06-15 17:11:42 1899
原创 动态内存与智能指针
文章目录一、简介1.1 程序使用动态内的原因:二、shared_ ptr 类2.1 make_ shared 函数2.2 shared_ptr 的拷贝和赋值2.3 shared_ ptr 和 new 结合使用‘2.4 不要混合使用普通指针和智能指针......2.5 不要使用get初始化另一个智能指针或为智能指针赋值2.6 reset()操作2.7 使用我们自己的释放操作三、unique_ptr类3.1 与shared_ptr的区别及基本操作3.2 release()和reset()3.3 传递unique
2020-06-14 20:35:00 118
原创 VIO(3)—— VIO 残差函数的构建
文章目录一、系统需要优化的状态量二、视觉重投影误差三、预积分模型3.1 IMU 测量值的积分问题3.2 IMU预积分模型的提出3.3 IMU 的预积分误差3.4 预积分的离散形式3.5 预积分量的方差四、状态误差线性递推公式的推导4.1 简介4.2 基于一阶泰勒展开的误差递推方程4.3 基于误差随时间变化的递推方程4.3 预积分的误差递推公式推导IMU与VO的融合问题可以看作是对状态量的最小二乘估计,因此核心问题就转换为了VIO 残差函数的构建。一、系统需要优化的状态量二、视觉重投影误差三、预
2020-06-12 15:37:39 695
原创 Numpy(4)—— 保存和导入文件
一、文件读写Numpy可以方便的进行文件读写,如下面这种格式的文本文件:# 使用np.fromfile从文本文件'housing.data'读入数据# 这里要设置参数sep = ' ',表示使用空白字符来分隔数据# 空格或者回车都属于空白字符,读入的数据被转化成1维数组d = np.fromfile('./work/housing.data', sep = ' ')二、文件保存Numpy提供了save和load接口,直接将数组保存成文件(保存为.npy格式),或者从.npy文件中读取数组。
2020-06-11 15:56:40 676
原创 Numpy(3)—— 线性代数相关函数
diag:以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)。# numpy.linalg 中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西# np.linalg.diag 以一维数组的形式返回方阵的对角线(或非对角线)元素,# 或将一维数组转换为方阵(非对角线元素为0)e = np.diag(d)f = np.diag(e)print('d: \n{}'.format(d))print('e: \n{}'.format(e))pri.
2020-06-11 15:50:45 192
原创 Numpy —— (2)随机数np.random
文章目录一、创建随机ndarray数组二、随机打乱ndarray数组顺序三、随机选取元素打赏主要介绍创建ndarray随机数组以及随机打乱顺序、随机选取元素等相关操作的方法。一、创建随机ndarray数组创建随机ndarray数组主要包含设置随机种子、均匀分布和正态分布三部分内容,具体代码如下所示。设置随机数种子# 可以多次运行,观察程序输出结果是否一致# 如果不设置随机数种子,观察多次运行输出结果是否一致np.random.seed(10)a = np.random.rand(3, 3
2020-06-11 15:40:21 233
原创 Numpy —— (1)基础数据结构
文章目录一、简介二、创建ndarray数组一、简介Python中的list列表也可以非常灵活的处理多个元素的操作,但效率却非常低。与之比较,ndarray数组具有如下特点:ndarray数组中所有元素的数据类型相同、数据地址连续,批量操作数组元素时速度更快。而list列表中元素的数据类型可能不同,需要通过寻址方式找到下一个元素。ndarray数组支持广播机制,矩阵运算时不需要写for循环。Numpy底层使用c语言编写,内置并行计算功能,运行速度高于Python代码。二、创建ndarray数组
2020-06-11 14:32:30 374
原创 RANSAC(随机一致性采样)原理
文章目录一、基本思想:二、基本步骤三、采样次数确定打赏RANSAC主要解决样本中的外点问题,最多可处理50%的外点情况。一、基本思想:RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:有一个模型适用于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。然后,用所有假设的局内点去重新估计
2020-06-03 00:58:21 1312
预积分总结与公式推导20180827.pdf
2020-09-26
matplotlib颜色参数.docx
2020-06-19
fake.mnist.gan.py
2020-05-26
unet_semantic_segmentation.py
2020-05-26
res50完整源代码
2020-05-25
trafic-signs-recognition.tar.gz
2020-05-21
图像理解image_caption.tar.gz
2020-05-19
ROS与navigation教程.pdf
2019-10-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人