自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

卫少东个人博客

缺陷检测;机器视觉;数字图像处理;python;树莓派

  • 博客(40)
  • 收藏
  • 关注

原创 【杂项学习】linux下使用Cmake+GDB断点调试

linux下使用Cmake+GDB断点调试介绍cmakeCMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/work

2022-05-19 15:34:02 1938

原创 【杂项学习】Open3D的基本使用

Open3D的基本使用前言在处理点云数据时,PCL库的安装和上手难度较大,英特尔的Open3D在性能和开箱即用上表现优异,可以读存、处理和显示各类点云,故做此试验。准备工作安装使用window11下的pychram,配置python3.6的虚拟环境,(PS:open3d到博客写作日期为止,暂时只支持3.6-3.8版本),进行虚拟环境的setting,依次安装open3d,numpy,opencv(optional)测试数据下载在gethub上下载open3d的源码,里面包含了我们需要官方提供的

2022-05-19 15:22:05 1609

原创 CeresSolver采用稀疏矩阵求解大规模BA时参数块设定

CeresSolver采用稀疏矩阵求解大规模BA时参数块设定前言在大规模BA求解中,通常会关注到相机位姿与路标参数构成矩阵的稀疏性,将相机位姿参数与路标点参数分组,采用舒尔补充等方法进行消元求解数据量大的组别,提升求解效率,具体可以参考ceres的LinearSolver¶部分。在实际使用中,构造代价函数时需明确哪些参数为路标点参数,需要被消去;哪些参数为相机参数,首先求解,相当于将参数分组,并决定其消去的顺序。ceres内置了自动分组的方法,但有时不能奏效,此时就需要我们手工指定参数块的分组,并且来

2022-05-19 15:19:52 563

原创 Ubuntu 18.04从源代码编译安装GDAL3.4.1

Ubuntu 18.04从源代码编译安装GDAL3.4.1简要介绍参考地址编译代码注意事项1.configure: error: PROJ 6 symbols not found2. 使用cmake时找不到库3.可以用make -j4 加速检查方法简要介绍参考地址GDALGithubGDAL各版本下载地址官方编译方法地址编译代码./configuremake -j4sudo make install注意,3.5版本可以使用cmake进行编译。注意事项1.configure: err

2022-03-06 14:39:33 3590

