ImageVerifierCode 换一换
格式:DOCX , 页数:75 ,大小:1.27MB ,
资源ID:9600966      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9600966.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MATLAB程序大全.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MATLAB程序大全.docx

1、MATLAB程序大全1 全景图到穹景图这个程序我最初是用 Freelmage写的,这两天改成了 matlab,再不贴上来,我就要忘了看到一篇文章有这样的变换,挺有意思的,就拿来试了一下, 文章点此。全景图到穹顶图变换,通俗的说就是将全景图首尾相接做成一个圆环的样子。先看下面这图:Ponoromictheta max -i = wl 1th phi /R:Od itilj = height theta / thmtemexLinearj = height Sin(thBtB)/ Sin(thetamax) width 下面的矩形就是我们要处理的全景图, 上面的矩形是变换后的图像。 下面图像的底边

2、对应穹顶图的圆,顶边对应穹顶图的外圆,当然,反过来也是可以的。程序流程:1.定义穹顶图圆和外圆的半径,变换后的像素就填充在这个外半径的圆环中。2.遍历穹顶图,当所处理当前像素位于圆环, 则通过极坐标反变换去全景图中寻找相应位置的像素进行填充。3.遍历完图像就行了。用的技巧和图像旋转或放大缩小都是类似的。处理结果:结果:matlab代码如下:clear all;close all;clc;img=imread( pan.jpg);imshow(img);m,n =size(img);r1 =100; % 环半径r2=r1+m; %外环半径imgn=zeros( 2*r2, 2*r2);re_m,

