文档库 最新最全的文档下载
当前位置:文档库 › MATLAB典型去雾算法代码

MATLAB典型去雾算法代码

MATLAB典型去雾算法代码
MATLAB典型去雾算法代码

本节主要介绍基于Retinex理论的雾霭天气图像增强及其实现。

1.3.1 Rentinex理论

Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land(埃德温?兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。

根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。

图1.3-1 Retinex理论示意图

对于观察图像S中的每个点(x,y),用公式可以表示为:

S(x,y)=R(x,y)×L(x,y) (1.3.1)实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。

1.3.2 基于Retinex理论的图像增强的基本步骤

步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即:

S'(x, y)=r(x, y)+l(x, y)=log(R(x, y))+log(L(x, y));

步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数:

D(x, y)=S(x, y) *F(x, y);

步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G (x, y):

G(x,y)=S'(x, y)-log(D(x, y)) ;

步骤四:对G(x,y)取反对数,得到增强后的图像R(x, y):

R(x, y)=exp(G(x, y));

步骤五:对R(x,y)做对比度增强,得到最终的结果图像。

1.3.3 多尺度Retinex 算法

D Jobson 等人提出了多尺度Retinex 算法,多尺度算法的基本公式是:

[][]{}i 1(,)log (,)log (,)(,)N

i n i n n R x y W I x y F x y I x y ==-*∑

其中,i R (x,y )

是Retinex 的输出,,,i R G B ∈表示3个颜色谱带,(,)F x y 是高斯滤波函数,n W 表示尺度的权重因子,N 表示使用尺度的个数,N =3,表示彩色图像,,,i R G B ∈。N =1,表示灰度图像。从公式中可以看出:MSR 算法的特点是能产生包含色调再现和动态范围压缩这两个特性的输出图像。

在MSR 算法的增强过程中,图像可能会因为增加了噪声而造成对图像中的局部区域色彩失真,使得物体的真正颜色效果不能很好的显现出来,从而影响了整体视觉效果。为了弥补这个缺点,一般情况下会应用带色彩恢复因子C 的多尺度算法(MSRCR )来解决。带色彩恢复因子C 的多尺度算法(MSRCR)]是在多个固定尺度的基础上考虑色彩不失真恢复的结果,在多尺度Retinex 算法过程中,我们通过引入一个色彩因子C 来弥补由于图像局部区域对比度增强而导致图像颜色失真的缺陷,通常情况下所引入的色彩恢复因子C 的表达式为

(,)(,)(,)i i MSRCR i MSR R x y C x y R x y =

1(,)

(,)[(,)][](,)i i i N

j j I x y C x y f I x y f I x y ===∑

其中,i C 表示第个通道的色彩恢复系数,它的作用是用来调节3个通道颜色的比例,()f ?表示的是颜色空间的映射函数。带色彩恢复的多尺度Retinex 算法(MSRCR )通过色彩恢复因子C 这个系数来调整原始图像中三个颜色通道之间的比例关系,从而通过把相对有点暗的区域的信息凸显出来,以达到消除图像色彩失真的缺陷。处理后的图像局域对比度提高,而且它的亮度与真实的场景很相似,图像在人们视觉感知下显得极其逼真。因此,MSR 算法具有较好的颜色再现性、亮度恒常性以及动态范围压缩等特性。

1.3.4 例程精讲

例程1.3.1是基于Retinex 理论进行雾霭天气增强的MATLAB 程序,读者可结合程序及注释对基于Retinex 理论进行雾霭天气增强的基本原理进行进一步分析,该程序的运行结果如图1.3-2所示。

例程1.3.1

****************************************************************************************

clear;

close all;

% 读入图像

I=imread('wu.png');

% 取输入图像的R分量

R=I(:,:,1);

[N1,M1]=size(R);

% 对R分量进行数据转换,并对其取对数

R0=double(R);

Rlog=log(R0+1);

% 对R分量进行二维傅里叶变换

Rfft2=fft2(R0);

% 形成高斯滤波函数

sigma=250;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

% 对高斯滤波函数进行二维傅里叶变换

Ffft=fft2(double(F));

% 对R分量与高斯滤波函数进行卷积运算

DR0=Rfft2.*Ffft;

DR=ifft2(DR0);

% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像

DRdouble=double(DR);

DRlog=log(DRdouble+1);

Rr=Rlog-DRlog;

% 取反对数,得到增强后的图像分量

EXPRr=exp(Rr);

% 对增强后的图像进行对比度拉伸增强

MIN = min(min(EXPRr));

MAX = max(max(EXPRr));

EXPRr = (EXPRr-MIN)/(MAX-MIN);

EXPRr=adapthisteq(EXPRr);

% 取输入图像的G分量

G=I(:,:,2);

[N1,M1]=size(G);

% 对G分量进行数据转换,并对其取对数

G0=double(G);

Glog=log(G0+1);

% 对G分量进行二维傅里叶变换

Gfft2=fft2(G0);

% 形成高斯滤波函数

sigma=250;

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

% 对高斯滤波函数进行二维傅里叶变换

Ffft=fft2(double(F));

% 对G分量与高斯滤波函数进行卷积运算

DG0=Gfft2.*Ffft;

DG=ifft2(DG0);

% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像

DGdouble=double(DG);

DGlog=log(DGdouble+1);

