- 博客(7)
- 收藏
- 关注
原创 OpenGL实现在三维空间拖拽物体
最近本来想用opengl实现一个3维形变平台,但是没想到在鼠标交互这里就遇到了麻烦。opengl中并没有很实用的能够处理鼠标拖拽3D物体的办法,而我又不想导入外部的交互框架把程序搞得很冗杂。害,那咋办嘛,只好自己从底层实现这个功能了。一、环境说明这次实验环境是根据LearnOpenGL网站(https://learnopengl-cn.github.io/)一步步搭建起来的,包括着色器类、网格类、模型类以及摄像机类,感兴趣的同学可以参考其网站,有很详细的教程。此外除了opengl常用库(glew、g
2020-11-29 20:40:55 3828 9
原创 图像频域处理之高斯滤波器
在前两篇文章中,我们实现了图像的离散傅里叶变换与反变换,而这正是对图像频率域进行处理的前提。接下来这篇文章打算在已有工作的基础上实现高斯滤波器,对图像进行简单的频率滤波。一、频率域滤波基础在上一篇关于FFT的文章中已经介绍到,相比于核数较大的空间域滤波来说,频率域滤波有着明显的优势。此外,频率域还有一些其他特性,如远离变换的原点时,低频对应于图像中变化缓慢的灰度分量;而更加远离原点时,较高的频率开始对应于图像中越来越快的灰度变化,它们是图像中由灰度急剧变化表征的物体边缘或其他分量。正是这些特性,能够
2021-04-08 20:53:25 6052 1
原创 傅里叶快速算法(FFT)的理解与实现
上篇文章中我介绍了离散傅里叶变换(参考这里),所以这次决定在DFT的基础上再实现一下FFT算法。一、快速傅里叶变换的意义直接实现DFT的公式在频率域的处理中并不实际。蛮力实现需要约次乘法和加法运算。对于中等大小的图像(如2048x2048),进行一次二维DFT运算就需要约17万亿次乘法和加法,且还不包括计算一次并存储到查找表中的指数运算。所以如果说人们没有发现能够将计算量降到次乘法和加法的快速傅里叶变换(FFT),那么之前介绍的内容也将没有任何实用价值。图1 冈萨雷斯书中FFT关于一维DFT的
2021-03-02 16:15:52 9240
原创 图像处理之离散傅里叶变换(DFT)
上学期修了数字图像处理这门课程,想着正好趁这个机会写(shui)几篇文章,告诉自己没有白学。傅里叶变换,是图像处理中的一个重要内容,频率域处理的操作都要建立在傅里叶变换的基础上,所以作为这个专栏的开篇,不如就简单介绍和实现一下离散傅里叶变换(DFT)。一、傅里叶级数和变换法国数学家傅里叶提出,任何周期函数都可表示为不同频率的正弦函数和/或余弦函数之和,其中每个正弦函数和/或余弦函数都要乘以不同的系数,这个和就称为傅里叶级数。按照这个思想,周期为的连续变量的周期函数,可表示为乘以适当系数的正弦函数和余
2021-03-01 18:37:10 16466 2
原创 来绘制贝塞尔曲线吧
在图形学中,绘制曲线是非常重要也是非常基础的课题之一,其中最容易想到可能就是贝塞尔曲线,当下许多的数学算法库或者绘图api都支持贝塞尔曲线的绘制;既然如此,这次不妨就让我们使用OpenGL手动绘制一下Bezier曲线,并从中探究他的原理和性质。一、贝塞尔(Bezier)曲线介绍贝塞尔曲线采用由顶点序列组成的多边形来控制曲线的几何形状。有趣的是,它的出现,一开始只是为了方便汽车的主体设计;它...
2020-04-11 16:13:26 2221 3
原创 高效寻路算法——A*(A-Star)
在数据结构中我们学过图,而图中一个很重要的课题就是与最短路径、最优路径相关的寻路问题,包括Dijkstra、深度优先搜索,都是其中的经典算法;同时,在游戏开发中,也常常需要设计合适的寻路算法来实现怪物AI的移动、人物自动寻路等常用功能,在各种算法中,A*无疑是最常用也是最经典的一种,作为进一步了解游戏寻路机制的基础,A*的学习很有必要,因此接下来这篇文章会从原理入手,一步步解析算法的过程并且...
2020-01-23 22:26:00 1684
原创 小球的平面弹射问题
最近参与的项目总是会涉及到物体的平面反弹问题,于是我就仔细研究了一下,得到一个适用于任何开发工具的通用性方法;下面我将这个方法分享给大家,欢迎大家提出问题、与我讨论^ _ ^
2019-11-10 14:12:16 717
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人