- 博客(73)
- 资源 (5)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++基本操作积累
C++基本操作积累本篇主要为积累自己平时遇到的一些操作,我一般情况下都是需要一个功能,先到网上搜索然后copy。甚至有一些常用函数的应用都要到网上搜索一下才会使用。为了提高写代码的效率,决定记录一下C++中经常会使用到的函数操作。我的目的很简单,就是能够在有编译提醒的情况下,知道哪个功能需要哪个函数,所以函数的形式不一定准确,比如说大小写。角点检测goodfeaturetotrack矩阵...
2020-03-16 09:30:06
327
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Linux Ubuntu入门:主要的命令(常学常更)
FAST MATCH: fast affine template matchingIntegral image代数矩的快速计算快速模板匹配算法步骤结果解读“FAsT-Match: Fast Affine Template Matching”Integral image本文作者从2001 年人脸识别神作 “Robust Real-time Object Detection” 中提到的图片特征 ...
2019-06-17 20:29:57
233
原创 认识多帧2(未完):基于纹理细节估计的多帧图像超分辨率重建算法研究
引言这是认识多帧的第二篇文章,是华中科技大学的博士论文。超分辨率重建算法研究,超分辨率重建的目的是通过融合一幅或多幅同一场景下的已知图像信息建立一幅高分辨率的图像,该问题是一个由输出信息求输入信息的数学物理反问题。该文从观测模型和先验模型入手,探讨了观测模型和先验模型在重建图像边缘和细节中的作用,提高多帧超分辨率重建算法的准确率。研究现状截取一段我自己感兴趣的(看得懂的~)观测、先验模型观测模型描述图片从高清到低清的过程,和认识多帧1中描述的图像退化(包括图片模糊和图片噪声)类似,这里作者细分观
2021-07-28 09:58:03
1457
原创 C++ particle code translation
C++ particle code translation单纯TM算法步骤在既有的代码上进行修改:图片与模板的输入迭代次数与方式的修改单纯TM算法步骤根据图片大小和particle的个数,随机初始化particle的位置,该位置信息作为固定信息;对pre_particle的内部参数根据实际情况进行赋值,即,即使位置信息初始化完成;将pre_particle的值赋给particles;计算particles中粒子对应的位置的hist,并与template进行比较,由此决定各partic
2021-07-28 09:56:19
299
原创 认识多帧1:多帧图像复原算法研究
引言阅读硕士论文,简单了解多帧图像处理算法,本篇为多帧图像复原算法认识图片退化现象主要分为两类:图像噪声和图像模糊,噪声具有随机性而模糊具有固定性。模糊根据成因可以分为两类:散焦模糊、运动模糊。散焦模糊由相机与景物之间的相对移动或者相机自动对焦不精确造成;运动模糊由成像传感器与被拍摄景物之间的相对移动造成,其中若取景相机和背景没有发生移动,而被拍摄物体运动,则图像存在局部模糊;若景物静止而相机发生晃动,则会出现全局模糊。手机相机拍摄的图片通常会出现全局模糊,毕竟手抖是自然的。去除图像噪声和图像模糊使
2021-04-28 14:58:06
3502
1
原创 C++探幽:类的继承
引言使用QT开发界面时公有继承了自己实现的相机类、并且由于界面程序稍微复杂了些,相机类中的一些函数需要重写,使用到了多态。感慨:之前只知道继承、重写别人的类或者函数,没想到有一天终于想到了继承自己写的类,真的会简化编程啊~并且这里承接上一篇方法基类的析构函数声明为虚函数——因为基类的指针指向派生类时,若基类的析构函数不声明为虚函数,在析构时只会调用基类的析构函数而不会调用派生类的虚构函数,从而产生内存泄露;基类中的某些需要重写的函数声明为虚函数。我的项目具体实现相机类的析构函数声明为虚
2021-04-23 15:03:31
174
原创 Ubuntu软件自启动说明
引言系统启动时自动运行用户指定的软件,以此减少用户操作,增加用户友好体验。方法假设我们已经拥有了一个可执行程序,在路径path=/home/pipath=/home/pipath=/home/pi下有Cp,一般需要准备两个文件,分别为为Cp配置运行环境的.sh文件、和一个触发自启动的.desktop文件——名字自取即可。.sh文件的内容为:chmod 777 /dev/ttyS4chmod 777 /home/pi/Cp/*. /usr/bin/setqt5env/home/pi/Cp &
2021-04-19 09:46:22
167
原创 资料整理:传统线结构光标定
一种线结构光标定方法该文是天津大学微电子学院发表的论文线结构光系统标定的是线结构光平面在相机坐标系中的平面方程。文章思想首先使用棋盘格标定板标定相机的内参数KKK,然后固定相机和结构光的位置拍摄包含该条结构光的棋盘格的图片,通过特征点在图片中的位置(u,v)(u,v)(u,v)结合相机内参数KKK,可以获得该特征点在相机坐标系中的相对位置(该位置与zcz_czc成正比),于是该点与相机坐标系的原点可以确定一条直线。同时,通过棋盘格可以标定棋盘格与相机的相对位置,由于张氏标定法假定棋盘格所在的平面
2020-12-22 21:45:26
998
原创 C++探幽:#if 0(1) #end if
在阅读源代码的时候,时不时会发现#if 0code#end if的写法,刚开始很不理解,以为可运行的代码的某种写法,通过运行简单的程序发现,#if 0中出现的变量不会出现在内存中,而#if 1中的变量会出现在内存中。结合网上的说法,我就浅层次地将其理解为一种注释吧。...
2020-12-12 11:40:06
565
原创 libgphoto2 plus3
数码相机liveView替代小分辨率相机那个看起来多余的小相机终于可以替换掉了!我成功地将liveView实现了,虽然使用的方法很简单粗暴。将负责小相机的线程停掉。添加一个计时器pre_timer,用于触发我的liveView函数。编写liveview内部实现:主要包括调用gp_capture_preview函数,将图片保存到一个指定的位置,直接读取该图片到Mat中,然后将Mat中的数据放到全局变量中,完成后续的显示。将pre_timer的timeout函数与我的liveView函数连接,并启动
2020-12-10 20:09:06
265
4
原创 libgphoto2 plus1
相机聚焦关于相机聚焦,libgphoto2提供了两个函数接口:分别是camera_auto_focus()和camera_manual_focus()。我在测试这两个函数的时候,正常的事情并没有发生,相反,奇怪的事情发生了——函数运行了,但是聚焦动作没有发生,然后我不知道发生了什么,也没有个使用手册。采集图片...
2020-12-08 14:34:57
750
2
原创 ORB特征:FAST、DRIEF、Harris角点
FAST特征BRIEF特征描述符该描述符提供一个计算二值串的捷径平滑图像。在特征点周围选择一个块,在块内选择ndn_dnd个点对。对于每一个点对(p,q)(p,q)(p,q),比较两个点的亮度值,如果I(p)>I(q)I(p)>I(q)I(p)>I(q),生成二值串中的1,若I(p)<I(q)I(p)<I(q)I(p)<I(q),二值串对应为-1,否则就为0。比较完所有的ndn_dnd个点对后,就获得了一个长度为ndn_dnd的二值串。BRIEF是一个
2020-12-06 13:46:48
1943
原创 C++探幽:内存分配
内存对象的基本概念栈对象栈,一般用于存放局部变量或对象。优势在于:能够在适当的时候自动生成、在适当的时候自动销毁。栈对象的创建(只需要移动栈顶指针)速度比堆对象的创建速度块(需要执行某种空间搜索算法)。缺点:栈空间容量一般较小(1M-2M),体积比较大的对象不适合在栈中分配。而且递归函数最好不适用栈对象,因为随着递归调用深度的增加,所需的栈空间也会线性增加,从而导致栈溢出。int add(int a,int b){return a+b;}int mian(){ int a=2,b=0; i
2020-11-19 16:25:07
121
原创 C++探幽:实现一个简单的string类
class myString{public: myString(const char* p=NULL);//普通构造函数 myString(const myString &str);//拷贝构造函数:需要实现深拷贝 ~myString(); myString &operator = (const myString &str);//重载运算符private: char* data=NULL; };myString::myString(const char* p=N
2020-11-19 15:01:00
165
原创 C++探幽:malloc/free与new/delete
标准库函数与运算符malloc/free是C++/C 的标准库函数,new/delete是C++的运算符。对于非内部数据类型对象而言,只使用malloc/free无法满足动态对象的要求。对象在创建的同时自动执行构造函数,消亡之前要自动执行析构函数。malloc/free不在编译器控制范围内,不能将构造函数和析构函数强加于malloc、free。malloc/free只申请内存的大小,对象的初始化是需要额外进行的。malloc/free 最需要的注意的就是申请的字节数的大小和指针类型转换。new /d
2020-11-19 10:30:53
118
原创 C++探幽:指针与数组的对比
数组要么被建立在静态存储区(如全局数组),要么被建立在栈上(局部数组)。数组名对应着一块内存,而不是指向一块内存,其地址与容量保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,其特征是可变。因此经常使用指针操作动态内存块,比数组灵活,却也更危险。修改内容char *p="hello";//其实在VS2017里边,该指针不能这样定义,而是const char *p="hello"才不会报错。cout<<p<<endl;所以∗p*p∗p指向常量字符串,而对于
2020-11-19 10:05:17
169
原创 C++探幽:指针参数
指针作为返回值不要用return语句返回指向“栈内存”的指针,因为该内存在函数结束时自动消亡。char *GetString(void){ char p[] = "hello world"; return p; // 编译器将提出警告}int main(){ char *str = NULL; str = GetString(); // str 的内容是垃圾(字符串+烫烫烫) cout<< str << endl;}改写成如下示例char *GetStr
2020-11-18 20:04:15
408
原创 C++探幽:C++11多线程
pthread与threadC++11中使用thread,C++98 中使用pthread,并且pthread只支持Linux。创建线程#include<thread>//创建线程需要的头文件#include<mutex>//锁的头文件假设有如下两个函数:int number = 0;//全局变量mutex g_lock;//锁int threadProc1(){ lock_guard<mutex> locker(g_lock); for (int
2020-11-18 17:04:37
149
原创 QT关于相机、串口掉线(拔掉)重连
记录基本操作,以备不时之需,自己的杂乱笔记,思路应该比较清晰相机掉线判断相机掉线:采集图片出错相机重连尝试:不退出线程,重新打开相机,并将新的变量赋值给线程中一直使用的变量void total_thread::run(){ VideoCapture cap(0); Mat img, result; int thread_stop = param_Cutpp.thread_shutup; int data_wrap = 0; int angle3 = 0;//文档缺角标志 doubl
2020-10-29 20:59:57
3675
2
原创 Ubuntu 安装 libgphoto2.5.25
QT .pro文件的写法INCLUDEPATH+=/usr/local/include/gphoto2INCLUDEPATH+=/usr/local/includeLIBS +=/usr/local/lib/libgphoto2.soLIBS +=/usr/local/lib/libgphoto2_port.so安装步骤查看安装包中的install文档,一步一步安装完成开发开发的话应该主要参考samples文件夹中的代码,其中看懂的包括:枚举相机,单图像采集,以及触发采集等,需要后续消化重
2020-10-28 09:55:29
805
原创 C++判断文件夹是否存在
源码来源于网络#include <iostream>#include <string>#include <io.h>using namespace std;bool dirExists(const std::string& dirName_in){ int ftyp = _access(dirName_in.c_str(), 0); if (0 == ftyp) return true; // this is a directory
2020-09-08 17:37:27
485
原创 C++统计文件夹中文件个数
代码来源于网络#include<io.h>#include <opencv2/opencv.hpp>#include <iostream>#include <ctime>#include <vector>using namespace std;using namespace cv;void getFiles(string path, vector<string>& files){ intptr_t
2020-09-06 17:13:10
3312
原创 Anytime Stereo Image Depth Estimation on Mobile Devices阅读与复现笔记(1)
最近对深度学习相关的视差求解方法比较感兴趣,并主要对这篇来自ICRA2019的文章进行了阅读和仿真。我习惯带着敬畏的心学习自己不会的知识,还请大佬们轻喷。AnyNet与PSMNet的视差计算结果比较在这里插入图片描述...
2020-08-05 10:03:31
900
4
原创 论文阅读:Disp R-CNN:Stereo 3D Object Detection via Shape Prior Guided Instance Disparity Estimation
Disp R-CNN: Stereo 3D Object Detection via Shape Prior Guided Instance Disparity Estimation摘要(理解)作者提出一种用于3D目标检测的名为disp R-CNN 的网络。该网络相较于一般的3D目标检测模型,不同点主要在:该网络仅估计感兴趣目标的视差;学习==类别特定的形状先验(category-specific shape prior )==以获得更精确的视差估计;可以不使用LiDAR提供的点云,而使用sta
2020-06-29 15:24:52
1484
1
原创 变焦单目论文阅读笔记
文章目录双焦距光学成像模型双焦成像原理视场转像本篇小结主要参考南京大学王元庆老师的论文,总结阅读论文时得到的必要的知识双焦距光学成像模型从一个角度拍摄的多幅图像的光学特征变化来计算各像点的深度值。Carnegie Mellon 大学机器人学院的Y Xiong, Steven A Shafer 提出的采用离焦模糊的深度信息提取办 法, 从图像的离焦模糊特征中提取景像的深度信息;广岛大学的N Asada 等人提出的基于变焦模糊的深 度信息获取方法则是通过改变摄像机镜头的焦距来获得多幅画面的, 从中提取出景
2020-06-10 11:26:14
545
2
原创 图片的光照不均匀处理
文章目录图片内容关于亮度和对比度图片内容目前来看,对于布匹的计算能力较好。细节越突出,计算结果越好。有些图片内容,相机的聚焦能力以及分辨率不够的话,就会计算的不够好。一般做3D的人都是比较追求高分辨率关于亮度和对比度第5,6与tmp的差距最小...
2020-06-07 21:28:35
9878
原创 交叉编译opencv 3.4.9 虚拟机(Ubuntu18.04)到NanoPi Neo4
sudo apt-get update sudo apt-get install git build-essential linux-libc-devsudo apt-get install cmake cmake-guisudo apt-get install libusb-1.0-0-dev libusb-dev libudev-devsudo apt-get install mpi-default-dev openmpi-bin openmpi-common sudo apt-get in
2020-06-03 11:28:14
764
原创 双目立体视觉三维重构总结
文章目录基本步骤相机标定图像采集立体校正匹配算法三维重构点云去噪点云显示总结前面多多少少记录一些相关知识,由于相关工作还在继续,加上网上的教程总不是十分完善。这里做一个总结,希望自己能够加深对这个过程的整体的理解与认识。基本步骤相机标定图片采集立体校正匹配算法三维重构点云去噪点云显示相机标定使用的Matlab标定工具箱,需要注意的点有:每个相机单独标定,之后再标定双目相机的位姿标定单目时需要选择畸变个数,一般如果不是鱼眼镜头,只需要标定两个径向畸变、两个切向畸变。图像采集,
2020-05-27 17:04:46
3265
原创 Matlab双目标定结果用于opencv(C++)
矩阵的对应关系没有对应好,导致我的计算结果相差很多,这里记录一下矩阵是如何对应的Matlab 的双目标定结果包括三部分:两个相机的内参数、畸变以及两个相机之间的旋转R、平移T。将matlab标定的结果写入xml文件参考了网上的代码function writeXML2(cameraParams,file)%writeXML(cameraParams,file)%功能:将相机校正的参数保存为xml文件%输入:%cameraParams:相机校正数据结构%file:xml文件名%说明在xml文
2020-05-25 12:11:24
1335
2
原创 梳理GAN
我参考训练生成动漫头像运行了一次GAN的代码,虽然对于GAN的模型略有了解,但是对细节理解仍然不够充分。问题小白代码结构?GAN包括生成器与判别器,上述代码包括两部分,model.py和train.py。model.py中定义了两个网络,分别是生成器NetG、鉴别器NetD。训练GAN的时候将model.py中的NetG NetD引入到train.py中。model.py如何构建网络模型?...
2020-04-29 00:20:55
327
原创 双目相机标定精度测量:匹配点对(2D)的距离(3D)与实际距离的差
使用边长为25mm的12*9的标准棋盘格标定相机#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;///双目相机,y方向存在误差Mat cameraMatrixL = (Mat_<float>(3, 3) << 23...
2020-04-22 20:41:26
4767
11
原创 两个类别间可靠性差异的差异指标
两个类别间可靠性差异的差异指标用于可靠性分类的差异指标本部分提出一种基于矩矩阵分析的差异指标用于可靠的分类。在此,可靠性用于描述矩矩阵相对于分类样本分组的可变性。特别地,如果从训练集生成的矩矩阵与验证集生成的矩矩阵具有相同的属性,则称该矩矩阵在训练集和验证集之间是可靠的。需要注意的是,模型参数,例如提出的差异指标,由验证集确定。然而,一个分类器的泛化性能是基于测试集获得的。验证集和测试集之间没...
2020-04-12 21:41:32
1400
原创 退出函数时Mat.release()随机触发中断
网上大多数原因为:opencv的库没有配置好,所以首先检查opencv的各目录是否填写正确而我当然不会出配置错误这种低级错误啦~我是因为访问Mat的内容出错定义指针类型与Mat内的数据类型不一致导致的Mat a=Mat(2,2,CV_16S);short *b=a.ptr<short>(1)[1];上述正确我把short 类型的数据写成了float。。导致内存溢出了应该...
2020-03-22 20:51:05
1191
原创 QSemaphore信号量实现多线程while循环的单次循环同步
定义全局信号量,我根据生产者和消费者的思路为两个测试分别定义了信号量。QSemaphore semaphore(1);//信号量定义,一次acquire使用一个资源QSemaphore semaphore_(1);//信号量定义,一次release释放一个资源//我们需要实现单次循环的同步,所以输入为1vector<int> flag0;最主要的逻辑在于:在本线程acqui...
2020-03-19 10:22:22
410
原创 三维重构(13):SGM经典算法解读
Stereo Processing by Semi-Global Matching and Mutual InformationSemi-Global Matching Algorithm is proposed by “Stereo Processing by Semi-Global Matching and Mutual Information” published in 2008. Th...
2020-03-08 20:15:20
1313
原创 三维重构(12):BM算法流程(参考opencv源代码)
通过阅读源码与相应注释滑窗以图片的像素为中心,从上到下、从左到右依次滑动对每一个像素都计算出不同视差ddd对应的SAD上述计算完成后,计算出在一个滑窗范围内所有像素对应相同的ddd时SAD的和从中选择使SAD的和最小的视差ddd对最优ddd进行检验:检验该区域内纹理值是否大于阈值,否则无效;检验最优ddd是否唯一,否则无效;通过检验则视为当前像素的视差。滑动窗口,重复3-5完成对所有像...
2020-03-08 11:56:11
1086
2
原创 PCL1.8.1安装包(VS2019,x64)、点云库PCL学习教程+代码
链接:https://pan.baidu.com/s/1XDBLjyhoei3m93rK1yqoiw提取码:pc2y如果没有做QT界面的需求,安装教程参考这篇博文,不需要理会VTK的压缩包。如果需要在QT中界面中显示点云,则需要将上述VTK压缩包中的内容代替你安装好的PCL库中的VTK添加到VS的属性配置页内(VTK可以随便放置,只要配置路径不出错就行,我这里有配置好的release x64...
2020-02-27 10:36:52
3240
2
Schweitzer2002_Chapter_VeryFastTemplateMatching.pdf
2019-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人