Gg=Glog-DGlog;

% 取反对数,得到增强后的图像分量

EXPGg=exp(Gg);

% 对增强后的图像进行对比度拉伸增强

MIN = min(min(EXPGg));

MAX = max(max(EXPGg));

EXPGg = (EXPGg-MIN)/(MAX-MIN);

EXPGg=adapthisteq(EXPGg);

% 取输入图像的B分量

B=I(:,:,3);

[N1,M1]=size(B);

% 对B分量进行数据转换,并对其取对数

B0=double(B);

Blog=log(B0+1);

% 对B分量进行二维傅里叶变换

Bfft2=fft2(B0);

% 形成高斯滤波函数

sigma=250;

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

% 对高斯滤波函数进行二维傅里叶变换

Ffft=fft2(double(F));

% 对B分量与高斯滤波函数进行卷积运算

DB0=Gfft2.*Ffft;

DB=ifft2(DB0);

% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像

DBdouble=double(DB);

DBlog=log(DBdouble+1);

Bb=Blog-DBlog;

EXPBb=exp(Bb);

% 对增强后的图像进行对比度拉伸增强

MIN = min(min(EXPBb));

MAX = max(max(EXPBb));

EXPBb = (EXPBb-MIN)/(MAX-MIN);

EXPBb=adapthisteq(EXPBb);

% 对增强后的图像R、G、B分量进行融合

I0(:,:,1)=EXPRr;

I0(:,:,2)=EXPGg;

I0(:,:,3)=EXPBb;

% 显示运行结果

subplot(121),imshow(I);

subplot(122),imshow(I0);

****************************************************************************************

1.3-2 例程1.3.1的运行结果

例程1.3.2是基于Retinex理论进行雾霭天气增强的MATLAB程序,读者可结合程序及注释对基于Retinex理论进行雾霭天气增强的基本原理进行进一步分析,该程序的运行结果如图1.3-3所示。

例程1.3.2

**************************************************************************************** clear;

close all;

I=imread('wu.png');

% 分别取输入图像的R、G、B三个分量,并将其转换为双精度型

R=I(:,:,1);

G=I(:,:,2);

B=I(:,:,3);

R0=double(R);

G0=double(G);

B0=double(B);

[N1,M1]=size(R);

% 对R分量进行对数变换

Rlog=log(R0+1);

% 对R分量进行二维傅里叶变换

Rfft2=fft2(R0);

% 形成高斯滤波函数(sigma=128)

sigma=128;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

% 对高斯滤波函数进行二维傅里叶变换

Ffft=fft2(double(F));

% 对R分量与高斯滤波函数进行卷积运算

DR0=Rfft2.*Ffft;

DR=ifft2(DR0);

% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DRdouble=double(DR);

DRlog=log(DRdouble+1);

Rr0=Rlog-DRlog;

% 形成高斯滤波函数(sigma=256)

sigma=256;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

% 对高斯滤波函数进行二维傅里叶变换

Ffft=fft2(double(F));

% 对R分量与高斯滤波函数进行卷积运算

DR0=Rfft2.*Ffft;

DR=ifft2(DR0);

% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DRdouble=double(DR);

DRlog=log(DRdouble+1);

Rr1=Rlog-DRlog;

% 形成高斯滤波函数(sigma=512)

sigma=512;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

% 对高斯滤波函数进行二维傅里叶变换

Ffft=fft2(double(F));

% 对R分量与高斯滤波函数进行卷积运算

DR0=Rfft2.*Ffft;

DR=ifft2(DR0);

% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DRdouble=double(DR);

DRlog=log(DRdouble+1);

Rr2=Rlog-DRlog;

% 对上述三次增强得到的图像取均值作为最终增强的图像

Rr=(1/3)*(Rr0+Rr1+Rr2);

% 定义色彩恢复因子C

a=125;

II=imadd(R0,G0);

II=imadd(II,B0);

Ir=immultiply(R0,a);

C=imdivide(Ir,II);

C=log(C+1);

% 将增强后的R分量乘以色彩恢复因子,并对其进行反对数变换

Rr=immultiply(C,Rr);

EXPRr=exp(Rr);

% 对增强后的R分量进行灰度拉伸

MIN = min(min(EXPRr));

MAX = max(max(EXPRr));

EXPRr = (EXPRr-MIN)/(MAX-MIN);

EXPRr=adapthisteq(EXPRr);

[N1,M1]=size(G);

% 对G分量进行处理,步骤与对R分量处理的步骤相同,请读者仿照R分量处理的步骤进行理解。G0=double(G);

Glog=log(G0+1);

Gfft2=fft2(G0);

sigma=128;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

Ffft=fft2(double(F));

DG0=Gfft2.*Ffft;

DG=ifft2(DG0);

DGdouble=double(DG);

DGlog=log(DGdouble+1);

Gg0=Glog-DGlog;

sigma=256;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

Ffft=fft2(double(F));

DG0=Gfft2.*Ffft;

DG=ifft2(DG0);

DGdouble=double(DG);

DGlog=log(DGdouble+1);

Gg1=Glog-DGlog;

sigma=512;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

Ffft=fft2(double(F));

DG0=Gfft2.*Ffft;

DG=ifft2(DG0);

DGdouble=double(DG);

DGlog=log(DGdouble+1);

Gg2=Glog-DGlog;

