基于DSP的数字图像处理放大Word文档下载推荐.docx
《基于DSP的数字图像处理放大Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于DSP的数字图像处理放大Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。
图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。
1.2图像处理国内外研究现状
所谓图像处理,就是对图像信息进行加工以满足人的视觉心理或应用需求的行为。
图像处理的手段有光学和数字两种方法。
前者从简单的光学滤波到现在的激光全息技术,理论已经日趋完善;
但是光学处理图像精度不够高,稳定性差。
数字图像处理一般都用计算机处理或实施的硬件处理,因此也称之为计算机图像处理,其优点是处理精度高,处理内容丰富,可进行复杂的非线性处理,有灵活的变通能力。
首次获得实际成功应用的是美国喷气推进实验室,
他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了数字图像处理技术,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。
与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。
从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。
人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。
随着计算机及通信技术的发展,图像和视频的应用愈加广泛。
大部分图像数据在实际应用前都需要进行有针对性的处理,如根据图像数据的特点和应用领域对图像进行增强、锐化、除噪、除雾和识别等。
此外,为了有效实时的传输信息,还必须对图像进行压缩,图像粗粒技术尤其是实时图像处理现在已经成为一门热门的研究课题。
图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。
随着科学技术的发展,数字图像处理技术的应用领域也将随之不断扩大。
数字图像处理技术未来应用领域主要有以下六个方面:
(1)航天航空技术方面数字图像处理技术在航天航空技术方面的应用,除JPL对月球、火星照片的处理之外,另一方面是在飞机遥感和卫星遥感技术中。
图像在空中先处理(数字化编码)成数字信号存人磁带中,在卫星经过地面站上空时,再高速传送下来,然后由处理中心分析判读。
这些图像无论是在成像、存储、传输过程中,还是在判读分析中,都必须采用很多数字图像处理方法。
现在世界各国都在利用各类卫星所获取的图像进行资源调查、灾害检测、资源勘察、农业规划、城市规划。
在气象预报和对太空其它星球研究方面,数字图像处理技术也发挥了相当大的作用。
(2)生物医学工程方面数字图像处理技术在生物医学工程方面的应用十分广泛,且很有成效。
除了CT技术之外,还有一类是对医用显微技术的处理分析,如染色体分析、癌细胞识别等。
此外,在X光肺部图像增晰、超声波图像处理、心电图分析、立体定向放射治疗等医学诊断方面都广泛地应用图像处理技术。
(3)通信工程方面当面通信的主要发展方向是声音、文字、图像和数据结合的流媒体通信。
其中以图像通信最为复杂和困难,因图像的数据量十分巨大,如传送彩色电视信号的速率达100M/s以上。
要将这样高速率的数据实时传送出去,必须采用编码技术来压缩信息的比特量。
在一定意义上讲,编码压缩是这些技术成败的关键。
(4)工业工程方面在工业工程领域中图像处理技术有着广泛的应用,它大大提高了工作效率,如自动装配线中质量检测,流体力学图片的阻力和升力分析,邮政信件的自动分拣,在一些恶性环境内识别工件及物体的形状和排列状态,先进设计和制造技术中采用工业视觉等等。
其中值得一提的是研制具备视觉、听觉和触觉功能的智能机器人,将会给工农业生产带来新的面貌,目前已在工业生产中的喷漆、焊接、装配中得到有效的利用。
(5)军事公安方面在军事方面图像处理和识别主要用于导弹的精确制导,各种侦察照片的判读,具有图像传输、存储和显示的军事自动化指挥系统和模拟训练系统等;
公安方面主要用于指纹识别、人脸鉴别、不完整图片的复原以及交通监控、事故分析等。
目前已投入运行的高速公路不停车自动收费系统中的车辆和车牌的自动识别就是图像处理技术成功应用的例子。
(6)文化艺术方面的应用目前这类应用有电视画面的数字编辑、动画的制作、电子图像游戏、纺织工艺品设计、服装设计与制作、发型设计、文物资料照片的复制和修复、运动员动作分析和评分等等。
目前正在形成一门新的艺术——计算机美术。
表1-1图像处理各领域应用
学科
应用
物理、化学
结晶分析、谱分析等
生物、医学
细胞分析、染色体分类、X射线成像
环境保护
水质及大气污染调查等
地质
资源勘测、地图绘制、GIS等
农业、林业
农作物估产、植被分布调查等
气象
卫星云图分析等
通信
传真、电视、多媒体通信等
工业
工业探伤、机器人、产品质量检测等
军事
导弹导航、军事侦察等
渔业
鱼群分布调查等
水利
河流分布、水利及水害调查等
法律
指纹识别等
自20世纪60年代第三代数字计算机问世以后,数字图像处理技术出现了空前的发展,在该领域中需要进一步研究的问题主要有如下五个方面:
(1)在进一步提高精度的同时,着重解决处理速度问题;
(2)加强软件研究,开发新的处理方法,特别要注意移植和借鉴其他学科的技术和研究成果,创造新的处理方法;
(3)加强边缘学科的研究工作,促进图像处理技术的发展;
(4)加强理论研究,逐步形成处理科学自身的理论体系;
(5)时刻注意图像处理领域的标准化问题。
数字图像处理的今后的应用越来越广泛,地位越来越重要,在未来现代化建设中将要发挥无与伦比的重要作用。
2.课程设计的目的与原理
2.1设计目的
2.2设计任务
1.能从计算机上读取图片。
2.编写图像放大程序,在TMS320C5509上实现。
2.2设计原理
图2.1原理图
目前,已经有很多图像放大的算法算法,例如:
1.最邻近插值(近邻取样法):
最邻近插值的的思想很简单,就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色。
可见,最邻近插值简单且直观,速度也最快,但得到的图像质量不高。
2.双线性内插值法:
在双线性内插值法中,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1)区间的浮点数,则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。
这就是双线性内插值法。
双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。
由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。
3.双三次插值法:
双三次插值法能够在很大程度上克服以上两种算法的不足,该算法计算精度高,但计算量大,它考虑一个浮点坐标(i+u,j+v)周围的16个邻点。
目的像素值f(i+u,j+v)可由如下插值公式得到:
f(i+u,j+v)=[A]*[B]*[C]
其中[A]=[S(u+1) S(u+0) S(u-1) S(u-2)];
[C]=[S(v+1) S(v+0) S(v-1) S(v-2)]T;
而[B]是周围16个邻点组成的4*4的矩阵;
S(x)是对Sin(x*π)/x的逼近。
在DSP平台上,有限的高速存储资源限制了这些算法效率的直接发挥,需要针对算法及DSP平台的性能结构特点进行高效的数据调度。
这里我们运用的是第二种双线性内插值法。
3软件程序
3.1主程序
#include<
stdio.h>
math.h>
#include<
stdlib.h>
graphics.h>
alloc.h>
ctype.h>
#defineHIGH3.14159
windows.h>
intmain(intargc,char**argv)
{
char*filename=NULL;
intwidth,height,step,channels;
intwidth_xz,height_xz,step_xz,channels_xz;
doublep,q;
doublea,b;
doublex,y;
inti,j,m,n,R,G,B;
intcount;
uchar*data;
uchar*data_xz;
IplImage*pImg;
//声明IplImage指针
IplImage*pImg_xz;
//声明IplImage指针
filename="
D:
\\d.jpg"
;
//图像的地址
pImg=cvLoadImage(filename,1);
//载入图像
pImg_xz=cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,3);
//创建图像
cvNamedWindow("
原图"
1);
//创建窗口
cvMoveWindow("
100,200);
//移动窗口
width=pImg->
width;
height=pImg->
height;
step=pImg->
widthStep/sizeof(uchar);
data=(uchar*)pImg->
imageData;
channels=pImg->
nChannels;
width_xz=pImg_xz->
height_xz=pImg_xz->
step_xz=pImg_xz->
data_xz=(uchar*)pImg_xz->
channels_xz=pImg_xz->
width_xz=int(width_xz/2);
//取中心位置
height_xz=int(height_xz/2);
现图"
900,200);
a=0.1;
b=0.1;
count=20;
while
(1)
{
for(i=-height_xz;
i<
height_xz;
i++)
{
for(j=-width_xz;
j<
width_xz;
j++)
{
x=j/a;
y=i/b;
if(y>
0)
{
m=(int)y;
//求最小整数
}
else
m=(int)(y-1);
//求最小整数
if(x>
n=(int)x;
n=(int)(x-1);
p=x-n;
q=y-m;
if(q==1)
q=0;
m=m+1;
if(p==1)
p=0;
n=n+1;
if((m>
=-height_xz)&
&
(m<
height_xz)&
(n>
=-width_xz)&
(n<
width_xz))
R=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)])
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)]));
G=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)+1]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)+1])
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)+1]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)+1]));
B=(int)((1.0-q)*((1.0-p)*data[(m+height_xz)*step+channels*(n+width_xz)+2]+p*data[(m+height_xz)*step+channels*(n+1+width_xz)+2])
+q*((1.0-p)*data[(m+height_xz+1)*step+channels*(n+width_xz)+2]+p*data[(m+height_xz+1)*step+channels*(n+1+width_xz)+2]));
R=0;
G=0;
B=0;
if(R<
0||G<
0||B<
if(R>
255||G>
255||B>
255)
R=255;
G=255;
B=255;
data_xz[(i+height_xz)*step_xz+channels_xz*(j+width_xz)]=R;
data_xz[(i+height_xz)*step_xz+channels_xz*(j+width_xz)+1]=G;
data_xz[(i+height_xz)*step_xz+channels_xz*(j+width_xz)+2]=B;
}
}
cvShowImage("
pImg_xz);
//显示图像
pImg);
Sleep(200);
if((count%20)<
10)
a+=0.1;
b+=0.1;
}
else
a-=0.1;
b-=0.1;
count++;
}
cvWaitKey(0);
//等待按键
cvDestroyWindow("
);
//销毁窗口
cvReleaseImage(&
pImg);
//释放图像
pImg_xz);
//释放图像