基于matlab哈哈镜制作.pdfVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

计算机视觉课程设计实验报告

一、题目:哈哈镜的制作

三、实验目的:

1、掌握几何变换的原理。

2、读入待制作的图片,实现图片的缩小放大、水平外凹、水平外凸、梯形变形、三角形S

形和波浪型。

四、实验原理:

变形处理整体都是一个思路,把原图每一行经过缩放拷到新图的相应行。

每次变形都是在原图的基础上,根据想要变换的图象形状,计算出每一行的起始位,再计算

出每一行新的总长度。

1)对于放大、缩小可以根据最近邻插值或者双线性插值来进行变化,放大我们采用了双线

性方法,缩小采用了最近邻插值方法。

2)对于水平内凹和水平外凸,以周期为2倍高度的正弦函数来进行变化,变化后远图象的

高度坐标不变,宽度坐标以一定比例变化。

3)对于三角形和梯形,原图象高度坐标不变,宽度坐标以线性来进行变化。

4)对于宽度不变的变形,如波浪形,直接一次变形拷贝一整行。对于高度不变的图形,如

S形,也可以用这个方法,或者说是把起始点确定后,将坐标点进行平移。

5)除放大效果外,缩小、水平外凹、水平外凸、梯形变形、三角形S形和波浪型均采用

最近邻插值方法进行变化。

五、实验步骤(附程序主代码):

1、打开图象

clear;clc;%清空工作空间

[filename,pathname]=uigetfile({*.*,AllFiles(*.*)});

file=fullfile(pathname,filename);

t1=imread(file);

t2=rgb2gray(t1);%将打开的彩色图像转换为灰度图

imshow(t2)

savetempt2;

2、缩小

loadtempt2%加载打开的图片

[m,n]=size(t2);

x2=double(t2);

fori=1:m

forj=1:n

w=round(i*0.5);%宽度缩小为原来一半

h=round(j*0.5);%高度缩小为原来一半

x3(w,h)=x2(i,j);%最近邻插值,象素值赋给新的图象

end

end

figure,imshow(mat2gray(x3))

3、放大

x3=zeros(fix(m*2),fix(n*2));%开辟空间

fori=2:fix((m-1)*2)

forj=2:fix((n-1)*2)

p=fix(i/2);

q=fix(j/2);

x3(i,j)=[x2(p+1,q)-x2(p,q)]*(i/2-fix(i/2))+[x2(p,q+1)-x2(p,q)]*(j/2-

fix(j/2))+[x2(p+1,q+1)+x2(p,q)-x2(p,q+1)-x2(p+1,q)]*(i/2-fix(i/2))*

(j/2-fix(j/2))+x2(p,q);%双线性插值

end

end

4、水平内凹

t3(m,n)=0;%开辟新图象空间

fori=1:m

a=(2*pi/m)*i;%i转化为弧度形式

p=round(abs(30*sin(a/2))+0.5);

q=round(-abs(30*sin(a/2))-0.5);%正弦函数变换,周期为2M

forj=p:q+n

x=i;%变化后高度坐标不变

y=round((j-p)*n/((q+n-p+1)));%宽度坐标以(j-p)*n/((q+n-p+1)))比例变化

if(x0x=m)(y0y=n)

t3(i,j)=t2(x,y);

else

t3(i,j)=255;

end

end

end

5、水平外凸

a=round(sin(pi/2));

t3(m,n+2*a)=0;

grade=50;

fori=1:m

b=2*pi/m*i;%i转化为弧度形式

j1=round(abs(sin(2*pi-b/2)*grade+grade)+0.5);

j2=round(sin(b/2)*grade-grade-0.5);%正弦函数变换,周期为2M

f

文档评论(0)

小小文档 + 关注
实名认证
文档贡献者

小小文档小小文档小小文档小小文档

1亿VIP精品文档

相关文档