Gg=(1/3)*(Gg0+Gg1+Gg2);

a=125;

II=imadd(R0,G0);

II=imadd(II,B0);

Ir=immultiply(R0,a);

C=imdivide(Ir,II);

C=log(C+1);

Gg=immultiply(C,Gg);

EXPGg=exp(Gg);

MIN = min(min(EXPGg));

MAX = max(max(EXPGg));

EXPGg = (EXPGg-MIN)/(MAX-MIN);

EXPGg=adapthisteq(EXPGg);

% 对B分量进行处理,步骤与对R分量处理的步骤相同,请读者仿照R分量处理的步骤进行理解。 [N1,M1]=size(B);

B0=double(B);

Blog=log(B0+1);

Bfft2=fft2(B0);

sigma=128;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

Ffft=fft2(double(F));

DB0=Bfft2.*Ffft;

DB=ifft2(DB0);

DBdouble=double(DB);

DBlog=log(DBdouble+1);

Bb0=Blog-DBlog;

sigma=256;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

Ffft=fft2(double(F));

DB0=Bfft2.*Ffft;

DB=ifft2(DB0);

DBdouble=double(DB);

DBlog=log(DBdouble+1);

Bb1=Blog-DBlog;

sigma=512;

F = zeros(N1,M1);

for i=1:N1

for j=1:M1

F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));

end

end

F = F./(sum(F(:)));

Ffft=fft2(double(F));

DB0=Rfft2.*Ffft;

DB=ifft2(DB0);

DBdouble=double(DB);

DBlog=log(DBdouble+1);

Bb2=Blog-DBlog;

Bb=(1/3)*(Bb0+Bb1+Bb2);

a=125;

II=imadd(R0,G0);

II=imadd(II,B0);

Ir=immultiply(R0,a);

C=imdivide(Ir,II);

C=log(C+1);

Bb=immultiply(C,Bb);

EXPBb=exp(Bb);

MIN = min(min(EXPBb));

MAX = max(max(EXPBb));

EXPBb = (EXPBb-MIN)/(MAX-MIN);

EXPBb=adapthisteq(EXPBb);

% 对增强后的图像R、G、B分量进行融合

I0(:,:,1)=EXPRr;

I0(:,:,2)=EXPGg;

I0(:,:,3)=EXPBb;

% 显示运行结果

subplot(121),imshow(I);

subplot(122),imshow(I0);

****************************************************************************************

1.3-3 例程1.3.2的运行结果

图论算法及其MATLAB程序代码

