Computer Vision
计算机视觉相关学习历程
AplusX
专注于混合现实(MR)/计算机图形学(CG)/计算机视觉(CV)相关研究
展开
-
Opencv3.4.2到Opencv4.4.0版本切换的报错记录
Opencv3.4.2到Opencv4.4.0版本切换的报错记录。原创 2023-07-13 09:25:55 · 411 阅读 · 0 评论 -
SPADE(GauGAN)算法讲解
SPADE(GauGAN)转载 2022-11-09 09:16:09 · 488 阅读 · 0 评论 -
Python 全景图转天空盒图像
import numpy as npfrom scipy import ndimage, miscimport sys, math, osfrom PIL import Imagedef cubemap(filename): SIZE = 1024 HSIZE = SIZE / 2.0 im = ndimage.imread(filename) side_im = np.zeros((SIZE, SIZE), np.uint8) color_side =转载 2022-05-17 14:18:48 · 846 阅读 · 4 评论 -
C++&Python计算相机响应函数
算法是基于Debevec在1997年的论文Recovering High Dynamic Range Radiance Maps from Photographs之前在博客中也给出了几个用于学习理论知识的链接CRF理论学习下面的C++代码是基于这个修改的。包括:Image Irradiance的归一化指数函数拟合ICRF输出到本地文件C++#include <iostream>#include "opencv2/highgui/highgui.hpp" #includ原创 2022-02-09 11:00:16 · 1441 阅读 · 0 评论 -
基于SfM计算相机姿态
具体过程为:① 通过相机标定方法,预先计算相机的内参矩阵;② 相邻帧特征点匹配,并结合内参矩阵计算本征矩阵;③ 本征矩阵分解获得相机的外参矩阵[R | T],最终的相机移动距离等于矩阵T的Frobenius范数。#include <opencv2\xfeatures2d\nonfree.hpp>#include <opencv2\features2d\features2d.hpp>#include <opencv2\highgui\highgui.hpp>#原创 2021-12-29 09:05:39 · 1164 阅读 · 0 评论 -
基于C++的图像散度计算
在x y的梯度上再求一次导数后相加便是散度。注意不要使用convertScaleAbsint main(int argc, char*argv[]){ cv::Mat IMG = cv::imread("./img.jpg", 1); cv::Mat k = getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3), cv::Point(-1, -1)); cv::Mat graySrc, grad_x, grad_y; cv::Mat abs_原创 2021-12-15 20:57:32 · 3304 阅读 · 0 评论 -
基于C++的骨架提取的鼻祖算法
算法是基于A Fast Parallel Algorithm for Thinning Digital Patterns论文https://blog.csdn.net/keneyr/article/details/88944563简单的解释算法:https://blog.csdn.net/xukaiwen_2016/article/details/53135866#include <opencv2/opencv.hpp> #include <opencv2/core/c转载 2021-11-19 09:08:53 · 2767 阅读 · 6 评论 -
C++ OpenCV形态学操作--开闭操作,形态学梯度,顶帽,黑帽
https://my.oschina.net/u/4582134/blog/4582844转载 2021-11-08 14:22:12 · 210 阅读 · 0 评论 -
基于Windows配置COLMAP环境
colmap-3.6-dev工程第三方依赖库Eigen==3.3.7 https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zipFreeImage==3.17.0 https://github.com/twnkls/FreeImage-3.17.0-VS2015/archive/master.zipglew==2.1.0 https://kent.dl.sourceforge.net/project/glew/glew/2..原创 2021-11-08 09:58:48 · 1332 阅读 · 1 评论 -
鱼眼图像的unwarping过程
第一行是提取有效区域后的鱼眼图;第二行就是展开图(第二张和第四张根据需要裁剪了一部分)#include <iostream>#include "opencv2/highgui/highgui.hpp" #include "opencv2/opencv.hpp" #include <opencv2/core/core.hpp> using namespace std;using namespace cv;#define IMAGE_WIDTH 1000.原创 2021-11-06 14:53:42 · 375 阅读 · 4 评论 -
基于C++&CUDA实现全景图(2:1 Equirectangular Image)转换为天空盒图像
基于C++在CPU中运行:#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include<math.h>#include <iostream>#define OutSize 1000using namespace cv;using原创 2021-11-04 20:30:21 · 2250 阅读 · 0 评论 -
基于Eigen库和Matlab计算非线性多元函数最小值
https://www.zhihu.com/question/57557247/answer/332589995https://www.bilibili.com/read/cv5132071/转载 2021-10-14 14:01:38 · 842 阅读 · 0 评论 -
基于Sobel计算图像梯度图
cv::Mat inputIMG = cv::imread("./input/src.jpg", 1); cv::Mat graySrc, grad_x, grad_y; cv::Mat abs_grad_x, abs_grad_y; cv::cvtColor(inputIMG, graySrc, cv::COLOR_BGR2GRAY); cv::GaussianBlur(graySrc, graySrc, cv::Size(3, 3), 0, 0, 4); // 计算x方向的梯度 Sobel.原创 2021-10-12 09:30:07 · 613 阅读 · 0 评论 -
基于C++的本征图像分解(Intrinsic Image Decomposition)
利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分。Shading Image 是反应原图像光照情况的图像部分。//main.cpp#include "lum_retinex.h"#include <open原创 2021-07-06 13:46:40 · 1439 阅读 · 6 评论 -
基于VideoCapture(c++)的视频读入算法
#include <cmath>#include "opencv2/highgui/highgui.hpp" #include "opencv2/opencv.hpp" #include <opencv2/core/core.hpp> #include<iostream>using namespace cv;using namespace std;void main() { VideoCapture cap; cap.open("./1原创 2021-06-18 17:37:27 · 623 阅读 · 0 评论 -
实现2D全景图的中心视野变换
对于同一场景的2D全景图,如果想改变其中心位置,该如何计算呢?#include <glad/glad.h>#include <GLFW/glfw3.h>#include "opencv2/highgui/highgui.hpp" #include "opencv2/opencv.hpp" #include <opencv2/core/core.hpp> #include <iostream>#include <vector&g原创 2021-04-02 10:49:23 · 573 阅读 · 0 评论 -
计算图像间RMSE和SSIM
#include <iostream>#include <cmath>#include "opencv2/highgui/highgui.hpp" #include "opencv2/opencv.hpp" #include <opencv2/core/core.hpp> using namespace std;using namespace cv;float RMSE_OUR_HDR(Mat& HDRGT, Mat& My原创 2021-03-28 20:19:11 · 1228 阅读 · 0 评论 -
使用GetNextCell或者GetCell输出vtkCellArray的坐标点
vtkSmartPointer<xxx> Point_Array;vtkCellArray * Cell_Array = Point_Array->GetOutput()->GetPolys();已知Cell_Array是包含多边形顶点信息的数组。GetNextCell(vtkIdType& npts, vtkIdType* &pts)网上常用的是这个,用法是:vtkIdType npts, *pt_id; //npts表示一个cell中顶点数目,pt_i原创 2021-03-07 15:28:17 · 2603 阅读 · 5 评论 -
基于C++&Opencv的傅里叶变换代码
https://feimo.blog.csdn.net/article/details/112173075转载 2021-01-21 09:26:38 · 306 阅读 · 0 评论 -
keras中conv2d,conv2dTranspose的Padding详细介绍
https://blog.csdn.net/hlpower/article/details/103547479?utm_medium=distribute.pc_relevant.none-task-blog-title-10&spm=1001.2101.3001.4242转载 2020-11-09 15:44:35 · 473 阅读 · 0 评论 -
ResNet学习
https://www.cnblogs.com/qianchaomoon/p/12315906.htmlhttps://blog.csdn.net/sunny_yeah_/article/details/89430124原创 2020-11-03 10:55:47 · 123 阅读 · 0 评论 -
神经网络输出大小(卷积层及池化层)
原创 2020-11-03 10:17:56 · 447 阅读 · 0 评论 -
基于Keras的CNN/Densenet实现分类
1. 定义网络的基本参数定义输入网络的是什么:input = Input(shape=(240, 640, 3))反向传播时梯度下降算法SGD一定会收敛,但是速度慢Adam速度快但是可能不收敛[link](https://blog.csdn.net/wydbyxr/article/details/84822806)sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)adam = optimizers.A原创 2020-09-22 16:04:38 · 1279 阅读 · 1 评论 -
BP简单理解
转自:https://zhuanlan.zhihu.com/p/25867953转载 2020-09-16 21:59:18 · 275 阅读 · 0 评论 -
canny边缘检测 关于2个阈值参数
低于阈值1的像素点会被认为不是边缘;高于阈值2的像素点会被认为是边缘;在阈值1和阈值2之间的像素点,若与第2步得到的边缘像素点相邻,则被认为是边缘,否则被认为不是边缘。转载 2020-08-14 14:05:58 · 4680 阅读 · 0 评论 -
Debevec方法计算相机响应函数CRF
https://blog.csdn.net/weixin_37970359/article/details/105361886https://blog.csdn.net/u013049912/article/details/85157402PDF:https://sci-hub.tw/10.1145/258734.258884转载 2020-08-13 10:21:35 · 2609 阅读 · 0 评论 -
相机响应曲线、ISO详解
相机响应曲线:外界光对应到拍摄的图像的像素值,中间的转化过程用曲线表示。ISO:感光度,衡量底片对光的灵敏程度。上面这幅图就是相机的响应曲线横坐标为真实亮度的对数纵坐标为像素亮度/底片密度——在这里我们一般使用8bit的图,也就是(0,255),因此当灰度级别在50时,我们图像的值为0.5X255=78;灰度级别在100时,我们的图像的值为1X255=255我们可以看出,响应是一条s曲线,s曲线的好处就是较低数值响应不敏感,较高数值响应不敏感,中间数值响应敏感。人眼对中间灰度敏感,因此s曲线转载 2020-07-22 20:21:44 · 3576 阅读 · 0 评论 -
天顶角Zenith&方位角Azimuth
1.天顶角(Zenith Angle) 可理解为纬度天顶角指光线入射方向和天顶方向的夹角,有个英文解释地挺好的:The zenith angle is the angle between the zenith line(pointing straight up) and the direction to the sun (Satellite)。2.太阳方位角(Solar Azimuth Angle)可理解为经度太阳方位角即太阳所在的方位,指太阳光线在地平面上的投影与当地子午线的夹角,可近似地看作原创 2020-07-13 11:04:33 · 7630 阅读 · 0 评论 -
卷积后feature map尺寸计算公式
像素宽度:W(Width)填充大小:P(Padding)卷积核大小:K(Kernel-size)步长大小:S(stride)卷积后所得feature map尺寸大小计算公式如下:补充:1.Padding的作用用于解决图像边缘信息损失的问题;2.计算卷积后map尺寸时若不为整数则向下取整,而计算pooling后尺寸时则向上取整。...转载 2020-07-07 15:30:55 · 1183 阅读 · 0 评论 -
谷歌街景原理
谷歌街景原理原文:http://code.google.com/apis/maps/documentation/javascript/services.html#StreetView翻译:任我骏驰(转载请注明出处,标明本文地址)创建自定义全景图(原理) (Creating Custom Panoramas)Each Street View panorama is an imag...转载 2019-01-22 09:00:20 · 3504 阅读 · 0 评论 -
通俗理解神经网络
form:http://tieba.baidu.com/p/3013551686?pid=49703036815&see_lz=1#先从回归(Regression)问题说起。我在本吧已经看到不少人提到如果想实现强AI,就必须让机器学会观察并总结规律的言论。具体地说,要让机器观察什么是圆的,什么是方的,区分各种颜色和形状,然后根据这些特征对某种事物进行分类或预测。其实这就是回归问题。...转载 2018-12-25 20:34:01 · 740 阅读 · 0 评论 -
OpenCV Error: Assertion failed (size.width>0 && size.height>0) simple code
This error means that you are trying to show an empty image. When you load the image with imshow, this is usually caused by:The path of your image is wrong (in Windows escape twice directory delimit...转载 2018-12-18 18:31:11 · 925 阅读 · 0 评论 -
图像的上采样和下采样
图像的上采样(upsampling)与下采样(subsampled)缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是:放大原图像,从而可以显示在更高分辨率的显示设备上。对图像...转载 2018-12-18 12:30:31 · 725 阅读 · 0 评论 -
全连接层的介绍
将多次卷积和池化后的图像展开进行全连接,如下图所示。 全连接层需要把输入拉成一个列项向量 比如你的输入的feature map是2X2,那么就需要把这个feature map 拉成4X1的列向量,如果你的feature map 的channels是3,也就是你的输入是3X2X2,也就是相当于有了12个像素点,你就需要把feature map 拉成12X1的列向量,这时候,...原创 2018-12-23 01:31:10 · 2094 阅读 · 0 评论 -
通俗理解卷积神经网络
1 人工神经网络1.1 神经元 神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。 举个手写识别的例子,给定一个未知数字,让神经网络识别是什么...转载 2018-12-23 01:18:56 · 822 阅读 · 0 评论 -
卷积神经网络CNN——图像卷积与反卷积(后卷积,转置卷积)
https://blog.csdn.net/fate_fjh/article/details/52882134转载 2018-12-21 14:46:10 · 431 阅读 · 0 评论 -
SIFT详解
https://www.cnblogs.com/wangguchangqing/p/4853263.html转载 2018-12-14 20:57:25 · 305 阅读 · 0 评论 -
协方差及PCA降维计算
PCA(Principal Component Analysis,主成分分析),PCA是一种无监督算法,也就是我们不需要标签也能对数据做降维,这就使得其应用范围更加广泛了。那么PCA的核心思想是什么呢?这里我们提到了方差,咱们可以想象一下,如果一群人都堆叠在一起,我们想区分他们是不是比较困难,但是如果这群人站在马路两侧,我们就可以很清晰的判断出来应该这是两伙人。所以基于方差我们可以做的就是让方差来...原创 2018-12-14 20:34:40 · 4543 阅读 · 0 评论 -
Harris角点详细解释
1. 不同类型的角点在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。从图像分析的角度来定义角点可以有以下两种定义:角点可以是两个边缘的角点; 角点是邻域内具有两个主方向的特征点;前者往往需要对图像边缘进行编码,这在很大程度上依赖于图像的分割与边缘提取,具有相当大的难度和计算量,且一旦待检测目标局部发生变化,很可能导致操作的失败。早期主要有Rosenfeld和Freema...转载 2018-11-02 10:35:34 · 17739 阅读 · 3 评论 -
Harris角点检测原理详解
关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。1. 何为角点?下面有两幅不同视角的图像,通过找出对应的角点进行匹配。再看下图所示,放大图像的两处角点区域:我们可...转载 2018-11-02 09:11:35 · 239 阅读 · 0 评论