自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux常用命令

sa@仅记录常用命令的常用用法,不是大全!

2023-07-16 15:50:58 89

原创 平滑降噪与边缘增强

基础图像预处理知识

2022-07-24 21:11:38 2987 1

原创 gcc constructor编译属性的作用

GNU C 的一大特色就是__attribute__ 机制。attribute 是一个编译指令,可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。attribute 书写特征是:attribute 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__ 参数。若将某一函数的声明中添加 __ attribute__((constructor)) 属性,那么它具有两种运

2022-05-03 17:15:06 378

原创 方向导数与梯度

导数一元函数的导数,为函数曲线在某一点的切线斜率,求解释可依据求极限思想偏导数多元函数,例如二元函数,函数为一个空间曲面,因此计算某点关于一元变量导数时,必须假定另一元变量是常数,由于不是完全导数,所以称为偏导数 偏导数f_x (x_0,y_0)表示固定面上一点对x轴的切线斜率; 偏导数f_y (x_0,y_0)表示固定面上一点对y轴的切线斜率。 拓展到高阶偏导数:如果二元函数z=f(x,y)的偏导数f_x (x_0,y_0)(这个表示在x0,y0出的x的偏导数)与f_y (x_0,y_.

2022-04-23 21:06:22 1703

原创 最小二乘与极大似然估计

两者思想的差异最小二乘估计与极大似然估计都是用来样本值来估计真实值的,之所以需要估计,是因为用数学量化真实世界事物关系时总是存在误差。我们尽管痛苦的承认了有不能解释的误差,但是我们依然想尽可能的让这种『不被解释』的误差程 度最小,于是我们就想最小化区种不被解程的程度。因为点可能在线的上面或者下面,故而距离有 正有负,取绝对值又大麻烦,于是我们就直接把每个距旁都取一个平方变成正的,然后试图找出一 个距离所有点的距离的平方最小的这条线 这就是最小二乖法°、了,简单粗暴而有效。而极大似然则更加的有哲

2022-04-15 18:32:03 4982 1

原创 加速度计解算姿态角

姿态角(欧拉角)欧拉角主要用于描述刚体在固定三维参考坐标系下由于绕三轴任意旋转而形成的姿态角,具体描述参看欧拉角说明图中xyz为固定参考系坐标,XYZ为刚体自有坐标系(假定右手定则,即大拇指指向某一轴正方向,握拳是其余手指的转动方向为姿态角变化的正方向),则定义绕固定坐标系的z轴旋转:航向角yaw, 转动 y 角度绕固定坐标系的y轴旋转:俯仰角pitch,转动p 角度绕固定坐标系的x轴旋转:横滚角roll, 转动r 角度可以看出欧拉角或者姿态角是相对各个轴的角度偏移,再假定旋转的顺规为Z

2022-01-09 10:13:26 8462 5

原创 【 OpenGL】高斯模糊

高斯模糊原理高斯模糊(高斯滤波)的原理与算法OpenGL环境搭建glut+glew+linux开发环境搭建实验效果:原图:6+6次水平垂直高斯模糊效果:12+12次水平垂直高斯模糊效果:50+50次水平垂直高斯模糊效果:gles中的算法实现:#version 130out vec4 FragColor;in vec2 TexCoords;uniform sampler2D image;uniform bool horizontal;uniform flo.

2021-08-08 11:24:41 2419 1

原创 闫令琪图形学入门笔记(渲染管线小结)

在开始学习高级图形渲染之前,先对之前的内容做一个总结。其实变换 、着色与光栅化已经构成了完整的图形管线工作流。1 顶点处理下面就类比opengl api来说明顶点变换所涉及的操作,注意,OpenGL只定义了裁剪坐标系、规范化设备坐标系和屏幕坐标系,而局部坐标系(模型坐标系)、世界坐标系和照相机坐标系都是为了方便用户设计而自定义的坐标系,它们的关系如下图所示:顶点处理的作用是指对所有的顶点数据进行Model,View,和Projection的变换,最终得到投影到二维平面的坐标信息(同时为了Zbuff

2021-08-01 18:12:44 379

原创 闫令琪图形学入门笔记(着色篇)

1. 颜色如何产生物体由于材质的不同吸收能量(光照)的差异是颜色产生的根本原因,例如黑色(0,0,0)可以吸收大部分波长的光照,没有任何光照可以从其表面反射,所以人眼看到的就是黑色。另外也可以说物体吸能越多,亮度越低。我们假设物体的材质为固定的系数K,后续的光照计算会用到这个值2. Blinn-Phong反射模型图形学中的Blinn-Phong反射模型大体将光照分为三类:环境光(Ambient lighting)、漫反射(Diffuse reflection)与高光反射(Specular high

2021-07-22 19:01:11 801

原创 闫令琪图形学入门笔记(光栅化篇)

1

2021-07-19 14:02:39 1094

原创 闫令琪图形学入门笔记(矩阵变换篇)

1、矩阵基础矩阵乘法某一三维坐标点用1X3的矩阵表示,通过特定的3X3矩阵与之相乘,可以实现坐标变换(对坐标点的旋转、缩放)。矩阵变化的深度理解点积与叉积点积:根据定义可以反求出两向量的夹角,再根据夹角推出相似度什么的叉积:可以用来求法线,法线作为一个平面的垂直线,对于光照的反射计算十分更要;另外也可以用在路径交叉判断上面,具体参考:点积与叉积在图形学的含义...

2021-07-18 20:53:25 2036

原创 安卓图形显示系统

图形显示架构总的来说,整个安卓显示系统是由两组生产者–消费者解构组成的:1. surface(Producer)<-> surfaceflinger(Consumer)其中两者的控制交互采用binder机制,因为surface属于各个应用充当的client进程端,而surfaceflinger为单独进程。另外,图形数据采用BufferQueue(实际为共享内存)进行关联,如下图Dequeued:出列,正在被上层使用Queued:入列,已完成上层绘制,等待SurfaceFlinge

2021-05-30 17:35:37 860 2

原创 动态库中的函数实现互斥调用

一直在纠结一个问题:如果一个函数使用互斥锁可以防止被调用时重入的情况,但是如果该函数以so的形式提供给使用者(其它进程),那么如何做到各进程间对于该函数的互斥调用呢?首先明确下前提:so被进程加载时,代码段共享,但是所有变量(局部、全局、静态变量)都是各进程copy一份私有使用。也就是说,想要在so内实现一个不可重入的函数还是比较困难的,因为所有变量都是独立的,考虑如下场景:驱动层给了一个视频码流录制的接口,并且没有在驱动层做互斥,但实际上这个接口同一时间只可能被一个进程调用,那么很明显,串

2021-03-25 10:20:53 1118 1

原创 C/C++特性

1、C2、C++1、内存C++类似C语言,变量定义、类实例化是区分存储位置的全局/局部定义的变量与实例化对象是在栈上,new出的实例化对象则在堆,此时栈上放的是实例化对象的指针,此时类似于java的引用变量但是new出的对象必须自己delete,尽管程序退出后会回收堆内存,但是一定要自己释放,因为有些程序是常驻的。C++的引用,是为变量/实例化对象起别名,因此定义时必须指定指代的对象,后面不能更改,这样以后就是修改指代对象本身而不是副本2、构造函数构造函数的构造顺序:首先是全局变量

2021-03-20 20:35:47 232

原创 Android杂项积累

平时工作内容基于安卓系统,确并不直接参与安卓部分开发,而只是为安卓层提供natvie方法的调用界面、实现以及再往下的BSP相关的驱动开发。但是总感觉理解安卓系统的一些重要特性也是有必要的。本文仅记录自己对安卓框架原理上的理解,无引导性、无实用性。1、framework使用java语言做终端开发的人大致分为两类:应用开发与framework开发。应用开发总的来说是使用安卓系统提供的原材料与框架编写特定需求的app,假如某些功能framework并未提供,例如你的产品需要使用一款奇葩的传感器,原生frame

2021-03-14 20:22:26 946 1

原创 通过KMP算法掌握有限状态机

2021-2-20完成~

2021-02-17 20:41:00 911

原创 指针的妙用

指针或者叫做索引、下标,灵活使用可以完成比较巧妙地效果快慢指针快慢指针,表示两个指针,移动的速度不同,通常一般快指针速度是慢指针速度的两倍,通过两个指针相对位置的关系可以解决一些问题,例如:查找链表环起点问题算法步骤:快慢指针都从链表起点开始移动(两个指针速度插一倍),当两个指针再次相遇时停止本次移动ListNode fast, slow;fast = slow = head;while(fast != null && fast.next != null){ fast

2021-02-17 20:39:02 546 2

原创 算法思想-回溯、分治、动态规划的关系

回溯(Back-Tracing)回溯实质使用函数递归的DFS实现,基本来看是一种暴力穷举方法,其实是有框架的def backtrack(路径, 选择列表): //递归必须要有base case,即结束条件 if 满足结束条件: result.add(路径) return //暴力穷举所有选择(每次递归只有两种选择时,实际就是二叉树搜索) for 选择 in 选择列表: //做选择,一般都是选或者不选等(例如背包问题就是放入包

2021-01-17 21:18:33 452

原创 数据结构-图、二叉树、B(+)树

图https://www.jianshu.com/p/bce71b2bdbc8

2020-10-18 20:02:54 850

原创 数据结构-链表、队列、栈、哈希表

数据结构指的是任意长度、类型的数据对应的字节在内存中的存放结构。内存存储单元的最小单位是Byte,内存物理上是连续的、无差别的。但是软件可以通过不一样的使用方式来填充、操作内存。例如数组中,数据是顺序存放至内存,使用时则是按照下标去索引。以上提到的主要可以概括为两点:1、存储方式 2、使用方式,按照存储方式分类可以分为:顺序存储与离散存储;按照使用方式可分为:顺序使用、随机使用。当然顺序存储并不意味着只能顺序使用,离散存储也不是只能随机使用,两者是可以随机组合的,而最终组合的产物就被称为数据结构。例如被人

2020-10-05 20:05:57 1176

原创 算法思想-排序

排序的实质排序并不是一种算法思想,而是基于遍历的一种算法实现。形形色色的排序算法,并不能绝对的认为哪一种排序最好,因为最好的度量指标究竟是耗时、内存占用亦或是稳定性是不确定的,这个要根据使用场景来决定,但是我们必须掌握各种排序方法的实现原理,这样才能做到“具体问题具体分析”。下图为多种排序算法的特性归纳:直接排序//从小到大进行排序insertsort(int *k,int n) /*直接插入排序*/{ int i,j; int temp; fo

2020-10-01 10:55:21 221

原创 算法思想-随机化

随机化算法(randomized algorithm)现实中有许多问题的解决过程并无标准数学公式可以遵循,即便可以通过公式计算,但是复杂度较高,因此可以使用随机思想,利用随机化结果去逼近实际问题的记过,概率算法允许在执行过程中随机的选择下一步的计算步骤。可使算法大大降低复杂度,提高算法效率,但有时也可能得不到问题的准确答案,随机化算法包括四类:数值概率算法,蒙特卡洛算法,拉斯维加斯算法,舍伍德算法。使用数值概率思想求积分问题设f(x)=1-x^2,计算定积分分析:要计算定积分的值的几何含义就是f(x

2020-09-12 11:12:44 2222

原创 算法思想-回溯

回溯(Back-Tracing)回溯法值得就是一种搜索,或是一种组织得井井有条的,避免不必要步骤的搜索法。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法指导思想——从一个点开始,按照规则顺序往前走,走的通则继续走;走不通,就掉头,掉头还是不通,就再掉头。因此也是多使用递归法实现回溯。该问题的规模缩小

2020-09-03 21:57:03 1321

原创 算法思想-分治

分治(Divide-and-Conquer)分治法,字面意思是“分而治之”,就是把一个复杂的1问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并。但并不是所有复杂问题都可以完美拆分成多个子问题,要想使用分治思想必须满足如下条件:该问题的规模缩小到一定的程度就可以容易的解决。该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。利用该问题分解出的子问题的解可以合并为该问题的解。该问题所分解出的各个子问题是

2020-08-29 14:12:40 263

原创 算法思想-动态规划

1、动态规划(dynamic programming)https://www.jianshu.com/p/a66d5ce49df5动态规划思想:讲最终目标(求最优值)拆分为多个阶段目标以此完成(阶段目标的最优值需记录),例如在解决01背包问题时,会假设有多个容量的背包bag[1、2、3…],多个物品选择范围stuff[0-1]、stuff[0-2]、stuff[0-3]…,以bag容量与stuff范围为参数,求取各个组合下的最优值。2、应用https://blog.csdn.net/xp731574

2020-08-27 20:14:46 151

原创 通过调用栈排查段错误

遇到过一个问题,一个函数的调用,会概率性的无法返回,出现段错误,从现象来看肯定是内存被踩,但当时是通过逐行检查代码来定位的,略傻逼。后面从新翻出这个问题,尝试通过调用栈来确认被踩内存的具体位置。下面用简单例子来记录这个过程。1原理首先放一张调用栈的结构(数据存放的位置有出入,仅作参考)有两个重要的指针,EBP(Base Pointor)、ESP(Stack Pointor)ESP: 调用栈是自高地址往低地址生长的,即最外层函数栈在高地址,每调用深一层函数,新的函数调用栈就会往低地址生长,而ESP就

2020-07-31 20:48:30 1206

原创 动态库静态库的链接过程

1、预备知识1.1、地址概念连接地址<>运行地址存储地址<>加载地址加载时地址就是程序放置的地址运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。first 0x30000000 : AT(0){main.o},表示运行地址为0x30000000,加载地址为0如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash1.2、位置代码位置无关码:指令只使

2020-07-26 17:52:43 4581

原创 编程实用小组件整理

1. 打印宏名打印枚举时,一般只能打印对应的整型值,以下两种方法可以打印枚举对应的字符串#include<stdio.h>enum color{ red, green, black, yellow};#define ENUMNAME(n) case n: return #nconst char* print...

2019-12-07 15:47:12 243

原创 linux内存映射(二)

一. IO映射介绍设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU分成两大类。一类CPU(如ARM,Power PC等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没有专门用...

2019-06-09 17:10:04 1184

原创 linux内存映射(一)

一. 内存映射原理由于所有用户进程总的虚拟地址空间比可用的物理内存大很多,因此只有最常用的部分才与物理页帧关联。这不是问题,因为大多数程序只占用实际可用内存的一小部分。在将磁盘上的数据映射到进程的虚拟地址空间的时,内核必须提供数据结构,以建立虚拟地址空间的区域和相关数据所在位置之间的关联,linux软件系统多级页表映射机制二. Linux的页表实现二级页表结合在CR3寄存器中存放的页...

2019-06-07 11:30:21 10993

原创 位域与结构体的内存对齐

一. 一般结构体对齐规则结构体每个成员相对结构体首地址的偏移量(offset)是对齐参数的整数倍,如有需要会在成员之间填充字节。编译器在为结构体成员开辟空间时,首先检查预开辟空间的地址相对于结构体首地址的偏移量是否为对齐参数的整数倍,若是,则存放该成员;若不是,则填充若干字节,以达到整数倍的要求。1.1 结构体起始位置一定是内存对齐(对齐字节数可能默认为4字节、8字节,也可能是用户指定的1...

2019-05-23 08:40:41 528 1

原创 gnuplot分析图制作

gnuplot的安装(ubuntu16.04)apt-get install gnuplotapt-get install gnuplot-x11绘图板1. 默认输出默认gnuplot会将图像绘制到桌面系统的窗体中:然后将其保存为其它格式:2.制定输出也可自定义输出格式与输出文件名称,如下语句:#设置输出格式set term jpeg#设置输出文件名称set out...

2019-04-21 16:08:18 3725

qt_modbus_rtu_tcp_draw_curve

自己做太阳能充电监测时写的一个简易电流电压绘图工具,包括485串口的rtu与以太网下的tcp通信,利用qcustomplot完成动态绘图,开发环境为QT5.2,新手可以用来学习下。。

2015-11-09

空空如也

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

TA关注的人

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