图论算法及其MATLAB 程序代码 求赋权图G =(V ,E ,F )中任意两点间的最短路的Warshall-Floyd 算法: 设A =(a ij )n ×n 为赋权图G =(V ,E ,F )的矩阵,当v i v j ∈E 时a ij =F (v i v j ),否则取a ii =0,a ij =+∞(i ≠j ),d ij 表示从v i 到v j 点的距离,r ij 表示从v i 到v j 点的最短路中一个点的编号. ①赋初值.对所有i ,j ,d ij =a ij ,r ij =j .k =1.转向② ②更新d ij ,r ij .对所有i ,j ,若d ik +d k j <d ij ,则令d ij =d ik +d k j ,r ij =k ,转向③. ③终止判断.若d ii <0,则存在一条含有顶点v i 的负回路,终止;或者k =n 终止;否则令k =k +1,转向②. 最短路线可由r ij 得到. 例1求图6-4中任意两点间的最短路. 解:用Warshall-Floyd 算法,MATLAB 程序代码如下: n=8;A=[0281Inf Inf Inf Inf 206Inf 1Inf Inf Inf 8607512Inf 1Inf 70Inf Inf 9Inf Inf 15Inf 03Inf 8 Inf Inf 1Inf 3046 Inf Inf 29Inf 403 Inf Inf Inf Inf 8630];%MATLAB 中,Inf 表示∞ D=A;%赋初值 for (i=1:n)for (j=1:n)R(i,j)=j;end ;end %赋路径初值 for (k=1:n)for (i=1:n)for (j=1:n)if (D(i,k)+D(k,j)

基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码

本文主要介绍基于Retinex理论的雾霭天气图像增强及其实现。并通过编写两个程序来实现图像的去雾功能。 1 Rentinex理论 Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land(埃德温?兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。Retinex 理论的基本容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。 根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。 图-1 Retinex理论示意图 对于观察图像S中的每个点(x,y),用公式可以表示为: S(x,y)=R(x,y)×L(x,y) (1.3.1) 实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。 2 基于Retinex理论的图像增强的基本步骤 步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即: S'(x, y)=r(x, y)+l(x, y)=log(R(x, y))+log(L(x, y)); 步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数: D(x, y)=S(x, y) *F(x, y); 步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G (x, y):

Floyd算法Matlab程序

Floyd算法Matlab程序第一种: %floyd.m %采用floyd算法计算图a中每对顶点最短路 %d是矩离矩阵 %r是路由矩阵 function ,d,r,=floyd(a) n=size(a,1); d=a; for i=1:n for j=1:n r(i,j)=j; end end r for k=1:n for i=1:n for j=1:n if d(i,k)+d(k,j)

end k d r end 第二种: %Floyd算法 %解决最短路径问题,是用来调用的函数头文件 %[D,path]=floyd(a) %输入参数a是求图的带权邻接矩阵,D(i,j)表示i到j的最短距 离,path(i,j)i,j之间最短路径上顶点i的后继点 %[D,path,min1,path1]=floyd(a,i,j) %输入参数a是所求图的带权邻接矩阵,i,j起点终点,min1表示i与j最短距离,path1为最短路径function [D,path,min1,path1]=floyd(a,start,terminal) D=a;n=size(D,1);path=zeros(n,n); for i=1:n for j=1:n if D(i,j)~=inf path(i,j)=j; end end end for k=1:n for i=1:n

for j=1:n if D(i,k)+D(k,j)

蚁群算法TSP问题matlab源代码

function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta ,Rho,Q) %%===================================================== ==================== %% ACATSP.m %% Ant Colony Algorithm for Traveling Salesman Problem %% ChengAihua,PLA Information Engineering University,ZhengZhou,China %% Email:aihuacheng@https://www.wendangku.net/doc/8013310726.html, %% All rights reserved %%------------------------------------------------------------------------- %% 主要符号说明 %% C n个城市的坐标,n×4的矩阵 %% NC_max 最大迭代次数 %% m 蚂蚁个数 %% Alpha 表征信息素重要程度的参数 %% Beta 表征启发式因子重要程度的参数 %% Rho 信息素蒸发系数 %% Q 信息素增加强度系数 %% R_best 各代最佳路线 %% L_best 各代最佳路线的长度 %%===================================================== ==================== %%第一步:变量初始化 n=size(C,1);%n表示问题的规模(城市个数) D=zeros(n,n);%D表示完全图的赋权邻接矩阵 for i=1:n for j=1:n if i~=j D(i,j)=max( ((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5,min(abs(C(i,3)-C(j,3)),144- abs(C(i,3)-C(j,3))) );%计算城市间距离 else D(i,j)=eps; end D(j,i)=D(i,j); end end Eta=1./D;%Eta为启发因子,这里设为距离的倒数 Tau=ones(n,n);%Tau为信息素矩阵 Tabu=zeros(m,n);%存储并记录路径的生成 NC=1;%迭代计数器 R_best=zeros(NC_max,n);%各代最佳路线

基于retinex的图像去雾算法

I=imread('1.jpg'); R = I(:, :, 1); G = I(:, :, 2); B = I(:, :, 3); R0 = double(R); G0 = double(G); B0 = double(B); [N1, M1] = size(R); Rlog = log(R0+1); Rfft2 = fft2(R0); sigma1 = 128; F1 = fspecial('gaussian', [N1,M1], sigma1); Efft1 = fft2(double(F1)); sigma2 = 256; F2 = fspecial('gaussian', [N1,M1], sigma2); Efft2 = fft2(double(F2)); sigma3 = 512; F3 = fspecial('gaussian', [N1,M1], sigma3); Efft3 = fft2(double(F3)); DR0 = Rfft2.* Efft1; DR = ifft2(DR0); DRlog = log(DR +1); Rr1 = Rlog - DRlog; DR0 = Rfft2.* Efft2; DR = ifft2(DR0); DRlog = log(DR +1); Rr2 = Rlog - DRlog; DR0 = Rfft2.* Efft3; DR = ifft2(DR0); DRlog = log(DR +1); Rr3 = Rlog - DRlog; Rr = (Rr1 + Rr2 +Rr3)/3; a = 125; II = imadd(R0, G0); II = imadd(II, B0); Ir = immultiply(R0, a); C = imdivide(Ir, II); C = log(C+1); Rr = immultiply(C, Rr); EXPRr = exp(Rr); MIN = min(min(EXPRr)); MAX = max(max(EXPRr)); EXPRr = (EXPRr - MIN)/(MAX - MIN); EXPRr = adapthisteq(EXPRr); Glog = log(G0+1); Gfft2 = fft2(G0); DG0 = Gfft2.* Efft1;

图像去雾霭算法及其实现..

图像去雾霭算法及其实现 电气工程及其自动化 学生姓名杨超程指导教师李国辉 摘要雾霭等天气条件下获得的图像,具有图像不清晰,颜色失真等等一些图像退化的现象,直接影响了视觉系统的发挥。因此,为了有效的改善雾化图像的质量,降低雾霭等天气条件下造成户外系统成像的影响,对雾霭图像进行有效的去雾处理显得十分必要。 本设计提出了三种图像去雾算法,一种是基于光照分离模型的图像去雾算法;一种是基于直方图均衡化的图像去雾算法;还有一种是基于暗原色先验的图像去雾算法。并在MATLAB的基础上对现实生活的图像进行了去雾处理,最后对不同的方法的处理结果进行了简要的分析。 关键词:图像去雾光照分离直方图均衡化暗原色先验

Algorithm and its implementation of image dehazing Major Electrical engineering and automation Student Yang Chaocheng Supervisor Li Guohui Abstract Haze weather conditions so as to obtain the image, the image is not clear, the phenomenon of color distortion and so on some image degradation, directly influence the exertion of the visual system. Therefore, in order to effectively improve the atomization quality of the image, reduce the haze caused by outdoor weather conditions such as imaging system, the influence of the haze image effectively it is necessary to deal with the fog. This design introduced three kinds of algorithms of image to fog, a model is based on the separation of light image to fog algorithm; One is the image to fog algorithm based on histogram equalization; Another is based on the dark grey apriori algorithms of image to fog. And on the basis of MATLAB to the real life to deal with the fog, the image of the processing results of different methods are briefly analyzed. Key words:Image to fog Light separation histogram Dark grey

蚁群算法matlab程序代码

先新建一个主程序M文件ACATSP.m 代码如下: function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q) %%================================================== ======================= %% 主要符号说明 %% C n个城市的坐标,n×2的矩阵 %% NC_max 蚁群算法MATLAB程序最大迭代次数 %% m 蚂蚁个数 %% Alpha 表征信息素重要程度的参数 %% Beta 表征启发式因子重要程度的参数 %% Rho 信息素蒸发系数 %% Q 表示蚁群算法MATLAB程序信息素增加强度系数 %% R_best 各代最佳路线 %% L_best 各代最佳路线的长度 %%================================================== =======================

