ztong上机3
二、实验名称:数字图像处理matlab上机
三、实验学时:2学时
四、实验目的:(详细填写)
- 掌握几何变换
- 掌握插值
- 理解配准的概念
五.实验内容
- (1)首先自己写一个对图像进行旋转和缩放的复合变换程序;
- (2)然后通过基于点的配准找到一个变换矩阵,以将前面变换后的图像再变换回去。
六、实验器材(设备、元器件):
硬件:计算机 软件:windows XP ,matlab7.0
七、实验数据及结果分析:
内容一程序:
1:
2: function out = LinearT(
3: In,theta,sx, sy)
4: im
5: = imread(In);
6: degree = theta;
7: imm = im2double(im);
8: cos_d = cos(degree);
9: sin_d = sin(degree);
10: [width, height] = size(im);
11: R
12: = [cos_d -sin_d 0
13: sin_d cos_d 0
14: 0
15: 0 1];
16: T
17: = [1 0 -width/2.0
18: 0
19: 1 -height/2.0
20: 0
21: 0 1];
22: S=[sx,0,0;
23: 0,sy,0;
24: 0,0,1];
25: R=inv(T)*S*R*T;
26: [W, H, ws, we, hs, he] =
27: ComputeOutImSize(im, R);
28:
29: inR = inv(R);
30: ii=0;
31:
32: for i = ws:we%row
33: ii=ii+1; jj=0;
34: for j = hs:he%col
35: jj=jj+1;
36: locate_r = [i j 1]';
37: locate_s = inR*locate_r;
38: if(((locate_s(1)<=1)||(locate_s(1)>=width))||((locate_s(2)<=1)||(locate_s(2)>=height)))
39: V(ii,jj) = 0;
40: else
41: V(ii,jj) =
42: BilinearInterplate(imm,locate_s);
43:
44: end
45: end
46: end
47:
48: out= im2uint8(V);
49: end
50:
51: 调用程序
52: In='pre.bmp';
53:
54: theta=pi/8;
55: sx=2;
56:
57: sy=4;
58:
59: out = LinearT( In,theta,sx,
60: sy);
61: imshow(out)
62:
原始图像

处理后的图像