3、re_n =size(img n);for y= 1:re_mfor x= 1:re_ndis_x =x-re_n/ 2;dis_y =y-re_m/ 2;l =sqrt(dis_xA 2+dis_yA 2);if I= r1theta =0;if yre_m/ 2theta =ata n2(dis_y,dis_x);endif y= 1 & yy= 1 & xx0 & K=0;角点区域:H0 & K0;harris角点检测就用到了第三类判断。当然,在实际应用的时候 H和K的值肯定都不会是理想,所以我用的都是近似判断。处理结果如下:原图:平坦区域:边缘区域:角点区域(好像也不全角点,求角点还是

4、 harris好了):结构量行列式与迹的关系:I 其中红框为平坦区域,黄框为边缘区域,铝框为角点区域。matlab代码如下:clear all; close all; clc;img=double(imread( lena.jpg );m n =size(img);imshow(img,)lx Iy =gradie nt(img);Ix2=Ix.a 2;ly2=ly.A 2;Ixy =lx.* ly;k=1;lambda=zeros(m*n, 2);for i=1:mforj= 1:nst=lx2(i,j) lxy(i,j);lxy(i,j) ly2(i,j); %结构量K=det(st);

5、%求行列式H=trace(st); %求迹%所有的判断都是近似的%if H50 & abs(K) 50 & abs(K) 0.01 * 10A(- 9)% 认为是角点区域img(i,j) =255;endlambda(k,:) =K H;k =k+1;endendfigure;plot(lambda(:, 1),lambda(:, 2),.);ylabel( trace );xlabel( det);figure;imshow(img,)6.模糊集图像增强 算法有很多变种。不过主要就是以下三步。1.设计隶属度函数将图像从空间域变换到模糊集域。2.设计模糊增强算子,在模糊集域对图像进行处理。3.

6、根据第1步的隶属度函数重新将图像从模糊集域变换到空间域。这和频域处理中的变换反变换不是很像么。我使用的隶属度函数和模糊增强算子在 这篇论文 里,也算相关算法的经典论文了处理结果如下:原图:模糊集增强后:matlab代码如下:clear all; close all; clc;img=double(imread( lena.jpg );imshow(img,)m n =size(img);Fe=1; %空制参数Fd=128;xmax=max(max(img);u=(1+(xmax-img)/Fd)4(- Fe); % 空间域变换到模糊域%也可以多次迭代for i= 1:m % 模糊域增强算子fo

7、r j= 1:nif u(i,j) queue(head) head flag pa(j) end end =tail+1;0 & isempty(find(flag=j, 1)=j;=head+1;=flag j;=i;if pa(m)= 0 %如果搜索不到汇节点,退出循环break;endpath =;i =m;%从汇节点开始k =0;%路径包含的边的个数whilei= 1%使用前趋构造从源节点到汇节点的路径path=path;pa(i) i A(pa(i),i); % 存入路径i=pa(i);%使用前趋表反向搜寻,借鉴Dijsktra方法k=k+1;中的松弛endMi =mi n(pat

8、h(:, 3); % 寻找增广路径中最小的那条边for i= 1:kA(path(i, 1),path(i, 2)=A(path(i, 1),path(i, 2)- Mi; % 增广路 径中每条路径减去最小的边maxflow(path(i, 1),path(i, 2)=maxflow(path(i, 1),path(i, 2)+ Mi; % 最大 流,原网络包含这个网络,我只能这样表示了end % 使用新的图A进入下一循环,从新开始找增广路径endfigure;n etplot(maxflow, 1)9.单元最短路径图的相关算法也算是自己的一个软肋了,当年没选修图论也是一大遗憾。图像处理中,也

9、有使用图论算法作为基础的相关算法,比如图割, 这个算法就需要求最大流、 最小割。所以熟悉一下图论算法对于图像处理还是很有帮助的。Dijkstra 和Bellman-Ford 类似,都是解决单源最短路径问题,不同的是这个方法只能解决边为 非负的问题,实现的好的 Dijkstra 算法运行时间要快于 Bellma n-ford 。算法步骤如下:1.首先设置队列,所有节点入列,源节点值为 0,其他节点值为无穷。2.然后在队列中找值最小的节点并岀列。3.计算出列的节点所有后继节点的距离。4.松弛方法,如果新计算的距离小于上次计算的距离, 那么更新距离,即将后继节点值设为较小的距离,并将后继节点的前趋设

10、为当前的出列节点。5.对剩余的节点队列继续找最小值并岀列,不断循环 2、3、4步直到队列中没有节点了。步骤是上面没错, 不过我程序中没有完全按照上述的步骤实现。 不同的地方在于我没有做出列操作,而是通过标记节点的形式实现的。m=max(max(b(:, 1:2); %A=compresstable2matrix(b); %netplot(A, 1) %S=inf( 1,m); %S(1)=0; %pa=zeros( 1,m); %和上一篇 使用的一样:main .mclear all;close all;clc捌始化邻接压缩表,1 2 10表示从节点1到节点2,边的权重为10 b=1 2 10

11、; 1 4 5; 2 3 1;2 4 2; 3 5 4; 4 2 3;43 9; 4 5 2; 5 1 7;53 6;压缩表中最大值就是邻接矩阵的宽与高 从邻接压缩表构造图的矩阵表示 形象表示从开始的源点到每一个节点的距离源点到自己的距离为0存储每个节点的前驱,在松弛过程中赋值visit =zeros(1,m); %标记某个节点是否访问过了index =1; % 从index节点开始搜索%判断是否对所有节点都找的最短路径了。可能会有源点没有路径到目标节点的 情况,那就无限循环了while sum(visit)= m %没有出队列操作,不过通过 visit 来等价的表示了visit(index)

12、 =1; % 标记第index节点为已入列的节占八、S pa =relax(S,pa,A,visit,i ndex,m); % 松弛,如果两个节点间有更短的距离,则用更短的距离in dex =extract_mi n(S,visit,i ndex,m); % 使用已访问的最小的节点作为下一次搜索的开始节点end%最终我们需要的就是这两个值S % 源点到其他每一点的距离pa %其他每一节点的前趋%算法到此结束,下面只是为了形象的表示而写的。re =;for i= 2:mre =re;pa(i) i A(pa(i),i);endA=compresstable2matrix(re); % 从邻接压缩

13、表构造图的矩阵表示figure;netplot(A, 1) % 形象表示relax.m%边缘松弛,使用更短的距离作为节点的值 fun cti on S pa= relax(S,pa,A,visit,i ndex,m)i =in dex;1 %搜索没有标记过的节点% 将较小的值赋给正在搜寻的节点for j= 1:mif A(i,j)=inf & visit(j)= if S(j)S(i)+ A(i,j)S(j) =S(i)+ A(i,j);pa(j) =i;endendendendextract_mi n.m%!取队列未标记的最小的值的序号fun cti on in dex= extract_mi n( S,visit,i ndex,m)Mi =inf;for j= 1:mif visit(j)= 1 if S(j)S(i)+ A(i,j)S(j) =S(i)+ A(i,j); % 边缘松弛,取两节点间最小权值作为实际权值pa(j) =i; % 寻找前趋endendendendendend%最终我们需要的就是这两个值S % 源点到其他每一点的距离 pa %其他每一节点的前趋%算法到此结束,下面只是为了形象的表示而写的。re =;for i= 2:mre =re;pa(i) i A(pa(i),i);endA=compresstable2matrix(re

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2