%% 蚁群算法MATLAB程序第一步:变量初始化 n=size(C,1);%n表示问题的规模(城市个数) D=zeros(n,n);%D表示完全图的赋权邻接矩阵 for i=1:n for j=1:n if i~=j D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5; else D(i,j)=eps; % i = j 时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示 end D(j,i)=D(i,j); %对称矩阵 end end Eta=1./D; %Eta为启发因子,这里设为距离的倒数 Tau=ones(n,n); %Tau为信息素矩阵 Tabu=zeros(m,n); %存储并记录路径的生成

Floyd算法_计算最短距离矩阵和路由矩阵_查询最短距离和路由_matlab实验报告

实验四:Floyd 算法 一、实验目的 利用MATLAB 实现Floyd 算法,可对输入的邻接距离矩阵计算图中任意两点间的最短距离矩阵和路由矩阵,且能查询任意两点间的最短距离和路由。 二、实验原理 Floyd 算法适用于求解网络中的任意两点间的最短路径:通过图的权值矩阵求出任意两点间的最短距离矩阵和路由矩阵。优点是容易理解,可以算出任意两个节点之间最短距离的算法,且程序容易实现,缺点是复杂度达到,不适合计算大量数据。 Floyd 算法可描述如下: 给定图G 及其边(i , j )的权w i, j (1≤i≤n ,1≤j≤n) F0:初始化距离矩阵W(0)和路由矩阵R(0)。其中: F1:已求得W(k-1)和R(k-1),依据下面的迭代求W(k)和R(k) F2:若k≤n,重复F1;若k>n,终止。 三、实验内容 1、用MATLAB 仿真工具实现Floyd 算法:给定图G 及其边(i , j )的权 w i , j (1≤i≤n ,1≤j≤n) ,求出其各个端点之间的最小距离以及路由。 (1)尽可能用M 函数分别实现算法的关键部分,用M 脚本来进行算法结 果验证; (2)分别用以下两个初始距离矩阵表示的图进行算法验证:

分别求出W(7)和R(7)。 2、根据最短路由矩阵查询任意两点间的最短距离和路由 (1)最短距离可以从最短距离矩阵的ω(i,j)中直接得出; (2)相应的路由则可以通过在路由矩阵中查找得出。由于该程序中使用的是前向矩阵,因此在查找的过程中,路由矩阵中r(i,j)对应的值为Vi 到Vj 路由上的下一个端点,这样再代入r(r(i,j),j),可得到下下个端点,由此不断循环下去,即可找到最终的路由。 (3)对图1,分别以端点对V4 和V6, V3 和V4 为例,求其最短距离和路由;对图2,分别以端点对V1 和V7,V3 和V5,V1 和V6 为例,求其最短距离和路由。 3、输入一邻接权值矩阵,求解最短距离和路由矩阵,及某些点间的最短路径。 四、采用的语言 MatLab 源代码: 【func1.m】 function [w r] = func1(w) n=length(w); x = w; r = zeros(n,1);%路由矩阵的初始化 for i=1:1:n for j=1:1:n if x(i,j)==inf r(i,j)=0; else r(i,j)=j; end, end end; %迭代求出k次w值 for k=1:n a=w; s = w; for i=1:n

基于matlab的图像去雾算法详细讲解与实现附matlab实现源代码

基于matlab的图像去雾算法详细讲解与实现-附matlab 实现源代码

————————————————————————————————作者: ————————————————————————————————日期: ?

