随笔分类 -  c/c++

摘要:X86处理器包含两种类型的浮点数寄存器。第一种使用8个浮点寄存器组成浮点寄存器栈,另一种为向量寄存器(XMM,YMM),它们对于单双精度的处理是不同的。本文将讨论两种模式下的浮点数计算速度问题。 一、当我们编译32位程序时,使用的是x87指令集,即使用浮点寄存器堆栈进行浮点计算。此种情况下,单精度与 阅读全文
posted @ 2016-10-10 11:18 xiaoluo91 阅读(3355) 评论(0) 推荐(3)
摘要:作为正式接触汇编的开篇,本文将研究二维数组的遍历问题。在图像处理中,通常需要遍历图像像素(即二维数组)。下面给出三个版本的遍历函数,并研究他们的汇编代码(VC2010编译器,x86版,Release模式)。 (1)在两层循环内每次根据行列索引计算元素位置。 (2)为了避免在内存循环内的乘法计算,可在 阅读全文
posted @ 2016-10-07 23:49 xiaoluo91 阅读(2053) 评论(0) 推荐(0)
摘要:StretchDIBits速度测试(HALFTONE) 下面实验中显示窗口大小为1024*768,拉伸模式设为HALFTONE. 一、单通道图像 (1) 保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系: 图像大小 耗时(ms) 24*1024 阅读全文
posted @ 2016-08-21 15:39 xiaoluo91 阅读(784) 评论(0) 推荐(0)
摘要:下面实验中显示窗口大小为1024*768,缩放模式设为COLORONCOLOR. 一、单通道图像 (1)保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系: 阅读全文
posted @ 2016-08-21 15:21 xiaoluo91 阅读(424) 评论(0) 推荐(0)
摘要:一、简介 在工业生产控制系统中,有许多需要定时完成的操作,如数据采集程序。Win32提供了一个基于消息机制的定时器,使用SetTimer函数创建一个内存对象,设定间隔时间,当到达要求的间隔时,计时器对象发送一个WM_TIMER消息,由相应函数处理。但是由于WM_TIMER优先级低,只有等待消息队列中 阅读全文
posted @ 2016-08-18 10:16 xiaoluo91 阅读(1852) 评论(0) 推荐(0)
摘要:一个复杂声明中通常包含的类型说明符有()、[]、*三种。其中()用于说明函数类型以及改变说明的先后顺序;[]用于说明数组类型;*则用于说明指针类型。再平常编程中很少会遇到,因此只需要稍作了解。《C专家编程》中有具体的介绍,对复杂声明进行解释只需按照固定的步骤操作即可。下图为书中给出的复杂声明解析过程: 阅读全文
posted @ 2016-08-16 11:31 xiaoluo91 阅读(311) 评论(0) 推荐(0)
摘要:在进行复杂图形绘制时,若直接在屏幕DC上进行绘制,则会出现明显的闪烁。闪烁产生的原因是当绘制的图形较为 复杂时,图形绘制过程中就被刷新到屏幕上,导致结果断断续续地显示出来。双缓冲绘图的原理是在另开辟一块内存用于绘制,当所有绘制工作完成后将内存数据一 次性拷贝到屏幕上。 阅读全文
posted @ 2016-06-25 21:54 xiaoluo91 阅读(773) 评论(0) 推荐(0)
摘要:关于BMP位图的资料网上有很多,内容也比较基础。本文实现BMP位图的读取、显示、保存,并对一些重要的问题进行说明(包括字节对齐、内存中的存储顺序、调色板)。 BMP文件共包括文件头、信息头、调色板(位深<=8的图像含有此项),位图数据四大部分: 阅读全文
posted @ 2016-06-03 09:39 xiaoluo91 阅读(588) 评论(0) 推荐(0)
摘要:高斯滤波是图像处理中一种应用广泛的滤波器。通常使用二维高斯模板与图像的卷积实现高斯滤波,处理时间与模板大小的有关,或者说跟高斯标准差有关(由“3sigma准则”可知,模板宽度取为标准差的6倍时可覆盖0.9974的数据)。本文将介绍一种IIR型高斯滤波,该滤波器的处理时间只与图像大小有关,而与标准差无关。该方法基于高斯函数的一个多项式近似: 阅读全文
posted @ 2016-02-28 00:19 xiaoluo91 阅读(4740) 评论(0) 推荐(0)
摘要:首先给出绘制效果图: 说明: 本系统绘制了一个真实感的三维场景,并实现场景漫游。使用按键↑、↓、←、→或W、S、A、D控制运动方向,PgDn和PgUp可以改变观察者的高度,鼠标控制转向,按键‘F’可以打开和关闭“雾气”,Esc退出程序。 本场景中绘制了墙壁与地面、天空、石柱、箱子、玻璃球、雪人、雾等 阅读全文
posted @ 2016-01-29 20:55 xiaoluo91 阅读(2912) 评论(0) 推荐(1)
摘要:一、原理 Levoy在1988年提出了光线投射(ray-casting)算法[1],其基本原理是:从屏幕上每一个像素点出发,沿着视线方向发射出一条光线,当这条光线穿过体数据时,沿着光线方向等距离采样,利用插值计算出采样点的颜色值和不透明度;接着按照从前到后或从后到前的顺序对光线上的采样点进行合成,计 阅读全文
posted @ 2016-01-29 20:07 xiaoluo91 阅读(7729) 评论(1) 推荐(0)
摘要:直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图确定一条映射曲线,用来对图像进行灰度变换,以达到提高图像 对比度的目的。该映射曲线其实就是图像的累计分布直方图(CDF)(严格来说是呈正比例关系)。然而HE是对图像全局进行调整的方法,不能有效地提高局部 对比度,而且某... 阅读全文
posted @ 2015-11-02 14:10 xiaoluo91 阅读(23367) 评论(3) 推荐(5)
摘要:高斯滤波器是图像处理中经常用到的滤波器,其滤波核函数为:为简单起见,这里省略了归一化因子。由的可分离特性:得:其中为输入图像,为输出图像,为滤波模板半径。根据准则,通常使。由上式可见,我们可以将二维高斯滤波分解为两次一维高斯滤波。对于二维高斯滤波,设图像大小,高斯模板大小,处理每个像素点需要次操作,... 阅读全文
posted @ 2015-09-25 22:34 xiaoluo91 阅读(4942) 评论(2) 推荐(2)
摘要:Matlab是矩阵语言,如果运算可以用矩阵实现,其运算速度非常快。但若运算中涉及到大量循环,Matlab的速度令人难以忍受的。当必须使用for循环且找不到对应的矩阵运算来等效时,可以将耗时长的函数用C语言实现,并编译成Mex文件,Matlab便可以像调用内建函数一样调用C编写的函数。Mex文件其实是... 阅读全文
posted @ 2015-01-06 19:18 xiaoluo91 阅读(672) 评论(0) 推荐(0)
摘要:动态链接库:我们经常把常用的代码制作成一个可执行模块供其他可执行文件调用,这样的模块称为链接库,分为动态链接库和静态链接库。对于静态链接库,LIB包含具体实现代码且会被包含进EXE中,导致文件过大,浪费磁盘和内存;对于动态链接库,DLL不必被包含在最终的EXE中,EXE执行时可以动态地装载和卸载DL... 阅读全文
posted @ 2015-01-04 23:30 xiaoluo91 阅读(199) 评论(0) 推荐(0)
摘要:利用线性表实现队列,为了有效利用空间,将其设计为循环结构,防止假溢出;牺牲一个存储单元以区分队空、队满。设front队头,rear队尾,N为顺序表大小队空:rear==front队满:(rear+1)%N==front#include#define Elemtype int#define N 100... 阅读全文
posted @ 2014-10-10 23:28 xiaoluo91 阅读(187) 评论(0) 推荐(0)
摘要:选择排序(假设递增排序)每次选取从当前结点到末尾结点中最小的一个与当前结点交换,每一轮固定一个元素位置。时间复杂度O(n^2),空间复杂度O(1)。下面的示例代码以带头结点的链表为存储结构:#include#include#define Elemtype doublestruct Node{ Ele... 阅读全文
posted @ 2014-10-10 20:32 xiaoluo91 阅读(158) 评论(0) 推荐(0)
摘要:在字符串中查找目标字符串并将其替换为指定字符串,返回替换的次数。接口为int find_str_replace(char *&str,const char *find_str,const char *replace_str)将str中所有find_str替换为replace_str。要求不利用STL... 阅读全文
posted @ 2014-10-09 22:33 xiaoluo91 阅读(388) 评论(0) 推荐(0)
摘要:Kruskal算法计算最小生成树,只与边有关,时间复杂度O(eloge)步骤:1.将边按权值递增排序2.依次取出边加入最小生成树中并保证无环,判断是否成环可利用并查集。例:http://ac.jobdu.com/problem.php?pid=1024题目描述:省政府“畅通工程”的目标是使全省任何两... 阅读全文
posted @ 2014-10-01 17:09 xiaoluo91 阅读(203) 评论(0) 推荐(0)
摘要:题目描述:给定一个浮点数序列(可能有正数、0和负数),求出一个最大的连续子序列乘积。分析:若暴力求解,需要O(n^3)时间,太低效,故使用动态规划。设data[i]:第i个数据,dp[i]:以第i个数结尾的连续子序列最大乘积,若题目要求的是最大连续子序列和,则易确定状态转移方程为:dp[i]=max... 阅读全文
posted @ 2014-09-30 17:03 xiaoluo91 阅读(519) 评论(0) 推荐(0)