原创 (Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现

(Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现文章目录(Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现摘要RPC几何定位模型介绍RPC模型库代码实现Rpc模型库使用示例实验结果精度评估性能评估摘要在航天摄影测量领域,RPC模型是一种通用的卫星几何定位模型。作为基础构件,RPC模型是后续前方交会(三角化)、区域网平差、DSM生成的基础。但是,笔者在实际使用中发现网上的关于RPC模型开源代码良莠不齐,有的介绍详细但没有代码,难以找到一组比较易用的RPC模型

2021-11-16 19:48:00 3688 12

原创 (Python)使用Gdal进行批量的多光谱影像波段合成

(Python)使用Gdal进行批量的多光谱影像波段合成文章目录(Python)使用Gdal进行批量的多光谱影像波段合成摘要方法代码介绍完整代码实验结果代码运行结果(部分)多光谱合成结果耗时摘要项目中经常遇到批量多光谱合成的任务需求,数量不多时,可以利用ENVI、ARCGIS等软件进行手工操作,但是当遇到数据量大且数据名称类似的任务时,很容易陷入机械劳动,耗时且易出错。本文提供了个人学习科研进行中,撰写的批量多光谱合成代码。其可以按照合成对象的命名特点搜索文件中的待合成波段的影像列表,并使用Gdal

2021-11-09 21:25:28 5134

原创 (Python)使用Gdal进行批量的影像RPC正射校正

使用Python+Gdal进行批量的影像RPC正射校正文章目录使用Python+Gdal进行批量的影像RPC正射校正摘要方法实验数据实现代码介绍完整代码实验结果代码运行结果正射校正结果性能摘要遥感影像经会遇到大批量数据做统一处理的情况,而其影像命名由于其一级产品的生产过程有很强的规律性,天然具备批量处理的潜质。本次针对带RPC的遥感影像批量处理,借助了Python脚本语言,使用re库(正则表达式)来处理字符串与名称搜索、os库来处理路径和文件遍历、GDAL库来进行RPC模型的正射校正,最终实现了批量

2021-11-07 11:46:05 5609 11

原创 (Python)绘制地理坐标范围与点

import matplotlib.pyplot as pltfrom matplotlib.path import Pathimport matplotlib.patches as patchesimport numpy as np#plt.rcParams["font.family"]="SimHei" #正常显示中文def drawBoundary(ax, boundary, **kw): """ 绘制地理坐标区域 :param ax: 绘制的坐标轴 :p

2021-10-31 22:55:05 1993

原创 (Python)Gdal与Opencv遥感影像Siticher拼接

文章目录前言使用Opencv的Stitcher(傻瓜式)TODO:自己实现运行结果耗时情况拼接效果总体效果局部细节(接缝处)前言“ 很多时候,我们需要研究较大空间范围的研究区域时,单幅遥感图无法覆盖整个研究区域,这时就需要对遥感图像进行镶嵌(或拼接)。”本文使用Python+Opencv+GDAL实现相邻两个遥感图像之间重叠区域的拼接。基本步骤为:对每幅图进行特征点提取对特征点进行匹配进行图像配准把图像拷贝到另一幅图像的特定位置对重叠边界进行特殊处理(颜色融合)最近使用python进行

2021-08-09 15:13:14 1522 1

原创 (Python)Gdal与Opencv遥感影像Sift匹配+RANSAC筛选并计算匹配RMSE精度

目录简要介绍代码运行结果简要介绍SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。 该方法于1999年由David Lowe 首先发表于计算机视觉国际会议(International Conference on Computer Vision,ICCV),2004年再次经David Lowe整理完善后发表于International jour

2021-08-09 14:34:03 4400 14

原创 (Python)使用Gdal+opencv读遥感影像加简单处理

文章目录简介代码运行结果简介使用Python API的gdal和opencv一般遇到最大的问题就是,遥感影像一般为16位和opencv只处理8位,中间的转换有很多的写的非常复杂又不完全对的,本文提供一个可用的例子,用于读取影像截取ROI,这样就可以很方便的使用opencv算法进行图像处理了,以此作为自己的记录和初学者参考。使用库的相关版本python 3.9gdal 3.2.3opencv 4.5(可使用PLI或者matplot)代码from osgeo import gdalimp

2021-08-09 13:10:23 4196 10

原创 (Python)使用Gdal+Scipy获得Dem的经纬度的高程值(双线性和三次样条内插)

(Python)使用Gdal+Scipy获得Dem的经纬度的高程值(双线性和三次样条内插)前言基本原理双线性内插三次样条内插代码实现后记前言最近使用python进行一些的遥感影像处理,发现摄影测量方面,相比于CV领域资料非常匮乏,特此记录一些小工具的实现,也做出一些遥感领域的代码做出自己的贡献,水平有限,能用而已。基本原理Dem内插是指根据分布在内插点周围的已知参考点的高程值求出未知点的高程值,由于所采集的原始数据排列一般是不规则的,为了获取规则的 DEM,内插是必不可少的重要步骤。 它是 DEM的

2021-08-08 15:18:23 2689

原创 论文阅读-Bias Compensation in a Rigorous Sensor Model and Rational Function Model for High-Resolution S

论文阅读-Bias Compensation in a Rigorous Sensor Model and Rational Function Model for High-Resolution Satellite Images-对光学模型和多项式模型的补偿的效果研究论文标题:Bias Compensation in a Rigorous Sensor Model and Rational Function Model for High-Resolution Satellite Images文章地

2021-04-29 10:31:56 203

原创 超详细中文车牌识别开源库EasyPR入门实战(win10_VS2019_opencv34)

中文车牌识别库EasyPR配置全过程及编译问题解决(win10_VS2019_opencv34)本文目录中文车牌识别库EasyPR配置全过程及编译问题解决(win10_VS2019_opencv34)开源库介绍准备工作EasyPR源码下载Opencv下载与编译软件环境配置编译中的几个问题明明配置完成还是找不到opencv.hpp出现ANN_MLP有关的问题检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticRelease”找不到openc

2021-02-06 12:37:00 4156 4

原创 一种GPS辅助的多方位相机的VIO——Slam论文阅读

"A GPS-aided Omnidirectional Visual-Inertial State Estimator in Ubiquitous Environments "论文阅读这里写目录标题"A GPS-aided Omnidirectional Visual-Inertial State Estimator in Ubiquitous Environments "论文阅读论文摘要文章信息背景大背景本文细分背景针对具体问题方法对问题的回应具体思路实验实验设置实验结果结论主要创新点小技巧论文摘要

2021-01-29 15:02:30 672 1

原创 C++ 一维高斯积分的实现

#include <cmath>#include <limits>#include <cstdlib>#include <iostream>#include<cmath>using namespace std;//高斯积分int main(){ double sigma = 1; double mu = 0; double A = 1/(sqrt(2*M_PI) * sigma); // double x = 0; /

2020-10-21 20:53:28 1421 2

原创 HF-Net初探之二:运行demo及相关报错处理

在浏览器中打开demo.ipynb文件官方提供的demo在库的根目录下面,名为demo.ipynb,接触过数据学科的同学很熟悉,要用jupyter打开,回去看看配置文件,官方已经贴心的帮我们安装好了.在hfnet文件中中打开命令行,输入:jupyter notebook就会在浏览器中出现打开demo.ipynb会出现如下的视图,这就已经可以开始调试,运气好的同学点击run就可以一个一个运行直到出现最后的结果,笔者就属于不好的,接下来就一个一个来解决.运行中报错处理加载依赖库时,ros相关错误

2020-07-09 18:39:04 1561 4

原创 HF-Net初探之一:简介与配置使用

pip3 install -r setup/requirements.txtmake: pip3: Command not foundmakefile:2: recipe for target ‘install’ failedmake: *** [install] Error 127

2020-07-09 18:08:38 3333

原创 手写系列之手写LM(Levenberg–Marquardt)算法(基于eigen)

紧接上次的手写高斯牛顿,今天顺便将LM算法也进行了手写实现,并且自己基于eigen的高斯牛顿进行了对比,可以很明显的看到,LM的算法收敛更快,精度也略胜一筹,这次高博的书不够用了,参考网上伪代码进行实现.同学们有什么问题都可以讨论,理论部分的细节后面会补上,最近确实有点忙.伪代码程序源码#include <eigen3/Eigen/Core>#include <eigen3/Eigen/Dense>#include"opencv2/opencv.hpp"#include

2020-07-08 19:01:15 2470 3

原创 手写系列之手写高斯牛顿法(基于Eigen)

重复造轮子虽然很多人不推荐,但是个人认为,不重复造一下轮子,也就不能真正的懂轮子的写作逻辑优点和考虑,更别说优化轮子.会导致像高中一听就会,一做就错的感觉,所以笔者挑选一下极具代表性的算法进行手写,收货颇丰.本代码基于高翔博士<slam14讲>,写的时候刻意的只看了要求和思路,没有看一眼作者的代码,写出来的竟然惊人的相似.连一些初始化和变量的命名都一样,变相的证明了笔者代码功力的提高(不要脸了开始).全文如下,算法基于eigen3,opencv库只用来产生随机数.代码#include &l

2020-07-07 18:49:51 1374

原创 C++11lamda表达式入门初探

基本语法capture mutable ->return-type{statement}[capture]:捕捉列表。捕捉列表总是出现在Lambda函数的开始处。实际上,[]是Lambda引出符。编译器根据该引出符判断接下来的代码是否是Lambda函数。捕捉列表能够捕捉上下文中的变量以供Lambda函数使用;(parameters):参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号“()”一起省略;mutable:mutable修饰符。默认情况下,Lambda函数总是一个

2020-07-02 17:06:16 129

原创 趣谈:C++中引用和只指针的区别

1.引用必须初始化,不可以为空,不可以null;指针可以位NULL,可以在任何时候初始化.2.引用一生只爱一次,一生只爱一个人,一旦绑定一个对象,就不能换对象;指针是情场老手,可以随意的更换对象.3.引用沉溺爱情,丧失了自己,如果使用sizeof(&),返回的是他对象的大小,而指针是他自己的大小.4.同样的,如果伤害引用(给引用赋值),是其对象承担这个结果,是修改他的对象,而不是更换对象.5.引用相当于别名,你还是你,王大锤和小王都是你;但是指针相当与你的身份证号,需要先通过号码查到你的名字

2020-07-01 16:11:53 148

原创 不使用任何外部库的C++中生成高斯分布的误差值的方法

/***@brief 产生高斯噪声*@param E 噪声期望大小*@param V 噪声方差大小*@return 返回期望为E,方差为V的double型高斯值*/double gaussrand(double E,double V){ static double V1, V2, S; static int phase = 0; double X; if (phase == 0) { do { double U1 = (double)rand() / RAND_MAX;

2020-06-17 15:13:56 419

原创 ceres解析微分方法示例

slam中的同学都常用的库位g2o和ceres,在求导方面,g2o统一使用数值微分,但是我们是知道,如果有明确的雅克比,解析微分在速度,精度和防止发散方面有着不小的优势.我们具体看一个ceres中使用已知的雅克比的示例:class Rat43Analytic : public SizedCostFunction<1,4> { public: Rat43Analytic(const double x, const double y) : x_(x), y_(y) {}

2020-06-17 11:00:31 434

原创 排序算法:插入排序,选择排序,希尔排序,归并排序,快速排序C++实现,基于算法第四版

<算法>第四版的代码实现都是java的,但是和C++的区别甚小,他的代码,严谨,简洁有力,故写成能用的C++的版本供大家参考,而且提供了CMakeLists.txt供linux环境下的同学参考.sort.h#include<iostream>class Sort{private: /* data */public: Sort(int *a,const int n):_a(a),N(n){}; ~Sort(); //选择排序 void

2020-06-15 17:47:20 417

原创 精读VINS-FUSION源码之feature_tracker.cc

图像特征提取代码的部分开始阅读,代码批注尽量详细,特别明显的没有写上去,如果有错误请大家及时反馈,讨论:(精读的是港科大的vinsFuison代码;github地址: https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.文件位置位于:VINS-Fusion/vins_estimator/src/featureTracker/feature_tracker.cc)#include "feature_tracker.h"bool FeatureT

2020-06-11 19:58:54 760

原创 SLAM-VINS-FUSION原理学习及源码详细精读

文章目录前言:最近开始学习使用VIO相关的内容,原因有二:手机上的imu天生的就位VIO打好了硬件基础,个人觉得VIO的发展前景较好.苹果的ARkit包含了激光视觉imu等的多传感器融合,做到了非常好的效果,可以预见,传感器融合是slam的大趋势,而vinsfusion论文中中特别强调,这个框架对于每一种传感器(他把每一个当做factor)是平权的,可以容易的做到,视觉,imu,GPS,激光雷达的融合.所以选择研读港科大的SLAM开源框架VINSFUSION作为研读,同时对于其中涉及的论文知识点

2020-06-11 19:30:23 1824 2

原创 精读VINS-FUSION源码之feature_tracker.h

由于笔者本人的方向从图像做起,所以选择从特征提取的部分开始阅读,代码批注尽量详细,特别明显的没有写上去,如果有错误请大家及时反馈,讨论:(精读的是港科大的vinsFuison代码;github地址: https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.文件位置位于:VINS-Fusion/vins_estimator/src/featureTracker/feature_tracker.h)bool inBorder(const cv::Poin

2020-06-11 19:28:57 916

原创 使用自己的INDEMIND相机来运行ORBSLAM2单目,双目和深度模式(小觅相机和realsense通用)

安装配置ROSROS环境准备(以16.04 ROS Kinetic为例)sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /, → etc/apt/sources.list.d/ros-latest.list'sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key␣, → C1CF6E31

2020-06-09 15:00:17 2575 27

原创 C++中简单易用获得代码运行时间,微秒级

在日常使用过程中,经常需要测试代码运行的时间,网上代码良莠不齐,大多数就是c语言中的老方法,使用非常麻烦,头文件容易出问题,这里提供一个C++中的方法,如下:#include <chrono>int main(){ auto start = std::chrono::steady_clock::now(); //填写你需要测试见的代码段 //*****************// function(); //*****************// auto end = std::

2020-05-26 22:42:13 530

原创 linux下OpenMVG编译简明教程

最近配置了openMVG之后发现网上的教程良莠不齐,这里介绍官方文章的编译方法,多次测试有效。1.首先安装依赖项,如一些png,jpg和tiff图像的处理库sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev可以选装graghviz来看图日志:(不装不影响)sudo apt-get install graphviz2.然后找到你想要放o

2020-05-13 13:38:22 997

原创 ceres中的ConditionedCostFuntion源码阅读

ceres中的ConditionedCostFuntion源码阅读class ConditionedCostFuntion这个类的作用是给隐藏代价函数(cost function)的残差值赋上不同的权值。举个简单的例子:你有一个产生了N个残差值的代价函数,但是你想要残差的总体值不是简单的等于每个参加的平方和,你想给每一个残差一个特定的权值(尺度),来改变每个残差对总体参加的贡献。// my...

2020-05-01 12:44:40 489 1

原创 ceres中的loss函数实现探查,包括Huber,Cauchy,Tolerant图像实现及源码

ceres中的loss函数实现探查,包括Huber,Cauchy,Tolerant图像实现及源码各个损失函数的趋势图: Ceres内嵌的loss functions原理:以CauchyLoss方法为例,其头文件为:// Inspired by the Cauchy distribution// rho(s) = log(1 + s).// At s = 0: rho = [0...

2020-05-01 12:39:43 9120

原创 Ceres Solver中文详细易懂版学习笔记

Ceres Solver中文详细易懂版学习笔记1.Ceres Slover简介2.ceres之Helloworld2.1目标问题2.2代码实现2.3Helloworld小结3.ceres在powell法上的实战3.1构建costFunctior3.2构造最小二乘问题的框架3.3构建Solver并输出结果4.ceres在曲线拟合(Curve Fitting)中的实战5.ceres在bundle ad...

2020-02-06 17:00:29 3523 1

原创 【绕坑】ubuntu18.04与16.04安装pcl

网上的大量方法为使用官方的那三行和编译安装,其实直接进行sudo apt-get install libpcl-dev pcl-tools亲测即可使用即可

2019-11-21 16:36:07 625 2

原创 如何快速学好研究领域所需的数学工具如矩阵论、概率论等(个人经验总结)

前言  Slam、机器学习都能都需要不少的数学基础,在本科其实都已经扎实的学习过一遍了,现在复习,在笔者的一年半的研究生生涯的经验看呀,某一门知识本身往往并没有什么难度。但是很多时候让人看起来非常畏惧,想要快速学好和使用总让人感到棘手。结合自身经验,笔者觉得解决一个问题的至关重要:将那些你以为自己清楚的名词真正的“翻译”成明确的话语。  举例来说,概率论中常说事件,到底啥是“事件”,著...

2019-11-19 11:48:46 347 1

原创 SLAM学习之旅——小破船也想通往星辰大海(入门篇)

从零开始学习SLAM学习动机自我介绍研二在读,在经过了前期的项目训练和工程实践,立感选择一门自己有基础的而且有理论深度的方向进行学习。现有情况分析笔者在多个项目实践多使用的C/C++,学科为传统较为传统的机器视觉,已经系统学习过包括《数字图像处理》》-Gonzlez版等等多部传统的视觉处理,与现有科班出身的计算机视觉、深度学习尚有一段距离。而且存在实践过多理论略微虚浮的情况,所以选取Sl...

2019-11-14 15:58:05 252

原创 Ubuntu下Qt5.9+opencv3.4 实现视频显示的简单界面

Ubuntu下Qt5.9+opencv3.4 实现视频显示的简单界面准备工作安装Qt5.9编译安装opencv3.4项目编写过程创建新的工程配置头文件和依赖项绘制简单的GUI界面编写opencv显示图像的具体代码建立图像显示所需的头文件编写video显示的函数最终结果准备工作安装Qt5.9笔者使用的使用的是Ubuntu18.04,直接在Qt官网下上下载安装包,进行安装即可,可以免费使用.编...

2019-07-01 17:02:55 966

原创 opencv(c++)点到线段(非直线)的距离求解

@TOC使用背景 笔者在求解点和直线匹配问题中遇到了,无法使用点到直线距离的情况. 直线的和线段的本质区别就在与直线是无限延伸的,所以你的点总可以找到一个垂足做出距离,但是对于线段来说是当线在直线外时会存在三种情况,接下来一次介绍.原理简介 由图简单可知一共三种情况,第一种距离为点到直线的距离,后面两种分别是AP和BP和长度,使用向量知识的知识可以进行具体的推导,这里不再细说,有兴趣的...

2019-06-26 22:07:44 1842

原创 吸管流水线机器视觉检测Demo--by Matlab

吸管流水线机器视觉检测Demo MATLAB实现【1】--by 少少东阈值分割按连通域面积滤除金属反光干扰黑暗部分检测并拼接**代码部分**  最近一周,在笔者的图像处理上,老师布置了一项有趣的大作业,也是项目的简单一部分,经过两个晚上近五个小时的学习编写和实验,终于取得了一些简单基本的成果。现在梳理一遍学习思路,和大家分享一下学习的过程的一些问题和收获。  首先上图。如图,笔者理解这是一个...

2018-09-26 23:29:52 1504 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除