自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式:单例模式

单例模式保证一个类只有一个实例,并且提供了全局访问该实例的方法。而懒汉则是有一种能少创建就少创建的偷懒的感觉,即只要在第一次调用获取实例的方法时才会创建唯一实例,从而节省资源。总结:饿汉单例适合在程序启动时资源充足,且需要立即使用单例的场景。懒汉单例适合资源敏感的场景,或者单例实例较大且不一定每次都需要实例化时使用。饿汉就是一点不顾一切的感觉,在类加载的时候就创建唯一的单例实例,不论该实例是否会被使用。在写具体代码之前还需要知道单例模式的两种分类,饿汉和懒汉。所谓的饿和懒其实是创建实例的状态形容。

2024-10-09 15:15:49 93

原创 C++:类型转换

首先要明白子类的内存布局,当子类继承父类的时候,子类对象内存布局首先是父类的内存空间,然后是子类新增的数据成员。如果基类有虚函数,通过基类指针调用虚函数时,会正确地调用派生类中覆盖的虚函数(对于虚函数指针来说,子类会进行重覆盖,所以"只能访问基类的数据成员和函数"这一项不包含虚函数指针,虚函数指针对于b来说也是可以看得见的。可以执行运行时类型检查,确保转换是安全的。而“父类指针指向子类”这一操作,Base*指向的是子类对象中父类部分的起始地址,也就是说,父类指针只“看得见”子类对象中属于父类的部分。

2024-09-27 13:48:07 245

原创 C++:类的内存分布

类中的所有方法(成员函数)都会放在代码区,所以类的大小一般只计算类中成员变量的对齐之后大小的综合(如果没有虚函数的时候,如果有虚函数则会在类的首地址中有一个虚函数指针,32位系统是4个字节。空类占用空间位1,类中没有任何的成员变量本应该是0,但是这个时候实例化多个对象,如果是0的话这些对象都不会再内存占用空间也没有地址,也不会将这些对象进行区分了,因此编译器会给空类隐含加一个字节,保证用此类定义的对象都有一个独一无二的地址。编译器所进行的一些特殊处理,比如空类的处理以及内存对齐的开销。

2024-05-29 15:57:17 236

原创 C++:Static

回想C++程序中内存的划分是什么呢?从上到下首先是内核空间,然后是栈内存,内存映射段,堆,数据段,和代码段。用一张图的解释就是:在这里主要探讨static,因此主要讨论数据段。数据段用于存储静态全局变量、静态局部变量和静态常量等静态数据,在程序运行期间,数据段的大小固定不变,但其内容可以被修改。按照变量是否被初始化,数据段可分为已初始化数据段和未初始化数据段。

2024-04-16 18:50:54 976

原创 C++:重载

运算符重载本质上就是函数重载。这里举例子是定义三维数组。下面代码是进行简单的定义,输出分别是000和123。现在问题来了,如果要想两个vec3变量进行加减乘除运算,则需要对运算符进行重载,vec3相当于自定义类型。上述代码就是对运算符进行重载,最终可以实现直觉上的两个Vec3类型的相减。

2023-11-20 19:20:12 190

原创 C++:编译与链接

当然头文件中可以进行声明,也可以进行定义,源文件则是对头文件的引用,涉及具体的实现。,包含函数、变量的定义和声明,比如我在源文件1中定义的一个变量a,但我在源文件2中也会用到,这个时候就需要在源文件2中进行声明,这样做的目的是为了让编译器在目标文件链接的时候能将其关联起来,知道源文件2声明的变量a是在源文件1中定义的,变量和函数都如此。这是一个简单的加工模型,比较直观,但是有一个问题,就是如果对源程序进行修改,则需要全部进行重新加工,还有就是加工耗时长, 即无法处理大型的、工业级的程序,那么如何处理呢。

2023-08-25 17:23:33 274

原创 C++:三大函数拷贝构造、拷贝复制和析构函数详解

编译器会给出默认的拷贝构造、拷贝赋值,但针对指针会有深拷贝浅拷贝的问题,会出现内存泄漏的风险。以String类实现为例。如果一个类中有指针成员,则必须有拷贝构造和拷贝赋值。因为编译器默认的赋值操作仅仅是浅拷贝。首先对上面BigThree来进行分析。

2023-06-24 23:18:55 580

原创 C++:虚函数

如果释放父类指针指向子类对象的时候,析构函数不设置为虚函数就会只析构基类而不析构子类。会造成内存泄露。

2023-06-22 13:05:59 325

原创 C++结构体struct和共同体union的区别

使几个不同类型的变量共同占用一段内存。当共同体中存入新的数据后,原有的成员就失去了作用,新的数据被写到union的地址中。sizeof(union)是最长的数据成员的长度。对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。把不同类型的数据组合成一个整体,自定义类型。struct每个成员都有自己独立的地址,sizeof(struct)是内存对齐后所有成员长度的加和。

2023-05-10 16:45:36 119 1

原创 C++内存管理

堆是C++中用来存储动态分配内存的内存分区,堆内存的分配和释放需要手动管理,可以通过new/delete或malloc/free等函数进行分配和释放。前面例子中的本地变量是简单类型,在C++中成为POD类型,对于带有构造和析构函数的非POD类型变量,栈上的内存分配同样有效,编译器会在合适的时机,插入对构造函数和析构函数的调用。由于代码区是只读的,所以会被多个进程共享,在多个进程同时执行同一个程序时,操作系统只需要将代码段加载到内存中一次,然后让多个进程共享这个内存区域即可。值得一提的是,上面的。

2023-05-08 16:21:34 726

原创 右值引用详解

左值,lvalue,就是赋值符号左边的值,如a=5,a就是左值,但是准确的来说,左值是表达式(不一定是赋值表达式)后仍然存在的持久对象。右值,rvalue,右边的值,是指表达式结束就不存在的临时对象。纯右值,prvalue,传统意义上的右值。在介绍将亡值之前对左右和右值做个总结,有地址的变量就是左值,没有地址的字面值、临时值就是右值。将亡值,xvalue,是C++11为了引入右值引用而提出的概念,与纯右值的不同点在于,将亡值是即将被销毁、却能够被移动的值。

2023-04-25 15:50:29 2920

原创 体渲染相函数介绍

主要介绍相函数的概念和用法

2023-03-24 14:57:03 532 1

原创 1、Unity体绘制显示

unity通过texture3D读取体数据

2022-12-23 09:31:46 542

原创 vtk体绘制代码暂存

【代码】vtk体绘制代码暂存。

2022-09-16 09:29:06 154

原创 TinyRenderer从零实现(二):lesson 1 直线绘制算法

图形学中画线算法的总结

2022-08-25 13:26:12 178

原创 TinyRenderer从零实现(一):lesson 0 准备工作

【代码】TinyRenderer从零实现(一):lesson 0 准备工作。

2022-08-25 09:35:27 218

原创 opengldemo学习

learnopengl demo

2022-08-18 09:41:34 340

原创 learnopengl箱子阶段代码

learnopengl代码箱子阶段

2022-08-16 16:25:26 229

原创 个人代码导航

1、光追https://github.com/HrReborn/RayTracingOne2、opengl暂定3、u3d暂定

2022-04-02 17:27:39 164

原创 Vector去除重复元素

看到一个比较经典的算法,利用set自动去重的机制//定义并初始化一个vectorvector<int> vec(10,1); //vec里有10个值为1的元素set<int>s(vec.begin(), vec.end());vec.assign(s.begin(), s.end());//完成去重...

2022-03-28 11:03:04 3578 1

原创 python数据处理代码暂存

import xlwings as xwimport numpyapp = xw.App(visible=True,add_book=False)#打开lineDetial_20211213174707699表处理数据lineDetial_20211213174707699 = app.books.open('lineDetial_20211213174707699.xlsx')lineDetial_20211213174707699Sheet1 = lineDetial_20211213174.

2021-12-19 18:36:17 680

原创 GAN的原理与应用总结

文章:一文看懂深度学习(白话解释+8个优缺点+4个典型算法)

2021-11-05 16:25:59 155

原创 GCN的原理与应用总结

待补充

2021-11-05 16:24:46 194

原创 Unsupervised Training for 3D Morphable Model Regression论文笔记

1、abstract本文由普林斯顿大学、谷歌和麻省理工学院合作完成,是 CVPR 2018 的 spotlight 文章。使用无监督训练的方法基于 3DMM 进行人脸三维重建。论文基于编码器和解码器模型,创新性地将人脸识别网络引入训练的损失函数,使得生成的 3D 人脸能很好地保留了输入图片的人脸个体特征。该模型旨在拟合形状和纹理,并没有学习姿态表情和光照。算法的编码器接受图像作为输入,输出用于 3DMM 模型的参数。解码器接受参数后合成 3D 人脸。为了使网络不仅能保持个体信息,还能生成自然真实的人脸,

2021-11-04 18:03:11 425 1

原创 FaceNet

FaceNet使用深度卷积网络进行人脸识别,该方法中最重要的部分在于整个系统的端到端学习。算法:三元组损失,输入是三张图片(Triplet),分别为 固定影像 A(Anchor Face),反例图像 N(Negative Face )和 正例图像 P(Positive Face)。A与 P为同一人,与 N 为不同人。那么 Triplet Loss 的损失即可表示为:也就是说,我们要让同一个人的图片更加相互接近,而不同人的照片要互相远离。三重损失将固定影像 A 与正例 P 之间的距离最小化了,这两

2021-11-04 09:48:57 660

原创 CNN结构组成

1、卷积层由滤波器filters和激活函数构成。 一般要设置的超参数包括filters的数量、大小、步长,以及padding是“valid”还是“same”。当然,还包括选择什么激活函数。2、池化层这里里面没有参数需要我们学习,因为这里里面的参数都是我们设置好了,要么是Maxpooling,要么是Averagepooling。 需要指定的超参数,包括是Max还是average,窗口大小以及步长。 通常,我们使用的比较多的是Maxpooling,而且一般取大小为(2,2)步长为2的filter,这

2021-10-25 15:16:07 1030

原创 Towards High-Fidelity 3D Face Reconstruction from In-the-Wild Images

论文链接:https://arxiv.org/pdf/2003.05653.pdfAbstract首先肯定了3DMM 从单视图图片重建人脸的巨大成功,然后点出了存在的不足——面部纹理失真,然后介绍了近几年的研究方向向使用从面部纹理的高分辨率 UV map的大规模数据库训练的生成网络恢复高质量面部纹理,但是这些网络是不公开的,并且难以复现,本文提出了从in-the-wild单视图图像重建具有高保真度的3D人脸,而无需捕获大规模人脸纹理数据库。主要思想是使用输入图像中的面部细节改进由基于 3DMM 的.

2021-10-25 15:08:17 698

原创 Generative Adversarial Network Fittingfor High Fidelity 3D Face Reconstruction论文笔记

1、摘要总结了过去人脸重建的趋势(深度卷积的力量神经网络(DCNN)),和最近几年可微渲染器来学习面部身份特征与 3D 可变形模型的形状和纹理参数之间的关系。但这些都无法高质量的重建纹理和高保真度,介绍了论文利用生成对抗网络 (GAN) 和DCNNs 来从单个图像重建面部纹理和形状。2、Introduction过去:主要的研究方向,利用深度卷积神经网络进行3D形状和纹理重建,包含的两种方法:1训练回归DCNN从图像到3DMM的参数,2使用一个3DMM来合成图像并且定制一个使用DCNN估计深度的i

2021-10-18 15:42:21 861

原创 CVPR2019人脸重建

1、MMFace: A Multi-Metric Regression Network for Unconstrained Face Reconstructionpaper:http://openaccess.thecvf.com/content_CVPR_2019/papers/Yi_MMFace_A_Multi-Metric_Regression_Network_for_Unconstrained_Face_Reconstruction_CVPR_2019_paper.pdfcode:2、M

2021-10-13 21:33:33 285

原创 CVRP2020人脸重建

1、Towards High-Fidelity 3D Face Reconstruction From In-the-Wild Images Using Graph Convolutional Networkspaper:https://arxiv.org/pdf/2003.05653.pdfcode:https://github.com/FuxiCV/3D-Face-GCNs2、AvatarMe: Realistically Renderable3D Facial Reconstructio.

2021-10-13 21:08:57 353

原创 CVPR2021人脸重建

1、Lifting 2D styleGAN for 3D-Aware Face Generation(提升2D StyleGAN 以生成3D感知人脸)paper:https://arxiv.org/abs/2011.131262、Riggable 3D Face Reconstruction via In-Network Optimization(通过网络内优化进行可操纵的3D人脸重建)paper:https://arxiv.org/abs/2104.03493code:GitHub - z

2021-10-13 16:47:36 650

原创 Nonlinear 3D Face Morphable Model 论文笔记

1、传统线性3DMM:模型和纹理分别是平均值+基础值*系数——S = S¯ + Aα,T (l) = T¯(l) + Bβ,此为3DMM的基础。并且提出了将 3D 人脸投影到图像平面上使用弱透视投影模型(3D转为2D透视投影模型):g(α, m):3D顶点位置在2D中的函数输出 f:比例因子 :正交投影矩阵 R:欧拉角表示旋转角度 t2d:平移向量 M :有维度2×4,有六个自由度,通过一个 6 维向量 m来参数化。 然后使用 2D 图像渲染纹理和照明模型。2、非线性3DM.

2021-10-12 16:57:30 1536

原创 人脸重建汇报1

定义:3D人脸重建——通过2D图片生成3D模型我们可以用这样一个表达式来建模3D人脸模型:M = ( S , T )其中,S表示人脸3D坐标形状向量(shape-vector):S = ( x 1 , y 1 , z 1 , x 2 , y 2 , z 2 , ⋯ , x n , y n , z n ) TT表示对应点的文理信息向量(texture-vector):T = ( R 1 , G 1 , B 1 , R 2 , G 2 , B 2 , ⋯ , R n , G n , B...

2021-10-09 11:26:33 699

原创 THREE.JS源码:EventDispatcher

事件调度,是一个事件的容器,Object3D继承自该类,说明该类是three.js的实体基类,作用是隔离事件触发与事件处理的过程,降低实体之间的耦合度。//定义事件调度类function EventDispatcher() {}//定义该类的原型Object.assign( EventDispatcher.prototype, { //添加事件监听,可针对同一个事件添加多个监听 addEventListener: function ( type, lis...

2021-09-29 10:31:27 477

原创 光栅化的实现

遍历三角形-对每个三角形逐像素遍历-直线和三角形求交判断点是不是在三角形内-着色代码如下:void rasterize(Image& image, const Scene& scene, const Camera& camera) { const int w = image.width(); const int h = image.height(); DepthBuffer depthBudder(w.h, INFINITY); for (unsigened int

2021-09-26 17:54:00 148

原创 图形学的进阶知识点

光线——三角形求交体模型:有限元模型,体素,粒子系统,雾材质模型:散射函数,布朗反射,归一化Blinn-Phong反射函数半透明和颜色混合阴影:shadowmap光栅化

2021-09-26 15:45:23 149

原创 三维人脸重建

1、基础2、论文人脸论文解读系列——三维人脸重建(二) - 程序员大本营

2021-09-24 11:13:38 153

原创 WEBGL真实火焰实现(完整)

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style type = "text/css"> html, body{ margin: 0; height: 100%; } can.

2021-09-18 18:05:18 537

原创 WEBGL真实烟雾实现

<!DOCTYPE html><html lang="en"><head> <title>Title</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,user-scalable=no,minimum-scale=1.0,maximum-scale=1.0"> <styl.

2021-09-18 18:03:33 380

原创 THREE.JS真实火焰着色器实现

<!DOCTYPE html><html lang="en"><head> <title>Title</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,user-scalable=no,minimum-scale=1.0,maximum-scale=1.0"> <styl.

2021-09-18 18:02:33 1023

个人demo(持续更新中)

这个我的个人demo,仅限个人学习、求职中使用。

2022-09-13

汽车obj模型.zip

用于导入路径漫游汽车模式下的模型

2021-09-03

空空如也

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

TA关注的人

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