版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 图像的几何变换实验一 平移运算一、实验目的1、掌握平移运算的原理。2、学习在DSP上实现平移运算的方法。二、实验仪器1、硬件平台:C6000数字图像处理实验箱(型号ZY13DSP23BB)、摄像头、USB连接线。2、软件平台:Windows98/2000/XP操作系统、Code Composer Studio 2.0 For C6000、ImageRECV 2.0 for ZY13DSP23BB。三、实验内容1、平移运算原理平移(translation)变换是几何变换中最简单的一种。如图2-1所示,初始坐标为(x0,y0)的点经过平移(tx,ty)(以向右,向下为正方向)后,坐标变为(
2、x1,y1)。这两点之间的关系是x1=x0+tx ,y1=y0+ty,即平移后(x1,y1)点的颜色值等于(x0,y0)点的颜色值。图1-1 平移的示意图如下图1-2为原图,图1-3为移动后的图,图像进行平移后,图像的一部分会移出显示区域,比较典型的处理方法是保持图像的大小,将移出的部分截断,由于移动而空出的区域填充为白色 RGB(255,255,255)。图1-2 移动前的图图1-3 移动后的图2、算法实现代码void Translation( ch
3、ar *inbuf, char *outbuf, int width, int height, int xoff, int yoff )unsigned int i,j; char *ptr;/将图像输出区全部填充为白色memset(outbuf, 255, width* height);ptr = inbuf;for( i= yoff ; i<height-yoff; i+ )for( j= xoff ; j<width-xoff; j+ )outbufi* width+j = *ptr+;/输入缓冲区指针指向下一行ptr += xoff;四、实验步骤1、将光盘上的“exampl
4、estranslation”目录复制到计算机硬盘,去掉目录中所有文件的只读属性去掉;2、通过USB连接线,将C6000数字图像处理实验箱与PC的USB口相连接,如果PC提示找到新硬件,则表示连接成功;3、启动Code Composer Studio 2.0 For C6000;4、启动ImageRECV 2.0 for ZY13DSP23BB;5、打开“Project”菜单,选择“Open”菜单项,找到并打开硬盘上目录“examples translation”,选择translation.pjt工程文件;6、打开“Project”菜单,选择“Rebuild all”菜单项,编译程序,生成tr
5、anslation.out文件;7、打开“File”菜单,选择“Load program”菜单项,选择“examples translation Debugtranslation.out”,程序将加载到DSP上;8、运行:按快捷键“F5”或选择“Debug”菜单中的“Run”项;9、点击PC上的应用程序ImageRECV2.0.exe中的“打开USB设备”,再出现“USB口打开成功”后点击“启动接收”,可以在程序界面中将接收到的图像数据实时的显示出来,按键A1为处理前的图像,A2为处理后的结果,用户可以在ImageRECV2.0.exe程序界面中观测到运行结果并进行比较。实验二 镜像运算一、实
6、验目的1、掌握镜像运算的原理。2、学习在DSP上实现镜像运算的方法。二、实验仪器1、硬件平台:C6000数字图像处理实验箱(型号ZY13DSP23BB)、摄像头、USB连接线。2、软件平台:Windows98/2000/XP操作系统、Code Composer Studio 2.0 For C6000、ImageRECV 2.0 for ZY13DSP23BB。三、实验内容1、镜像运算原理镜象(mirror)分水平镜象和垂直镜象两种。如下图,图2-1所示水平镜象结果,图2-2所示为垂直镜象结果。图2-1 水平镜象图2-2 垂直镜象镜象的变换矩阵很简单。设原图宽为w,高为h,变换后,图的宽和高不
7、变。水平镜象的变换矩阵为:垂直镜象的变换矩阵为:2、算法实现代码/ direct =1:水平镜象; direct =0:垂直镜象void Mirror( int direct, unsigned char *ibuf, int width, int height )unsigned int i,j;int tp1,tp2;if( direct )/水平镜象for( i=0 ; i<height; i+ )for( j=0; j<width/2; j+ )tp1 = width-1-j;tp2 = ibufi*width+j;ibufi*width+j = ibufi*width+t
8、p1;ibufi*width+tp1 = tp2;else/垂直镜象for( i=0 ; i<height/2; i+ )for( j=0; j<width; j+ )tp1 = height-1-i;tp2 = ibufi*width+j;ibufi*width+j = ibuftp1*width+j;ibuftp1*width+j = tp2;四、实验步骤1、将光盘上的“examples mirror”目录复制到计算机硬盘,去掉目录中所有文件的只读属性;2、通过USB连接线,将C6000数字图像处理实验箱与PC的USB口相连接,如果PC提示找到新硬件,则表示连接成功;3、 启动
9、Code Composer Studio 2.0 For C6000;4、启动ImageRECV 2.0 for ZY13DSP23BB;5、打开“Project”菜单,选择“Open”菜单项,找到并打开硬盘上目录“examples mirror”,选择mirror.pjt工程文件;6、打开“Project”菜单,选择“Rebuild all”菜单项,编译程序,生成mirror.out文件;7、打开“File”菜单,选择“Load program”菜单项,选择“examples mirror Debug mirror.out”,程序将加载到DSP上;8、 运行:按快捷键“F5”或选择“Debu
10、g”菜单中的“Run”项;9、点击PC上的应用程序ImageRECV2.0.exe中的“打开USB设备”,再出现“USB口打开成功”后点击“启动接收”,可以在程序界面中将接收到的图像数据实时的显示出来,按键A1为处理前的图像,A2为处理后的结果,用户可以在ImageRECV2.0.exe程序界面中观测到运行结果并进行比较。实验三 转置运算一、实验目的1、掌握转置运算的原理。2、学习在DSP上实现转置运算的方法。二、实验仪器1、硬件平台:C6000数字图像处理实验箱(型号ZY13DSP23BB)、摄像头、USB连接线。2、软件平台:Windows98/2000/XP操作系统、Code Compo
11、ser Studio 2.0 For C6000、ImageRECV 2.0 for ZY13DSP23BB。三、实验内容1、转置运算原理转置(transpose)是指将x,y坐标对换,如图3-1是对图1-1进行转置后的结果。值得注意的是,转置和旋转900是有区别的。图3-1 图1-1转置后的结果转置的变换矩阵很简单:2、算法实现代码void Transpose( unsigned char *ibuf, int width, int height )unsigned int i,j;unsigned char *tp, *tp1=yc;for( i=0 ; i<height; i+ )
12、tp = tp1+;for( j=0; j<width; j+ )*tp = *ibuf+;tp += height;四、实验步骤1、将光盘上的“examples transpose”目录复制到计算机硬盘,去掉目录中所有文件的只读属性;2、通过USB连接线,将C6000数字图像处理实验箱与PC的USB口相连接,PC提示找到新硬件,则表示连接成功;3、 启动Code Composer Studio 2.0 For C6000;4、启动ImageRECV 2.0 for ZY13DSP23BB;5、打开“Project”菜单,选择“Open”菜单项,找到并打开硬盘上目录“examples t
13、ranspose”,选择transpose.pjt工程文件;6、打开“Project”菜单,选择“Rebuild all”菜单项,编译程序,生成transpose.out文件;7、打开“File”菜单,选择“Load program”菜单项,选择“examples transpose Debug transpose.out”,程序将加载到DSP上;8、 运行:按快捷键“F5”或选择“Debug”菜单中的“Run”项;9、点击PC上的应用程序ImageRECV2.0.exe中的“打开USB设备”,再出现“USB口打开成功”后点击“启动接收”,可以在程序界面中将接收到的图像数据实时的显示出来,按键
14、A1为处理前的图像,A2为处理后的结果,用户可以在ImageRECV2.0.exe程序界面中观测到运行结果并进行比较。实验四 缩放运算一、实验目的1、掌握缩放运算的原理。2、学习在DSP上实现缩放运算的方法。二、实验仪器1、硬件平台:C6000数字图像处理实验箱(型号ZY13DSP23BB)、摄像头、USB连接线。2、软件平台:Windows98/2000/XP操作系统、Code Composer Studio 2.0 For C6000、ImageRECV 2.0 for ZY13DSP23BB。三、实验内容1、缩放运算原理假设放大因子为ratio,缩放(zoom)的变换矩阵很简单:0<
15、;ratio1时,图像被缩小;1<ratio时,图像被放大。一般情况下,为了避免新图过大或过小,在程序中限制0.25ratio4。对于图像缩小的处理比较简单,根据因子ratio,每1/ratio个象素取一个象素,组成新的图像即可,例如ratio0.5时,每2个象素取一个即可。对于图像放大的情况,由于放大时产生了新的象素,以及浮点数的操作,得到的坐标可能并不是整数,一般采用的做法是找与之最临近的点。而实际上,更精确的做法是采用插值(interpolation),即利用邻域的象素来估计新的象素值。关于插值,有兴趣的读者可以参考“数值分析”方面的书籍。如下图4-1所示,对图1-2进行0.5倍缩
16、放效果:图4-1 ratio=0.52、算法实现代码void Zoom(unsigned char *ibuf, int width, int height, float ZoomRatio)int num,Wnew,Hnew, x0,y0,x1,y1;num= (float)(1.0/ZoomRatio);/新图宽度和高度Wnew = width *ZoomRatio+0.5;Hnew = height *ZoomRatio+0.5;for(y1=0; y1<Hnew; y1+) for(x1
17、=0; x1<Wnew; x1+) x0 = x1*num ; y0 = y1*num; if( (x0>=0) && (x0< width) && (y0>=0) && (y0< height) yc+ = ibufy0* width+x0;
18、; 四、实验步骤1、将光盘上的“examples zoom”目录复制到计算机硬盘,去掉目录中所有文件的只读属性;2、通过USB连接线,将C6000数字图像处理实验箱与PC的USB口相连接,如果PC提示找到新硬件,则表示连接成功;3、启动Code Composer Studio 2.0 For C6000;4、启动ImageRECV 2.0 for ZY13DSP23BB;5、打开“Project”菜单,选择“Open”菜单项,找到并打开硬盘上目录“examples zoom”,选择zoom.pjt工程文件;6、打开“Project”菜单,选择“Rebuild
19、all”菜单项,编译程序,生成zoom.out文件;7、打开“File”菜单,选择“Load program”菜单项,选择“examples zoom Debug zoom.out”,程序将加载到DSP上;8、 运行:按快捷键“F5”或选择“Debug”菜单中的“Run”项;9、点击PC上的应用程序ImageRECV2.0.exe中的“打开USB设备”,再出现“USB口打开成功”后点击“启动接收”,可以在程序界面中将接收到的图像数据实时的显示出来,按键A1为处理前的图像,A2为处理后的结果,用户可以在ImageRECV2.0.exe程序界面中观测到运行结果并进行比较。实验五 旋转运算一、实验目
20、的1、掌握旋转运算的原理。2、学习在DSP上实现旋转运算的方法。二、实验仪器1、硬件平台:C6000数字图像处理实验箱(型号ZY13DSP23BB)、摄像头、USB连接线。2、软件平台:Windows98/2000/XP操作系统、Code Composer Studio 2.0 For C6000、ImageRECV 2.0 for ZY13DSP23BB。三、实验内容1、旋转运算原理旋转(rotation)就是将图像以某一点为圆心,转动一定的角度。通常的做法是以图像的中心为圆心旋转,如图5-1旋转30度(顺时针方向)后如图5-2所示。可以看出,旋转后图像变大了。图5-1
21、; 旋转前的图图5-2 旋转后的图在坐标系中,将一个点顺时针旋转a角后的坐标变换公式如图5-3所示,r为该点到原点的距离,在旋转过程中,r保持不变;b为r与x轴之间的夹角。图5-3 旋转示意图旋转前:x0=rcosb;y0=rsinb旋转a角度后:x1=rcos(b-a)=rcosbcosa+rsinbsina=x0cosa+y0sina;y1=rsin(b-a)=rsinbcosa-rcosbsina=-x0sina+y0cosa;上面的公式中,坐标系xoy是以图像的中心为原点,向右为x轴正方向,向上为y轴正
22、方向。它和以图像左上角点为原点o,向右为x轴正方向,向下为y轴正方向的坐标系xoy之间的转换关系如图5-4所示。图5-4 两种坐标系间的转换关系设图象的宽为w,高为h,容易得到:逆变换为:有了上面的公式,可以把变换分成三步:(1)将坐标系o变成o;(2)将该点顺时针旋转a角;(3)将坐标系o变回o。要注意的是,由于有浮点运算,计算出来点的坐标可能不是整数,采用取整处理,即找最接近的点,这样会带来一些误差(图像可能会出现锯齿)。2、算法实现代码为了使程序便于理解,在例程中主要采用了顺时针45度的旋转。/旋转Rotation,将图像进行45度旋转void Rotation(
23、 unsigned char *indata, unsigned char *outdata, int Width, int Height,int *nWidth, int *nHeight)int x1,y1,x0,y0;float cosa=0.7071,sina=0.7071; int Wnew = cosa*(Width+Height);/旋转后新图的宽int Hnew = cosa*(Width+Height);/旋转后新图的高int num1 = (Width>>1);int num2 = (Height>>1);num1 = num1 - cosa*cosa*(Width+Height);for(y1=0; y1<Hnew; y1+)for(x1=0; x1<Wnew; x1+)x0= (x1*cosa+y1*sina+n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洁净车间行政部与人事部安全职责培训
- 风电部煤气工段两票一证管理规定培训课件
- 计算机维修工班组协作知识考核试卷含答案
- 电阻器制造工安全生产规范模拟考核试卷含答案
- 畜禽屠宰无害化处理工风险评估与管理竞赛考核试卷含答案
- 电冰箱零部件制作工操作管理竞赛考核试卷含答案
- 绞车操作工安全知识强化考核试卷含答案
- 铁合金火法冶炼工岗前安全宣贯考核试卷含答案
- 墨汁制造工创新实践能力考核试卷含答案
- 胶印版材生产工达标水平考核试卷含答案
- GB/T 12221-2025金属阀门结构长度
- 血液净化模式选择专家共识(2025版)解读
- GB/T 46237-2025信息技术数字孪生能力成熟度模型
- 甲状旁腺相关课件
- 华为供应商质量管理三化一稳定严进严出
- 2025年Q2(桥式)起重机司机题库考试题(附答案)
- 乡镇卫生院基药培训课件
- GB/T 46082.1-2025气焊设备用安全装置第1部分:阻火器
- 山东省济南市2025年中考物理真题(含答案)
- Python数据可视化之Matplotlib与PyEcharts实践
- 高速消防员安全知识培训课件
评论
0/150
提交评论