毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
基于DSP实现的移动场景的相位配准(10)
以宽度为例,若峰值点(x,y)的x值在0到width/2之间,则判断为正向的移动,移动距离为x;若x值在width/2到width之间,则判断为逆向移动,移动距离为(x-width)。
在搜索配准点前,必须先把非相关峰(即(0,0)处)赋值为0,否则会影响正确的判断。当峰值小于一定值时(暂定0.002),我们认为找到的峰不是相关峰,而是噪声产生的峰,而此时相关峰和非相关峰重叠,在(0,0)处,场景偏移量判断为(0,0)。
void FindShift(float f,float g,int *shiftifft,int *xshift,int *yshift)
{
int xl,xh,yl,yh;
int i,j;
int iidx,jidx;
int max=0;
xl=f-15;
xh=f+15;
yl=g-15;
yh=g+15;
if(xl<0)
{
xl=0;
xh=30;
}
else if(xh>255)
{
xl=225;
xh=255;
}
if(yl<0)
{
yl=0;
yh=30;
}
else if(yh>255)
{
yl=225;
yh=255;
}
for(i=yl;i<yh;i++)
{
for(j=xl;j<xh;j++)
{
if(shiftifft[512*i+2*j]>max)
{
max=shiftifft[512*i+2*j];
jidx=j;
iidx=i;
}
}
}
if(jidx>128)
{
jidx=jidx-256;
jidx=(int)(1.25*jidx-0.5);
}
else
jidx=(int)(1.25*jidx+0.5);
if(iidx>128) iidx=iidx-256;
*xshift=jidx;
*yshift=iidx;
}
5.6 代码的优化
(1)简单的C代码调整
这一点和普通的C语言优化一样,调整你的代码达到以下效果:
-尽量减少不必要的变量
-尽量使用静态和全局变量
-尽量减少循环中的重复运算,将能重复利用的值在循环外部计算。
-不需要在代码中做的运算尽量拿掉,如x*5/4可调整为x*1.25
(2)使用内联函数
C6000编译器提供了许多内联函数,它们直接对应着汇编指令,可快速优化C代码。这些内联函数不易用C/C++语言实现其功能。内联函数用前下划线(_)特别标示,其方法与调用函数一样。例如:
float _rcpsp(float src) 计算浮点数的近似倒数;
float _rsqrsp(float src) 计算浮点数的近似平方根倒数;
(3)restrict关键字
为了帮助编译器确存储器的相关性,可以使用关键字restrict来限定指针、引用或数组。关键字restrict是对指针、引用或数组的一种限定。使用restrict关键字是为了确保其限定的指针在声明的范围内,是指向一个特定对象的惟一指针,即这个指针不会和其他指针指向存储器的同一地址。如果这个保证被违反,程序的执行结果将是未知的,这使编译器更容易确定是否有别名信息,从而更好得优化代码。
共12页:
上一页
1
2
3
4
5
6
7
8
9
10
11
12
下一页
上一篇:
渥拉斯顿棱镜透射光强扰动分析+文献综述
下一篇:
含葡萄糖的混浊液后向散射特性的Mueller矩阵实验研究
基于大概念的初中科学教材分析力学相关部分
二三维一体化CAD系统中工...
基于初中科学实验教具的创新
基于landsat8遥感影像的水稻田降温效应研究
基于大概念的初中科学教材分析
FLUENT基于CFD圆柱绕流数值模拟研究
光波单向波导的设计与实现
10万元能开儿童乐园吗,我...
医院财务风险因素分析及管理措施【2367字】
承德市事业单位档案管理...
神经外科重症监护病房患...
AT89C52单片机的超声波测距...
公寓空调设计任务书
国内外图像分割技术研究现状
中国学术生态细节考察《...
C#学校科研管理系统的设计
志愿者活动的调查问卷表