本文主要介绍基于Retinex理论的雾霭天气图像增强及其实现。并通过编写两个程序来实现图像的去雾功能。 1Rentinex理论 Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land(埃德温?兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。 根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。 图-1 Retinex理论示意图 对于观察图像S中的每个点(x,y),用公式可以表示为:? S(x,y)=R(x,y)×L(x,y) (1.3.1)实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。 2 基于Retinex理论的图像增强的基本步骤 步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即: S'(x,y)=r(x,y)+l(x, y)=log(R(x,y))+log(L(x, y)); 步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数: D(x,y)=S(x, y) *F(x, y); 步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G (x,y): G(x,y)=S'(x, y)-log(D(x, y)) ;

蚁群算法matlab

蚁群算法的matlab源码,同时请指出为何不能优化到已知的最好解 % % % the procedure of ant colony algorithm for VRP % % % % % % % % % % % % %initialize the parameters of ant colony algorithms load data.txt; d=data(:,2:3); g=data(:,4); m=31; % 蚂蚁数 alpha=1; belta=4;% 决定tao和miu重要性的参数 lmda=0; rou=0.9; %衰减系数 q0=0.95; % 概率 tao0=1/(31*841.04);%初始信息素 Q=1;% 蚂蚁循环一周所释放的信息素 defined_phrm=15.0; % initial pheromone level value QV=100; % 车辆容量 vehicle_best=round(sum(g)/QV)+1; %所完成任务所需的最少车数V=40; % 计算两点的距离 for i=1:32; for j=1:32;

dist(i,j)=sqrt((d(i,1)-d(j,1))^2+(d(i,2)-d(j,2))^2); end; end; %给tao miu赋初值 for i=1:32; for j=1:32; if i~=j; %s(i,j)=dist(i,1)+dist(1,j)-dist(i,j); tao(i,j)=defined_phrm; miu(i,j)=1/dist(i,j); end; end; end; for k=1:32; for k=1:32; deltao(i,j)=0; end; end; best_cost=10000; for n_gen=1:50; print_head(n_gen); for i=1:m; %best_solution=[]; print_head2(i);

基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码

基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码

本文主要介绍基于Retinex理论的雾霭天气图像增强及其实现。并通过编写两个程序来实现图像的去雾功能。 1 Rentinex理论 Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land(埃德温?兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。 根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。 图-1 Retinex理论示意图 对于观察图像S中的每个点(x,y),用公式可以表示为: S(x,y)=R(x,y)×L(x,y) (1.3.1)实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。 2 基于Retinex理论的图像增强的基本步骤 步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即: S'(x, y)=r(x, y)+l(x, y)=log(R(x, y))+log(L(x, y)); 步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数: D(x, y)=S(x, y) *F(x, y); 步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G (x, y):

蚁群算法MATLAB代码

function [y,val]=QACStic load att48 att48; MAXIT=300; % 最大循环次数 NC=48; % 城市个数 tao=ones(48,48);% 初始时刻各边上的信息最为1 rho=0.2; % 挥发系数 alpha=1; beta=2; Q=100; mant=20; % 蚂蚁数量 iter=0; % 记录迭代次数 for i=1:NC % 计算各城市间的距离 for j=1:NC distance(i,j)=sqrt((att48(i,2)-att48(j,2))^2+(att48(i,3)-att48(j,3))^2); end end bestroute=zeros(1,48); % 用来记录最优路径 routelength=inf; % 用来记录当前找到的最优路径长度 % for i=1:mant % 确定各蚂蚁初始的位置 % end for ite=1:MAXIT for ka=1:mant %考查第K只蚂蚁 deltatao=zeros(48,48); % 第K只蚂蚁移动前各边上的信息增量为零 [routek,lengthk]=travel(distance,tao,alpha,beta); if lengthk

matlab图论程序算法大全

精心整理 图论算法matlab实现 求最小费用最大流算法的 MATLAB 程序代码如下: n=5;C=[0 15 16 0 0 0 0 0 13 14 for while for for(i=1:n)for(j=1:n)if(C(i,j)>0&f(i,j)==0)a(i,j)=b(i,j); elseif(C(i,j)>0&f(i,j)==C(i,j))a(j,i)=-b(i,j); elseif(C(i,j)>0)a(i,j)=b(i,j);a(j,i)=-b(i,j);end;end;end for(i=2:n)p(i)=Inf;s(i)=i;end %用Ford 算法求最短路, 赋初值 for(k=1:n)pd=1; %求有向赋权图中vs 到vt 的最短路

for(i=2:n)for(j=1:n)if(p(i)>p(j)+a(j,i))p(i)=p(j)+a(j,i);s(i)=j;pd=0;end ;end;end if(pd)break;end;end %求最短路的Ford 算法结束 if(p(n)==Inf)break;end %不存在vs 到vt 的最短路, 算法终止. 注意在求最小费用最大流时构造有 while if elseif if if pd=0; 值 t=n; if elseif if(s(t)==1)break;end %当t 的标号为vs 时, 终止调整过程 t=s(t);end if(pd)break;end%如果最大流量达到预定的流量值 wf=0; for(j=1:n)wf=wf+f(1,j);end;end %计算最大流量 zwf=0;for(i=1:n)for(j=1:n)zwf=zwf+b(i,j)*f(i,j);end;end%计算最小费用

matlab蚁群算法精讲及仿真图

蚁群算法matlab精讲及仿真 4.1基本蚁群算法 4.1.1基本蚁群算法的原理 蚁群算法是上世纪90年代意大利学者M.Dorigo,v.Maneizz。等人提出来的,在越来越多的领域里得到广泛应用。蚁群算法,是一种模拟生物活动的智能算法,蚁群算法的运作机理来源于现实世界中蚂蚁的真实行为,该算法是由Marco Dorigo 首先提出并进行相关研究的,蚂蚁这种小生物,个体能力非常有限,但实际的活动中却可以搬动自己大几十倍的物体,其有序的合作能力可以与人类的集体完成浩大的工程非常相似,它们之前可以进行信息的交流,各自负责自己的任务,整个运作过程统一有序,在一只蚂蚁找食物的过程中,在自己走过的足迹上洒下某种物质,以传达信息给伙伴,吸引同伴向自己走过的路径上靠拢,当有一只蚂蚁找到食物后,它还可以沿着自己走过的路径返回,这样一来找到食物的蚂蚁走过的路径上信息传递物质的量就比较大,更多的蚂蚁就可能以更大的机率来选择这条路径,越来越多的蚂蚁都集中在这条路径上,蚂蚁就会成群结队在蚁窝与食物间的路径上工作。当然,信息传递物质会随着时间的推移而消失掉一部分,留下一部分,其含量是处于动态变化之中,起初,在没有蚂蚁找到食物的时候,其实所有从蚁窝出发的蚂蚁是保持一种随机的运动状态而进行食物搜索的,因此,这时,各蚂蚁间信息传递物质的参考其实是没有价值的,当有一只蚂蚁找到食物后,该蚂蚁一般就会向着出发地返回,这样,该蚂蚁来回一趟在自己的路径上留下的信息传递物质就相对较多,蚂蚁向着信息传递物质比较高的路径上运动,更多的蚂蚁就会选择找到食物的路径,而蚂蚁有时不一定向着信

息传递物质量高的路径走,可能搜索其它的路径。这样如果搜索到更短的路径后,蚂蚁又会往更短的路径上靠拢,最终多数蚂蚁在最短路径上工作。【基于蚁群算法和遗传算法的机器人路径规划研究】 该算法的特点: (1)自我组织能力,蚂蚁不需要知道整体环境信息,只需要得到自己周围的信息,并且通过信息传递物质来作用于周围的环境,根据其他蚂蚁的信息素来判断自己的路径。 (2)正反馈机制,蚂蚁在运动的过程中,收到其他蚂蚁的信息素影响,对于某路径上信息素越强的路径,其转向该路径的概率就越大,从而更容易使得蚁群寻找到最短的避障路径。 (3)易于与其他算法结合,现实中蚂蚁的工作过程简单,单位蚂蚁的任务也比较单一,因而蚁群算法的规则也比较简单,稳定性好,易于和其他算法结合使得避障路径规划效果更好。 (4)具有并行搜索能力探索过程彼此独立又相互影响,具备并行搜索能力,这样既可以保持解的多样性,又能够加速最优解的发现。 4.1.2 基本蚁群算法的生物仿真模型 a为蚂蚁所在洞穴,food为食物所在区,假设abde为一条路径,eadf为另外一条路径,蚂蚁走过后会留下信息素,5分钟后蚂蚁在两条路径上留下的信息素的量都为3,概率可以认为相同,而30分钟后baed路径上的信息素的量为60,明显大于eadf路径上的信息素的量。最终蚂蚁会完全选择abed这条最短路径,由此可见,

Floyd算法_计算最短距离矩阵和路由矩阵_查询最短距离和路由_matlab实验报告

一、实验目的 利用MATLAB实现Floyd算法,可对输入的邻接距离矩阵计算图中任意两点间的最短距离矩阵和路由矩阵,且能查询任意两点间的最短距离和路由。 二、实验原理 Floyd 算法适用于求解网络中的任意两点间的最短路径:通过图的权值矩阵求出任意两点间的最短距离矩阵和路由矩阵。优点是容易理解,可以算出任意两个 节点之间最短距离的算法,且程序容易实现,缺点是复杂度达到,不适合计算大量数据。 Floyd 算法可描述如下: 给定图G及其边(i , j ) 的权w, j (1 < i < n ,1 n,终止。?? 三、实验内容 1、用MATLAB仿真工具实现Floyd算法:给定图G及其边(i , j ) 的权 w, j (1 < i < n ,1 < j < n),求出其各个端点之间的最小距离以及路由。 (1)尽可能用 M 函数分别实现算法的关键部分,用 M 脚本来进行算法结果验证; (2)分别用以下两个初始距离矩阵表示的图进行算法验证: 分别求出WT和R7)。 2、根据最短路由矩阵查询任意两点间的最短距离和路由 (1)最短距离可以从最短距离矩阵的3 (i,j)中直接得出; (2)相应的路由则可以通过在路由矩阵中查找得出。由于该程序中使用的是前向矩阵,因此在查找的过程中,路由矩阵中r(i,j) 对应的值为Vi到Vj路由上的下一个端点,这样再代入r(r(i,j),j) ,可得到下下个端点,由此不断循环下去,即可找到最终的路由。 (3)对图1,分别以端点对V4 和V6, V3 和V4 为例,求其最短距离和路由;对图2,分别以端点对V1和V7, V3和V5, V1和V6为例,求其最短距离和路由。 3、输入一邻接权值矩阵,求解最短距离和路由矩阵,及某些点间的最短路径。

图论算法及其MATLAB程序代码

图论算法及其MATLAB程序代码 求赋权图G = (V, E , F )中任意两点间的最短路的Warshall-Floyd算法: 设A = (a ij )n×n为赋权图G = (V, E , F )的矩阵, 当v i v j∈E时a ij= F (v i v j), 否则取a ii=0, a ij = +∞(i≠j ), d ij表示从v i到v j点的距离, r ij表示从v i到v j点的最短路中一个点的编号. ①赋初值. 对所有i, j, d ij = a ij, r ij = j. k = 1. 转向② ②更新d ij, r ij . 对所有i, j, 若d ik + d k j<d ij, 则令d ij = d ik + d k j, r ij = k, 转向③. ③终止判断. 若d ii<0, 则存在一条含有顶点v i的负回路, 终止; 或者k = n终止; 否则令k = k + 1, 转向②. 最短路线可由r ij得到. 例1求图6-4中任意两点间的最短路. 图6-4 解:用Warshall-Floyd算法, MA TLAB程序代码如下: n=8;A=[0 2 8 1 Inf Inf Inf Inf 2 0 6 Inf 1 Inf Inf Inf 8 6 0 7 5 1 2 Inf 1 Inf 7 0 Inf Inf 9 Inf Inf 1 5 Inf 0 3 Inf 8 Inf Inf 1 Inf 3 0 4 6 Inf Inf 2 9 Inf 4 0 3 Inf Inf Inf Inf 8 6 3 0]; % MATLAB中, Inf表示∞ D=A; %赋初值 for(i=1:n)for(j=1:n)R(i,j)=j;end;end%赋路径初值 for(k=1:n)for(i=1:n)for(j=1:n)if(D(i,k)+D(k,j)

基于蚁群算法的MATLAB实现

基于蚁群算法的机器人路径规划MATLAB源代码 基本思路是,使用离散化网格对带有障碍物的地图环境建模,将地图环境转化为邻接矩阵,最后使用蚁群算法寻找最短路径。 function [ROUTES,PL,Tau]=ACASPS(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q) %% --------------------------------------------------------------- % ACASP.m % 基于蚁群算法的机器人路径规划 % GreenSim团队——专业级算法设计&代写程序 % 欢迎访问GreenSim团队主页→https://www.wendangku.net/doc/8013310726.html,/greensim %% --------------------------------------------------------------- % 输入参数列表 % G 地形图为01矩阵,如果为1表示障碍物 % Tau 初始信息素矩阵(认为前面的觅食活动中有残留的信息素) % K 迭代次数(指蚂蚁出动多少波) % M 蚂蚁个数(每一波蚂蚁有多少个) % S 起始点(最短路径的起始点) % E 终止点(最短路径的目的点) % Alpha 表征信息素重要程度的参数 % Beta 表征启发式因子重要程度的参数 % Rho 信息素蒸发系数 % Q 信息素增加强度系数 % % 输出参数列表 % ROUTES 每一代的每一只蚂蚁的爬行路线 % PL 每一代的每一只蚂蚁的爬行路线长度 % Tau 输出动态修正过的信息素 %% --------------------变量初始化---------------------------------- %load D=G2D(G); N=size(D,1);%N表示问题的规模(象素个数) MM=size(G,1); a=1;%小方格象素的边长 Ex=a*(mod(E,MM)-0.5);%终止点横坐标 if Ex==-0.5 Ex=MM-0.5; end Ey=a*(MM+0.5-ceil(E/MM));%终止点纵坐标 Eta=zeros(1,N);%启发式信息,取为至目标点的直线距离的倒数 %下面构造启发式信息矩阵 for i=1:N

Dijkstra、Floyd算法Matlab_Lingo实现

Dijkstra 算法Matlab 实现。 %求一个点到其他各点的最短路径 function [min,path]=dijkstra(w,start,terminal) %W 是邻接矩阵 %start 是起始点 %terminal 是终止点 %min 是最短路径长度 %path 是最短路径 n=size(w,1); label(start)=0; f(start)=start; for i=1:n if i~=start label(i)=inf; end end s(1)=start; u=start; while length(s)(label(u)+w(u,v)) label(v)=(label(u)+w(u,v)); f(v)=u; end end end v1=0; k=inf; for i=1:n ins=0; for j=1:length(s) if i==s(j) ins=1; end end 应用举例: edge=[ 2,3,1,3,3,5,4,4,1,7,6,6,5,5,11,1,8,6,9,10,8,9, 9,10;... 3,4,2,7,5,3,5,11,7,6,7,5,6,11,5,8,1,9,5,11,9,8,10,9;... 3,5,8,5,6,6,1,12,7,9,9,2,2,10,10,8,8,3,7,2,9,9,2,2]; n=11; weight=inf*ones(n,n); for i=1:n weight(i,i)=0; end for i=1:size(edge,2) weight(edge(1,i),edge(2,i))=edge(3,i); end [dis,path]=dijkstra(weight,1,11)

(完整版)蚁群算法matlab程序实例整理

function [y,val]=QACS tic load att48 att48; MAXIT=300; % 最大循环次数 NC=48; % 城市个数 tao=ones(48,48);% 初始时刻各边上的信息最为1 rho=0.2; % 挥发系数 alpha=1; beta=2; Q=100; mant=20; % 蚂蚁数量 iter=0; % 记录迭代次数 for i=1:NC % 计算各城市间的距离 for j=1:NC distance(i,j)=sqrt((att48(i,2)-att48(j,2))^2+(att48(i,3)-att48(j,3))^2); end end bestroute=zeros(1,48); % 用来记录最优路径 routelength=inf; % 用来记录当前找到的最优路径长度 % for i=1:mant % 确定各蚂蚁初始的位置 % end for ite=1:MAXIT for ka=1:mant %考查第K只蚂蚁 deltatao=zeros(48,48); % 第K只蚂蚁移动前各边上的信息增量为零 [routek,lengthk]=travel(distance,tao,alpha,beta); if lengthk

相关文档
相关文档 最新文档