
python
cheng.li@3D_Vision
B站讲解摄影测量和三维重建
欢迎交流摄影测量与slam!
B站:橙子的RGB空间
展开
-
安装python各种库的方法
python 安装自己想要的库 有很多方法:1、在Anaconda Navigator 中环境中点击uninstall 找自己没有装的库2、在cmd命令行中输入pip install ***;如pip install pyqt53、在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载whl,然后pip install **.whl,这种方法比2要原创 2017-11-10 20:29:35 · 2413 阅读 · 0 评论 -
SFM 算法代码--因为github上传有问题
之前写的sfm ,因为在类中写的,但是调用自定义函数时候没有考虑到-《-self.变量》在类中是 全局调用的。写的程序中,存在重复调用某一个函数,大量的冗余!!!!!!!!!!!,运行的时候非常的慢!!!!!优化后的是: 利用self.变量 全局调用的属性,去掉很多函数return 语句 在最终的某一个函数里,调用所有定义的函数,据自己情况使用全局变量,这样程序才会正常速度#...原创 2018-05-17 12:31:43 · 4363 阅读 · 17 评论 -
你不知道的SVD 算法------点云配准+绝对定向+坐标转换
Sfm那篇博客已经介绍,3D-3D的变换,不同学科称呼不同。 在测绘领域,称作为坐标转换,即七参数转换—(3个旋转,3个平移,1个尺度),通常尺度因子可以不计。最常见的情景诸如,54坐标到80坐标,80到CGS200坐标等。 在摄影测量学科里,称为绝对定向,即是把模型纳入到地面摄影测量坐标系中(像空间辅助到像—地面摄影测量) 公式如下: 求解该方程的绝对定向元素的时候,至少知道3对点...原创 2018-05-17 11:23:28 · 7879 阅读 · 2 评论 -
python 下载乌普萨拉大学的图像处理课件(.pdf)(含代码)
笔者下载乌普萨拉大学网站的pdf时,发现如果一个个点开在另存为太机械化了,不如写一个程序,让其自动下载。 但是在用到urllib.request.urlretrieve下载的时候,报错:件下载不完全错误。而且下载时间巨长。 解决方案1 使用socket模块,设置一个超时时间。 解决方案2 使用urllib.request.urlopen(url),再将其二进制写入想要.pdf文件。这种方...原创 2018-05-10 14:37:08 · 486 阅读 · 0 评论 -
opencv 追踪算法
追踪的目的是在当前帧找到前一帧确定的对象。因为我们要在当前帧确定其对象位置,因此我们需要知道它是如何运动的,换句话说,需要知道运动模型参数。 如果对象非常简单且没有什么外貌上的变化,我们可以使用模板匹配。但是现实并未如此,当前模型可能随时随地变换(如人脸,你可能下一秒变成侧脸)。 Opencv中集成了诸多算法,随着其不断更新,算法的种类也越来越多,3.3版本的算法种类是6种-BOOSTING,...原创 2018-04-24 19:40:47 · 3036 阅读 · 0 评论 -
Keras 深度学习框架介绍----一起来慢慢走进deep learning
IntroduceKeras是一个高级API,用Python编写,能够在TensorFlow、Theano或CNTK上运行。Keras提供了一个简单和模块化的API来创建和训练神经网络,隐藏了大部分复杂的细节。How to install keras?Keras 安装的话需要安装Theano和TensorFlow作为Keras的背景库这里安装流程如下:pip install Theano#If ...原创 2018-04-20 13:42:11 · 3252 阅读 · 0 评论 -
从摄影测量到计算机视觉----以SFM算法为例,用python+opencv 实现
因为这篇公式和图比较多,所以笔者以贴图像的形式来,附上最终的结果图。如果你需要笔者的代码,可以发邮件或者去github,笔者后续会贴上github链接。 1、 两者之间的关系 摄影测量是研究被摄物体的形状、大小、和相对位置关系的一门学科;计算机视觉可以看作是图像处理的升华(image—knowledge)。两者之间有太多的相似之处,如bundle adjustment,摄影测量中称之为光...原创 2018-05-08 21:33:50 · 10334 阅读 · 18 评论 -
计算blob的方向
计算blob 方向有两种方法:一种是利用PCA;一种是利用图像矩。本次主要介绍基于PCA算法的计算:1、 点矩阵我们将处理的二维点大小为2*m,第一行为x,第二行为y2、 每个点减去均值计算x坐标的行数。对于每个x点,减去它的均值。对y坐标做同样的处理。平均减法最小化了近似数据和中心数据的均方误差。3、 计算协方差 2*24、 特征值与特征向量计算5、 特征向量重排序,特征值大的对应的特...原创 2018-04-19 09:37:24 · 680 阅读 · 0 评论 -
Scipy 和opencv 计算凸包(convexHull)
凸包:在数学中,在实向量空间V中的一组点X的凸包或凸包络是包含X的最小凸集。来自Wikipedia。通俗的来说就是包围一组散点的最小凸边形。在scipy.spatial 和opencv 分别有计算凸包的函数,scipy中convexHull输入的参数可以是m*2的点坐标。其返回值的属性.verticess是所有凸轮廓点在散点(m*2)中的索引值。注意:属性.verticess绘制出来的轮廓点是按照...原创 2018-04-13 15:58:03 · 14587 阅读 · 2 评论 -
Opencv--不规则物体检测
如图所示,一副不规则物体离散分布的灰度图,要想检测并标记。需要以下步骤: 1、 二值化,这个过程很简单def thresh_img(img): if img.ndim==3: img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img=cv2.medianBlur(img,3) _,thresh=cv2.thresh...原创 2018-05-26 16:05:22 · 6636 阅读 · 0 评论 -
图像的异或操作和寻找图像局部最大值
首先介绍图像的异或操作,其可以用八个字概括:相同为假,相异为真。 如下: A=array([[ True, True, True], [ True, False, True], [ True, True, True]], dtype=bool) B=array([[ True, True, True], [ True, Tru...原创 2018-05-28 18:00:05 · 7700 阅读 · 1 评论 -
python +opencv 自动消除红眼
红眼形成?由于相机曝光,进光量太大造成,红眼毫无疑问红色通道的值要大于绿色和蓝色,那么就要想办法用绿色和蓝色组合如何消除红眼?1、眼睛检测--利用opencv 自带的xml,笔者以前的博客很多这种2、构造maskmask=r>150&r>(b+g)笔者在加上r>150的时候,有问题,所以只保留了如r>(b+g)这个3、对于mask 进行填洞,因为得到mask可能存...原创 2018-08-14 15:31:45 · 2089 阅读 · 3 评论 -
物体交叉检测---IoU评价指标的计算
对于物体检测的结果不管是HOG+SVM,还是deep learnning 检测到的结果,我们如何去评价我们检测的好坏?一、Jason 提出了IoU---Intersection over Union 来评估物体检测的好坏,IoU算法很简单,其计算条件如下:1、物体的ground truth bounding box2 、预测的bounding box如图:计算公式如下:...原创 2018-08-14 11:56:47 · 2663 阅读 · 0 评论 -
直方图反向投影
其实质是图像分割,即是寻找一副图像的感兴趣物体算法如下: 1、 分别计算原图和roi图的H,S 通道的直方图 2、 计算比率 R=roiHist/Hist 3、 反向投影 B(X,Y)=R(h(x,y),s(x,y)) B(x,y)=min[B(x,y),1] h,s 是原图的h和s 通道 4、 对B 均值滤波 5、 用得到的B(mask) 与原图与操作得到感兴趣物...原创 2018-06-19 14:36:46 · 1133 阅读 · 0 评论 -
20行实现行人检测HOG+SVM
opencv作为开源的视觉库,其早已集成hog+svm算法。所以只需要调用api就可以简单的实现行人检测。# -*- coding: utf-8 -*-# 行人检测import cv2import numpy as npdef svmdetectperson(img): hog=cv2.HOGDescriptor() hog.setSVMDetector(cv2.H...原创 2018-06-19 12:19:08 · 2136 阅读 · 0 评论 -
未标定相机的极线矫正
极线矫正的目的是其两张像对具有相同的y坐标,作用是:比如计算深度图/视差图,计算南极海冰漂移量等。如图: Matlab 中语法为下[T1,T2] = estimateUncalibratedRectification(F,inlierPoints1,inlierPoints2,imagesize)T1,T2是投影变换矩阵,用来变换两张影像。 通过未标定相机来实现极线矫正的步骤如下:...原创 2018-06-19 11:23:28 · 3645 阅读 · 9 评论 -
bundle adjustment(以三角化为例子)
自己推导了以下,字迹丑,请忽略!!!!!原创 2018-05-30 16:54:08 · 1512 阅读 · 0 评论 -
Python 连接pymysql 并读入一个文件夹所有照片的路径存储到sql中
一、 安装mysql 1、 下载地址: 链接:https://pan.baidu.com/s/1vWHuZUJHdZzECFMrUE_rvA 密码:7lrn 将其解压(随便放在哪个盘),然后你会发现有以下几个文件(除了data文件) 进入bin 文件夹,以管理员身份运行cmd,在其中输入mysqld –install ,如不以管理员身份,则报错:Install/Remov...原创 2018-05-29 17:44:16 · 2083 阅读 · 0 评论 -
使用ChARUco 板子进行相机标定
一、 ChARUco 板子以前标定过程中,都是用棋盘板子(张正友),棋盘图案的每个角都被两个黑色方块围绕着,可以更精确地细化,但是棋盘板子有个问题,就是不能被遮挡,必须是完全可见的。ArUco板子具有快速检测和多功能性,然而,ArUco标记的一个问题是,即使经过亚像素细化,它们的角点位置的准确性也不是很高。所以综上, ChARUco 板子结合两者,如图: 二、 标定过程代码#...原创 2018-06-12 15:46:51 · 10454 阅读 · 2 评论 -
图像分类---余弦相似度--svm---softmax
本次主要对比三种分类算法的效果1、 基于余弦相似度2、 基于线性svm3、 基于softmaxregression因为目前还没有学习deep learning 之类,如cnn可以直接处理行图像(如200*200的image ->1*40000),但是深度学习要求大量的数据才能成功。本次实验数据从该网址:http://www.robots.ox.ac.uk/~vgg/data/flowe...原创 2018-04-18 20:30:41 · 7669 阅读 · 1 评论 -
PCA-应用,简单的电影推荐
这篇博客主要介绍PCA算法的应用第一步:下载数据https://grouplens.org/datasets/movielens/下载ratings.dat (场次)和movies.dat.第二步:pandas 读取数据第三步:创建一个m*u 的rating 矩阵,m 是电影,u是用户。 User1_id User2_id Movie1_id 2 0 Movie2_id 2 1 Mo...原创 2018-03-27 19:50:42 · 587 阅读 · 2 评论 -
python 在测绘作业中的一些小应用(与cad交互)-2
接上一篇,转为问题2:# -*- coding: utf-8 -*-import dxfgrabberimport numpy as npfrom dxfwrite import DXFEngine as dxf1dxf=dxfgrabber.readfile(r'C:\Users\Y\Desktop\heigh.dxf')allline=[l for l in dxf.enti原创 2018-02-02 22:50:39 · 3944 阅读 · 2 评论 -
c#与python 交互(调用第三方库失败,自己奋战了三天以失败而结尾,但是还是有些干货)-如果有人弄出来请告诉我
本人编程环境:VS2010 +anaconda 对于C#调用python 的想法是:c#拥有制作ui的优势,不管是winform 还是wpf,而Python做界面比较复杂,所以我想的是如果能调用python的一些第三方库,如 Numpy、scipy 等一些计算库引入,那么我用c#见面读取数据,把数据交给后台python处理,如回归、分类,然后再把数据传回来。也就是数据层、逻辑层交给pytho原创 2018-01-10 22:04:07 · 6788 阅读 · 17 评论 -
python 在测绘作业中的一些小应用(与cad交互)-1
虽然笔者已经基本上告别了本科的测绘工程专业,但是笔者的本科同学他们在实际作业中难免会遇到一些批量化、重复性劳动问题,如果会编程,写上一个小脚本,无疑会提高工作效率。 下面是笔者本科同学处理测量数据时遇到的问题,笔者通过python与CAD的交互完美的解决了! 问题1:提取断面上地性线上的高程 问题2:场平设计高程,十字丝交点的坐标(x,y,z) 首先,python 作为一个胶水语言,与各行原创 2018-02-02 22:33:40 · 17935 阅读 · 3 评论 -
图像拼接—SIFT+Flann匹配+估计单应矩阵—(全景图panorama)
开发环境:python+opencv3 笔者拼接图像的步骤如下: step1: 利用特征算子检测并描述,常见的特征算子在cv2.xfeatures2中都有,比如角点harris,斑点surf,sift等,这些算子的原理不再过多阐述。 step1:对于描述子,要进行匹配,在cv2中匹配可以是暴力匹配也可以选择flann,这是优化过的匹配算法,至于暴力匹配就是sift 的作者lowe 提出的NN原创 2018-01-23 17:49:07 · 4933 阅读 · 5 评论 -
python 调用gdal 处理dem数据
原作者:Sam Johnstone,斯坦福大学地理学博士 ——翻译:橙子 再见Arcgis,你好Python -第1部分-简介和大纲 原作者官网链接作者官网链接 这是第一系列的文章,我将致力于写一个教程,用python做一些基本的(可能更高级的)DEM处理。因为近期没有arcgis,完成一些任务备受挫折,所以我渴望通过锻炼使我自己渴望更加熟悉Python。我希望其他从事这类工作的人可以利用这原创 2018-01-21 22:19:08 · 8779 阅读 · 2 评论 -
python调用百度地图API 实现单点沿线轨迹运动
百度地图API 可以做很多好玩的事情,自己闲来无事,先是照着一些资料做了热力图,然后借助pyqt5做了一个简单的界面,实现gps单点沿线(行车)的轨迹。 先上程序界面和效果图: 过程:1、 申请百度地图开发密匙,界面如下,(另外,我用服务器端一直不成功,所以改用浏览器端就成功了) 2、实现两点之间的路径,必须知道两个地点的经纬度,这个时候在制作热力图中就有这个url:url原创 2017-12-04 17:48:05 · 20373 阅读 · 59 评论 -
pyQt5搭建的简单的图像处理界面
pyQt5搭建的简单的图像处理界面笔者的第二篇博客,前一篇仓促。主要介绍了python2 和python3双版本的安装。本打算研二开始一周写一篇博客,一方面是对自己学习知识的总结,后期忘却也便拿来看看;另一方面,分享给更多的人,助人为乐,胜造七级浮屠。但是从开学到现在惶恐不安,满满的负能量,且身体抱恙。不论是专业课书还是文学书,皆不能尽收眼下,差点得了抑郁症。最近一直做梦,做梦时幸福的,但最可怕的是原创 2017-10-16 16:36:23 · 11938 阅读 · 4 评论 -
python+gdal+遥感图像拼接(mosaic)
作为摄影测量与遥感的从业者,笔者最近开始深入研究gdal,为工作打基础!个人觉得gdal也是没有什么技术含量,调用别人的api。但是想想这也是算法应用的一个技能,多学无害! 关于遥感图像的镶嵌,主要分为6大步骤: step1: 1)对于每一幅图像,计算其行与列; 2)获取左上角X,Y 3)获取像素宽和像素高 4)计算max X 和 min Y,切记像素高是负值maxX1 = mi原创 2018-01-28 16:56:39 · 12559 阅读 · 17 评论 -
阴影检测(shadow detect)
不管是无人机影像或者其它方式摄取的图像,由于光照,难免会存在阴影,笔者这篇文章介绍检测阴影一种简单的方式。参考论文:1、Damaged Building Detection in Aerial Images using Shadow Information2、Linearized Vegetation Indices Based on aFormal Statistical Framework主要...原创 2018-03-27 18:40:38 · 17912 阅读 · 4 评论 -
Matlab 和python 关键函数对照表
Matlab 函数 python clear,clc---清除变量和翻页 reset(清除变量),ctrl+l ctrl+r,ctrl+t,注释/取消注释 ctrl+1注释/取消注释 repmat np.tile @匿名函数 Lambda Find 函数,这个函数太好了,省去循环,符合向量化编程,其返回值是行列索引值,如 [row,col]=find(image==255) np.w...原创 2018-04-14 20:19:52 · 2857 阅读 · 0 评论 -
python 两个小技巧将字典写入txt或者json 文件
1、 不用json 包先来看一个Python 的奇淫技巧i=100s1=’str(i)’这样输出的不会是’100’,毫不疑问。但是s1=’ ‘+str(i)+’ ‘ 这样输出的结果=str(i)。于是看这一条语句:str1='{"lat":' + str(lat) + ',"lng":' + str(lng) + ',"count":' + str(temp) +'}'file.writelin...原创 2018-04-14 20:17:22 · 45576 阅读 · 0 评论 -
python 广义霍夫变换(GHT)
广义霍夫变换(GHT),是霍夫变换的改进,其可以检测任意形状。原理图如下:x = xc + x′ or xc = x − x′ y = yc + y′ or yc = y − y′cos(π − α) =y′/r or y′ = rcos(π − α) = −rsin(α)sin(π − α) =x′/r or x′ = rsin(π − α) = −rcos(α)结合上面得到xc = x ...原创 2018-03-17 21:47:02 · 3622 阅读 · 4 评论 -
用python来解释霍夫变换
Duda and Hart, 1972年提出了HoughTransform,最开始它用来检测直线,后来推广到检测二/三维曲线。如上图,将(x,y)空间变到(m,b)空间,m代表斜率,b代表截距。可以看出(x,y)空间上的点在(m,b)空间是线,所以(m,b)空间上诸多直线的交点的坐标就是待检测直线的斜率和截距,其将全局搜索变为局部搜索,将找线问题变为找点问题。但是,需要注意的是,当线是竖直线的时候...原创 2018-03-16 19:49:13 · 4175 阅读 · 2 评论 -
我的见解---Kmeans和PCA
非监督学习:非监督学习和监督学习的最大区别是不需要先验知识,无需人为干涉。Kmeans -----笔者按照自己的理解写了kmeans也许不对,全当写轮子练手。Kmeans计算的步骤:1、 在数据集中随机选择K个聚类中心,K<len(data);2、 计算每个点到聚类中心的距离,用一个数组储存(len(data),k),如果距离K1(第一个聚类中心)较近的点就标...原创 2018-02-09 20:03:49 · 1434 阅读 · 0 评论 -
以测量平差的角度看待机器学习中的回归问题
对于回归问题,最小二乘可以说是黄金油。首先说正规方程,笔者本科学的是测绘,测绘的核心是确定点在空间坐标系中的位置,对于外业测量的数据难免会存在误差,如何消除粗差,获得最优值,笔者经历了《测量平差》这门课程。而机器学习的正规方程可以对应测量平差的法方程。 如 y=a*x+b 问题,按照平差知识,观测值+观测值改正数=近似值+近似值改正数,即 测量平差的核心就是:min[PVV],即改正数的加权...原创 2018-02-09 13:45:29 · 1173 阅读 · 1 评论 -
ransac 算法python源码实现
ransac算法最早是出现统计学中的,后面逐渐应用到image 领域。其对噪声有很好的鲁棒性。算法如下:#!/usr/bin/env python3# -*- coding: utf-8 -*-from sklearn.linear_model import LinearRegressionfrom sklearn.preprocessing import PolynomialFeatu...原创 2018-10-23 11:55:28 · 5314 阅读 · 0 评论