欢迎来到天天文库
浏览记录
ID:61931896
大小:1.19 MB
页数:52页
时间:2021-03-31
《MATLAB程序大全培训讲学.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、__________________________________________________1.全景图到穹景图这个程序我最初是用FreeImage写的,这两天改成了matlab,再不贴上来,我就要忘了。看到一篇文章有这样的变换,挺有意思的,就拿来试了一下,。全景图到穹顶图变换,通俗的说就是将全景图首尾相接做成一个圆环的样子。先看下面这张图:下面的矩形就是我们要处理的全景图,上面的矩形是变换后的图像。下面图像的底边对应穹顶图的内圆,顶边对应穹顶图的外圆,当然,反过来也是可以的。程序流程:1.定义穹顶图内圆和外圆的半径,变换
2、后的像素就填充在这个内外半径的圆环中。2.遍历穹顶图,当所处理当前像素位于圆环内,则通过极坐标反变换去全景图中寻找相应位置的像素进行填充。3.遍历完图像就行了。用的技巧和图像旋转或放大缩小都是类似的。____________________________________________________________________________________________________处理结果:原图:结果:matlab代码如下:clearall;closeall;clc;img=imread('pan.jpg');i
3、mshow(img);[m,n]=size(img);r1=100;%内环半径r2=r1+m;%外环半径imgn=zeros(2*r2,2*r2);[re_m,re_n]=size(imgn);fory=1:re_mforx=1:re_ndis_x=x-re_n/2;dis_y=y-re_m/2;l=sqrt(dis_x^2+dis_y^2);ifl<=r2&&l>=r1theta=0;________________________________________________________________________
4、____________________________ify>re_m/2theta=atan2(dis_y,dis_x);endify=1&&yy<=m&&xx>=1&&xx<=nimgn(y,x)=img(yy,xx);endendendendfigure;imshow
5、(imgn,[])最后要说的是,一般我们要是有一张全景图,通常会用cubic映射,将图像变换为立方体的六个面,然后通过图形学方法贴到立方体上,就能做出类似谷歌街景的样子。cubic映射应该才是全景图最常用的处理方法,不过那又是另一类变换了。2.GUI保存图像____________________________________________________________________________________________________%---Executesonbuttonpressinpushbutton5
6、.functionpushbutton5_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalsrc_img;[filename,pathname]=uiputfile({'*.jpg';'*.bmp';'*.gif';'
7、*.png';'*.tif'},'WritePic');str=[pathnamefilename];ifstr~=0imwrite(src_img,str);end3.GUI读入图像%---Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversio
8、nofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[filename,pathname]=uigetfile({'*.*';'*.jpg';'*.bmp';'*.gif';'*.png';'*
此文档下载收益归作者所有