随笔分类 -  Matlab练习程序

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页
摘要:这个其实也算是圆柱体投影了,不过上一篇文章是从正面看,得到的是凸形的结果,而这个是从反面看,得到的是凹形的结果。计算公式就不写了,大致介绍一下,计算公式中关于x坐标求法和上篇一样,y坐标则正好是上篇公式的反变换,结合上篇公式代码和本篇的代码,应该都不是很难理解的。下面是hfOV为pi/2时得到的变换... 阅读全文
posted @ 2014-07-01 20:50 Dsp Tian 阅读(2263) 评论(0) 推荐(0) 编辑
摘要:圆柱投影就是将一张二维的图像投影到三维的圆柱体上,不过在显示图像的时候依然是以二维的形式给出。投影最重要的步骤就是计算投影变换公式,和图像旋转类似,只要得到变换公式,再依照公式进行代码编写就很容易了。这里就不写投影变换公式的推导过程了,直接给出变换公式。公式分为正变换和反变换,编程时,反变换公式通常... 阅读全文
posted @ 2014-06-29 16:03 Dsp Tian 阅读(6612) 评论(1) 推荐(1) 编辑
摘要:这个程序我最初是用FreeImage写的,这两天改成了matlab,再不贴上来,我就要忘了。看到一篇文章有这样的变换,挺有意思的,就拿来试了一下,文章点此。全景图到穹顶图变换,通俗的说就是将全景图首尾相接做成一个圆环的样子。先看下面这张图:下面的矩形就是我们要处理的全景图,上面的矩形是变换后的图像。... 阅读全文
posted @ 2014-04-17 10:52 Dsp Tian 阅读(4142) 评论(4) 推荐(0) 编辑
摘要:% --- Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global src_img;[filen... 阅读全文
posted @ 2014-04-02 20:59 Dsp Tian 阅读(5419) 评论(0) 推荐(0) 编辑
摘要:% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)[filename,pathname] =... 阅读全文
posted @ 2014-04-02 20:34 Dsp Tian 阅读(7859) 评论(0) 推荐(1) 编辑
摘要:1.在这个网址下载一个工具包,里面应该有四个文件:tabselectionfcp.p、tabselectionfcn.m、tabpanel.p和tabpanel.m,显然代码用.p格式进行加密了。2.建立一个空GUI文件,就起名kong.fig吧。3.在kong.fig上画一个Static Text,默认的tag为text1。4.终端运行tabpanel('kong.fig','text1');命令,得到如下界面:5.点击add panel就能添加选项卡了,如图:6.选中不同的选项卡,点击edit,就能进入常见的GUI编辑模式:7.编辑完保存下就行了,所有的功能 阅读全文
posted @ 2014-03-27 16:14 Dsp Tian 阅读(9162) 评论(2) 推荐(3) 编辑
摘要:根据结构张量能区分图像的平坦区域、边缘区域与角点区域。此算法也算是计算机科学最重要的32个算法之一了。链接的文章中此算法名称为Strukturtensor算法,不过我搜索了一下,Strukturtensor这个单词好像是德语,翻译过来就是structure tensor结构张量了。此处所说的张量不是相对论或黎曼几何里的张量,黎曼几何的张量好多论文都叫张量场了。也不是数学界还没研究明白的对矩阵进行扩展的高阶张量,主要是张量分解。这里的结构张量就是一个矩阵,一个对图像像素进行组织的数据结构而已。像素组织而成的矩阵如下:这个公式太常见了,在harris角点检测中就用到了。其中Ix,Iy就是原对原图像 阅读全文
posted @ 2013-09-07 14:10 Dsp Tian 阅读(13859) 评论(24) 推荐(3) 编辑
摘要:算法有很多变种。不过主要就是以下三步。1.设计隶属度函数将图像从空间域变换到模糊集域。2.设计模糊增强算子,在模糊集域对图像进行处理。3.根据第1步的隶属度函数重新将图像从模糊集域变换到空间域。这和频域处理中的变换反变换不是很像么。我使用的隶属度函数和模糊增强算子在这篇论文里,也算相关算法的经典论文了。处理结果如下:原图:模糊集增强后:matlab代码如下:clear all; close all; clc;img=double(imread('lena.jpg'));imshow(img,[])[m n]=size(img);Fe=1; %控制参数Fd=128;xmax=ma 阅读全文
posted @ 2013-07-15 20:05 Dsp Tian 阅读(22888) 评论(2) 推荐(0) 编辑
摘要:随机游走类似布朗运动,就是随机的向各个方向走吧。虽然代码没什么技术含量,不过产生的图像实在太漂亮了,所以还是贴上来吧。产生的图像:matlab代码如下:clear all;close all;clcn=70000; %游走的步数。也是图像中像素个数,有些位置可能重复,所以白像素小于等于nx=0; %初始x坐标y=0; %初始y坐标pix=zeros(n,2); %游走产生的像素坐标neighbour=[-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1]; %当前像素邻域for i=1:n r=floor... 阅读全文
posted @ 2013-07-12 19:14 Dsp Tian 阅读(12455) 评论(0) 推荐(1) 编辑
摘要:学习这个算法是为学习图像处理中的图割算法做准备的。基本概念:1.最大流是一个有向图。2.一个流是最大流,当且仅当它的残余网络中不包括增广路径。3.最小割就是网络中所有割中值最小的那个割,最小割是不唯一的,不过最小割的值是唯一的。4.最大流的流量等于某一最小割的容量。算法思想就是Ford-Fulkerson方法。具体流程:1.首先使用广度优先搜索找到源节点到汇节点的一条路径,为增广路径。2.如果找不到新的从源到汇的增广路径,则上一次求得的网络就是最大流,否则向下执行。3.找出增广路径中最小的路径的值。5.用路径中最小的值构造最大流网络,原网络包含这个网络。4.将增广路径中所有的路径减去最小路径这 阅读全文
posted @ 2013-07-12 11:09 Dsp Tian 阅读(9872) 评论(0) 推荐(0) 编辑
摘要:图的相关算法也算是自己的一个软肋了,当年没选修图论也是一大遗憾。图像处理中,也有使用图论算法作为基础的相关算法,比如图割,这个算法就需要求最大流、最小割。所以熟悉一下图论算法对于图像处理还是很有帮助的。Dijkstra和Bellman-Ford类似,都是解决单源最短路径问题,不同的是这个方法只能解决边为非负的问题,实现的好的Dijkstra算法运行时间要快于Bellman-ford。算法步骤如下:1.首先设置队列,所有节点入列,源节点值为0,其他节点值为无穷。2.然后在队列中找值最小的节点并出列。3.计算出列的节点所有后继节点的距离。4.松弛方法,如果新计算的距离小于上次计算的距离,那么更新距 阅读全文
posted @ 2013-07-10 13:49 Dsp Tian 阅读(16961) 评论(6) 推荐(0) 编辑
摘要:该算法可以用来解决一般(边的权值为负)的单源最短路径问题,而dijkstra只能解决权值非负的情况。此算法使用松弛技术,对每一个顶点,逐步减少源到该顶点的路径的估计值,直到达到最短的路径。算法运算结果:matlab代码如下,netplot函数在这里,不过当时函数中表示两节点没有路径用的是0,而现在需要改成inf:clear all;close all;clc%初始化邻接压缩表b=[1 2 6; 1 4 7 2 3 5; 2 4 8; 2 5 -4; 3 2 -2; 4 3 -3; 4 5 9; 5 1 2; 5 3 7];m=max(max(b(:,1:2... 阅读全文
posted @ 2013-07-10 10:53 Dsp Tian 阅读(6626) 评论(0) 推荐(0) 编辑
摘要:如此经典的算法竟一直没有单独的实现过,真是遗憾啊。广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过。这次单独的将两个算法实现出来,因为算法本身和图像没什么关系,所以更纯粹些。广度优先搜索是从某一节点开始,搜索与其线连接的所有节点,按照广度方向像外扩展,直到不重复遍历所有节点。深度优先搜索是从某一节点开始,沿着其搜索到的第一个节点不断深入下去,当无法再深入的时候,回溯节点,然后再在回溯中的某一节点开始沿另一个方向深度搜索,直到不重复的遍历所有节点。广度优先搜索用的是队列作为临时节点存放处;深度优先搜索可以递归实现(算法导论就是用递归 阅读全文
posted @ 2013-07-05 20:37 Dsp Tian 阅读(26166) 评论(2) 推荐(7) 编辑
摘要:模拟退火首先从某个初始候选解开始,当温度大于0时执行循环。在循环中,通过随机扰动产生一个新的解,然后求得新解和原解之间的能量差,如果差小于0,则采用新解作为当前解。如果差大于0,则采用一个当前温度与能量差成比例的概率来选择是否接受新解。温度越低,接受的概率越小,差值越大,同样接受概率越小。是否接受的概率用此公式计算:p=exp(-ΔE/T)。这里ΔE为新解与原解的差,T为当前的温度。由于温度随迭代次数逐渐降低,因此获得一个较差的解的概率较小。典型的模拟退火算法还使用了蒙特卡洛循环,在温度降低之前,通过多次迭代来找到当前温度下比较好的解。这里使用模拟退火解旅行商问题,因为这个问题本身是一个NP难 阅读全文
posted @ 2013-07-02 19:50 Dsp Tian 阅读(54190) 评论(10) 推荐(7) 编辑
摘要:还是这本书上的内容,不过我看演化计算这一章是倒着看的,这里练习的算法正好和书中介绍的顺序是相反的。演化策略是最古老的的演化算法之一,和上一篇DE算法类似,都是基于种群的随机演化产生最优解的算法。算法步骤如下:1.设定种群个体数和需要迭代的次数。2.选择父代中的个体按照公式z1=sqrt(-2*ln(u1))*sin(2*pi*u2)*m,z2=sqrt(-2*ln(u1))*cos(2*pi*u2)*m进行演化。这里u1,u2都是随机值,m是控制因子,演化次数越多m,m越小,父代通过与z1,z2相加得到后代。3.计算后代的适应性。4.选择后代中最优的适应性作为全局最优适应性。其实整个过程和DE 阅读全文
posted @ 2013-07-01 19:37 Dsp Tian 阅读(4172) 评论(0) 推荐(0) 编辑
摘要:这两天在看M.Tim Jones的《人工智能》,书中不只介绍原理,而且都有相应的c代码实现。虽然代码不完全,不过缺少的部分完全可以自己补完。差异演化和昨天实现的PSO很类似,都属于优化算法。算法步骤:1.设定种群个体个数和需要迭代的次数。当然也可以设定条件,然后判断是否停止迭代。2.定义交叉概率CR,个体有一定概率进行变异,如果变异则进行第3步,如果不变异则下一代个体和当前个体一样。3.在种群中随机选出三个互不相同的个体进行变异,变异公式如下(有博士论文总结了一大堆变异公式):Xi,g+1=Xr1,g+F(Xr2,g-Xr3,g)其中X是种群中个体特征向量,这里就是x和y坐标。g是种群的代数。 阅读全文
posted @ 2013-06-27 20:19 Dsp Tian 阅读(3582) 评论(0) 推荐(2) 编辑
摘要:算法没有和图像处理直接相关,不过对于图像分类中的模式识别相关算法,也许会用到这个优化算法。算法步骤:1.首先确定粒子个数与迭代次数。2.对每个粒子随机初始化位置与速度。3.采用如下公式更新每个粒子的位置与速度。Px=Px+Pv*t; %位置更新公式 Pv=Pv+(c1*rand*(Gx-Px))+(... 阅读全文
posted @ 2013-06-26 21:22 Dsp Tian 阅读(39201) 评论(11) 推荐(8) 编辑
摘要:Log Polar就是所谓的极坐标变换,通过变换能将笛卡尔坐标系中的图像映射到极坐标系中。确切的来说我这里不算是Log Polar,因为Log Polar是将图像从(x,y)映射到(log(r),theta),而我是将图像从(x,y)映射到(r,theta)。原理是一样的。变换公式是:x=r*cos(theta);y=r*sin(theta);其中r代表极径,theta代表极角。这些应该学过高中的都会的。下图能形象的表示变换:似乎有通过此变换求图像特征的算法,不过具体操作我也不清楚。我这里只是实现了变换的操作。原图如下:以图像中心作为极坐标原点进行极坐标变换:matlab代码如下:clear 阅读全文
posted @ 2013-06-09 14:55 Dsp Tian 阅读(7605) 评论(2) 推荐(0) 编辑
摘要:通过本篇和上一篇的结合,应该就能做出拉普拉斯图像融合了。这里用的方法很简单,就是用模板和两个图像相乘,然后对处理后的两个图像再相加就可以了。拉普拉斯融合就是对金字塔的每一层图像做这样的操作,然后再重构就行了。先看看这里的效果:原图apple原图orange:模板图像(实际处理时需要对模板进行模糊):融合后图像:matlab代码如下:clear all; close all; clc;apple=double(imread('apple.jpg'));orange=double(imread('orange.jpg'));[m n]=size(apple);mas 阅读全文
posted @ 2013-06-07 14:37 Dsp Tian 阅读(27528) 评论(2) 推荐(3) 编辑
摘要:过去研究过高斯金字塔,不过今天看来,当时似乎搞错了,金字塔上下层应该是采样的关系,而不是缩放的关系,而且不同层的sigma应该也有所不同。拉普拉斯金字塔在图像融合中有所应用,方法是首先对两个待融合图像求拉普拉斯残差金字塔,然后用模板对每一级残差图像进行融合得到融合后图像的残差金字塔,然后对这个金字塔进行重构就能得到最终的融合图像,图像各尺度细节得到保留。(注:融合时模板一般会先用高斯函数模糊一下)不过这里不实现融合,只实现拉普拉斯金字塔的建立。建立金字塔的方框图如下(摘自《数字图像处理(第二版)》):通过j-1级近似图像和j级残差图像就能恢复j级输入图像。近似滤波器就是拉普拉斯滤波模板。插入滤 阅读全文
posted @ 2013-06-07 14:14 Dsp Tian 阅读(14101) 评论(14) 推荐(1) 编辑

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页