内容二程序
1:
2: s=1;
3:
4: f1=imread('pre.bmp');
5:
6: f2=imread('flop.bmp');
7:
8: figure(1)
9: subplot(121),imshow(f1)
10: subplot(122),imshow(f2)
11: N=4;
12: imtool(f2)
13: [w1,h1]=size(f1);
14: [w2,h2]=size(f2);
15: a=[0 0]';b=[w1-1 0]';c=[0 h1-1]';d=[w1-1
16: h1-1]';
17: a1=[4 93]';b1=[224 1]';c1=[113
18: 359]';d1=[333 267]';
19: x=[a b c d];
20: y=[a1 b1 c1 d1];
21: H=zeros(2);
22: xmean=[sum(x(1,:))/N;sum(x(2,:))/N];
23:
24: ymean=[sum(y(1,:))/N;sum(y(2,:))/N];
25:
26: xx=[x(1,:)-xmean(1);x(2,:)-xmean(2)];
27:
28: yy=[y(1,:)-ymean(1);y(2,:)-ymean(2)];
29:
30: for i=1:N
31: H=H+xx(:,i)*(yy(:,i))';
32: end
33: [U,S,V]=svd(H);
34: r=det(U*V);
35: W=[1 0;0 r];
36: R=V*W*U';
37: s=0;
38:
39: for i=1:N
40: s1=s+R*xx(:,i).*yy(:,i);
41: end
42:
43: for i=1:N
44: s2=s+R*xx(:,i).*xx(:,i);
45: end
46:
47: s=s1/s2;
48: t=xmean-s*R*ymean;
49: imm=im2double(f2);
50: ii=0;
51: for i
52: =1:w1
53: ii=ii+1; jj=0;
54: for j =
55: 1:h1
56: jj=jj+1;
57: SS=inv(R)*([i j]'-t);
58: if(((SS(1)<=1)||(SS(1)>=w2))||((SS(2)<=1)||(SS(2)>=h2)))
59:
60: S(ii,jj) = 0;
61: else
62: S(ii,jj) = BilinearInterplate(imm,SS);
63:
64: end
65: end
66:
67: end
68:
69: S0=
70: im2uint8(S);
71: figure(2)
72: imshow(S0)
73:
八、总结及心得体会:
- 掌握了几何变换
- 掌握了插值
- 理解了配准的概念
报告评分:
指导教师签字:
ztong上机3的更多相关文章
- flhs笔试题-回家上机实践
这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...
- Java连接SQLServer2008终极解决办法(亲身上机演练版)
今天我一学妹问我,Java连接SQLServer2008数据库的问题,一直无法连接成功.想起自己刚开始学习的时候,在网上找各种文章,然后实际上机验证操作,花了一两天时间才搞定,一把辛酸泪呀!记得当时是 ...
- 《Java语言程序设计》上机实验
实验一 Java环境演练 [目的] ①安装并配置Java运行开发环境: ②掌握开发Java应用程序的3个步骤:编写源文件.编译源文件和运行应用程序: ③学习同时编译多个Java源文件. [内容 ...
- C++ 第一次上机作业
今天完成了C++第一次上机作业,感觉比较简单. 题目: 求2个数或3个正整数中的最大数,用带有默认参数的函数实现. 对3个变量按由小到大顺序排序,要求使用变量的引用. 编写一个程序,用同一个函数名对几 ...
- Twin Prime Conjecture(浙大计算机研究生保研复试上机考试-2011年)
Twin Prime Conjecture Time Limit: 2000/1000 MS (Java/Othe ...
- 代C语言上机实践
这已经是开学第十二周了,个人感觉严老师教的这批学生效果不是很好,有的竟然毫不知道main函数前边的 int是做什么的.只知按照书本上给的样例程序一个字一个字的敲到编译器中,然后点击运行.有错误也不知道 ...
- lingo运筹学上机实验指导
<运筹学上机实验指导>分为两个部分,第一部分12学时,是与运筹学理论课上机同步配套的4个实验(线性规划.灵敏度分析.运输问题与指派问题.最短路问题和背包问题)的Excel.LONGO和LI ...
- JSP脚本元素上机手册
L3 <JSP基础>上机手册 内容回顾 脚本元素<%! %> <%= %> <% %> 注释元素 JSP指令元素 JSP动作元素 上机目标 掌握脚本元素 ...
- 华为上机题汇总----java
以下华为上机题目都是网上整理得到的,代码都是自己调试过的,由于网上java答案较少,欢迎大家批评指正,也希望对准备华为上机的童鞋们有一点点帮助.在练习的过程中成长,加油!~~ 第1题:输入字 ...
随机推荐
- 编绎openssl杂记(window)
Window 下 OpenSSL 编绎过程 1. 下载 ActivePerl-5.12.4.1205 , openssl-0.9.8 , 配置Perl环境变量 , 解压openssl-0.9.82. ...
- centos7 学习1 KDE配置中文
安装kde桌面后没有中文,可以用以下方法配置中文 #yum list kde*chinese 会显示可以安装的包,我的显示如下 kde-l10n-Chinese.noarch -.fc14 @upda ...
- SGU 140 扩展欧几里得
题目大意: 给定序列a[] , p , b 希望找到一个序列 x[] , 使a1*x1 + a2*x2 + ... + an*xn = b (mod p) 这里很容易写成 a1*x1 + a2*x2 ...
- HDU 4087 三维上的平移缩放旋转矩阵变化
题目大意: 就是根据它给的程序的要求,不断平移,缩放,旋转三维的点,最后计算出点的位置 这里主要是要列出三种转换方式的齐次矩阵描述 平移translate tx ty tz1 0 0 00 1 0 0 ...
- 乌龟棋(noip2010)
分析:该题是经典的动态规划题目. 题目中涉及到卡片数.卡片分4类.格子数等若干信息,又每张卡片仅能使用一次.求到达终点最多能能获得多少分. 从题目中可知卡片的使用顺序影响最终得分,我们可知状态转移和使 ...
- 配置navigation bar外观
/* 配置navigation bar外观开始 */ self.navigationBar.translucent = YES; self.navigationBar.titleTextAttribu ...
- linux 快速安装mysql
yum list | grep mysqlyum install -y mysql-server mysql mysql-devel service mysqld startmysqladmin -u ...
- 如何在ubuntu 12.04 中安装经典的 GNOME桌面
这次介绍的是如何在ubuntu 12.04 中安装经典的 GNOME桌面,默认的 Ubuntu 12.04 默认unity桌面,一些用户不喜欢 Unity 桌面,所以想找回昔日的经典Gnome桌面. ...
- (工作经验总结一二)队列--多个main的原因
1,项目创建最好有一个自己的继承于UIViewController的类,并且其他控制器继承这个控制器,灵活性较大,例如: 要给项目每个页面添加截图或用户操作轨迹记录等,这样就省去了到每个页面添加的麻烦 ...
- Android SoundPool.play方法的音量与系统音量的关系
Android中播放音频,除了使用MediaPlayer,还可以使用SoundPool.SoundPool使用音效池的概念来管理多个短促的音效,对于需要短促的提示音的场景特别合适. 通常调用Sound ...