目录

一、理论基础

二、案例背景

1.问题描述

2.思路流程

三、部分MATLAB程序

四、仿真结论分析

五、算法相关应用

六、参考文献


一、理论基础

根据参考文献:

初始条件

计算曲率

角度的计算公式

   

那么对于坐标点,其满足如下的计算公式,

二、案例背景

1.问题描述

给定一组初始值,构造出虚拟图。初始值就是如下图图一 x0, y0, θ(0)那行,给出曲线的初始点和初始角度,构造出曲线。曲线中的current point x的坐标可以由θ(s)求出,θ(s)可以由初始值求出。 如下图一所示 K(s)是一条曲线的曲率,用傅里叶级数表达然后求出角θ(s),这样,这条曲线就被描绘出来了,然后用这条曲线构造一个virtual object,如图二所示。 这个object 是曲线以半径r外扩得到的长条形曲面,如图所示。

2.思路流程

本课题我们主要通过VIC算法检测得到曲线的中线,然后根据这个中线进行扩展,得到光滑曲线体,本课题的这个研究过程和实际的蠕虫建模方法非常的接近,这是由于光滑曲线体和蠕虫的建模,他们都是通过中线检测进行的。此外,本课题还对传统的VIC算法进行了改进,通过使用PSO粒子群优化算法,从而大大提供的光滑曲线的建模精度。

通过PSO粒子群优化算法,对原有的VIC算法进行参数进行优化,从而得到更高精度的虚拟曲线的建模。通过仿真对比可知,采用优化算法之后的虚拟曲线,其精度比原算法的精度提高了10倍以上。

三、部分MATLAB程序

VIC算法部分:

function I2 = func_Virtual_Image(X,Y,X_img,Y_img,L,Ls,r,theta);%然后用这条曲线构造一个virtual object,如图二所示。 这个object 是曲线以半径r外扩得到的长条形曲面,如图所示。
%进行扩展
I2 = 50*ones(L,L);for kk = 1:rX1  = zeros(L/Ls,1);Y1  = zeros(L/Ls,1);X2  = zeros(L/Ls,1);Y2  = zeros(L/Ls,1);for i = 1:L/Lsif mod(sum(theta(1:i)),180) < 0X1(i) = X(i) + kk*cos(pi*theta(i)/180);Y1(i) = Y(i) - kk*sin(pi*theta(i)/180);X2(i) = X(i) - kk*cos(pi*theta(i)/180);Y2(i) = Y(i) + kk*sin(pi*theta(i)/180);   elseX1(i) = X(i) + kk*cos(pi/2 - pi*theta(i)/180);Y1(i) = Y(i) - kk*sin(pi/2 - pi*theta(i)/180);X2(i) = X(i) - kk*cos(pi/2 - pi*theta(i)/180);Y2(i) = Y(i) + kk*sin(pi/2 - pi*theta(i)/180); endend%将X和Y曲线变化为实际图像信息for i = 1:L/LsXp1(i) = floor(X1(i));Yp1(i) = floor(Y1(i));Xp2(i) = floor(X2(i));Yp2(i) = floor(Y2(i));    endX_img1 = L-Yp1;Y_img1 = Xp1;X_img2 = L-Yp2;Y_img2 = Xp2;for i = 1:L/LsI2(X_img(i),Y_img(i)) = 255;  if r==1I2(X_img1(i),Y_img1(i)) = 255 - kk*120;  I2(X_img2(i),Y_img2(i)) = 255 - kk*120;  endif r==2I2(X_img1(i),Y_img1(i)) = 255 - kk*90;  I2(X_img2(i),Y_img2(i)) = 255 - kk*90;  end        if r==3I2(X_img1(i),Y_img1(i)) = 255 - kk*80;  I2(X_img2(i),Y_img2(i)) = 255 - kk*80;  end        if r==4I2(X_img1(i),Y_img1(i)) = 255 - kk*60;  I2(X_img2(i),Y_img2(i)) = 255 - kk*60;  end        if r==5I2(X_img1(i),Y_img1(i)) = 255 - kk*50;  I2(X_img2(i),Y_img2(i)) = 255 - kk*50;  end          if r==6I2(X_img1(i),Y_img1(i)) = 255 - kk*40;  I2(X_img2(i),Y_img2(i)) = 255 - kk*40;  end         if r==7I2(X_img1(i),Y_img1(i)) = 255 - kk*35;  I2(X_img2(i),Y_img2(i)) = 255 - kk*35;  end         if r==8I2(X_img1(i),Y_img1(i)) = 255 - kk*30;  I2(X_img2(i),Y_img2(i)) = 255 - kk*30;  end         if r==9I2(X_img1(i),Y_img1(i)) = 255 - kk*25;  I2(X_img2(i),Y_img2(i)) = 255 - kk*25;  endif r==10I2(X_img1(i),Y_img1(i)) = 255 - kk*25;  I2(X_img2(i),Y_img2(i)) = 255 - kk*25;  end        if r==11I2(X_img1(i),Y_img1(i)) = 255 - kk*23;  I2(X_img2(i),Y_img2(i)) = 255 - kk*23;  end        if r==12I2(X_img1(i),Y_img1(i)) = 255 - kk*21;  I2(X_img2(i),Y_img2(i)) = 255 - kk*21;  end        if r==13I2(X_img1(i),Y_img1(i)) = 255 - kk*19;  I2(X_img2(i),Y_img2(i)) = 255 - kk*19;  end          if r==14I2(X_img1(i),Y_img1(i)) = 255 - kk*18;  I2(X_img2(i),Y_img2(i)) = 255 - kk*18;  end         if r==15I2(X_img1(i),Y_img1(i)) = 255 - kk*17;  I2(X_img2(i),Y_img2(i)) = 255 - kk*17;  end         if r==16I2(X_img1(i),Y_img1(i)) = 255 - kk*16;  I2(X_img2(i),Y_img2(i)) = 255 - kk*16;  end        endendI2 = medfilt2(I2,[5,5]);

PSO优化:

while iter<iter_maxiter=iter+1;for i=1:Nalpha(1) = X(1,i);alpha(2) = X(2,i);alpha(3) = X(3,i);V_score  = func_cal_score(alpha,L,m,Theta,Ls,Xt,Yt,r,I2);J=1/(1+(V_score));if J>fpbest(i)fpbest(i)   = J;Xpbest(:,i) = X(:,i);end end[fitnessmax,index]=max(fpbest);if fitnessmax>fgbestfgbest=fitnessmax;Xgbest=X(:,index);endfor i=1:Nr1    = rand; r2    = rand;fai1   = C1*r1;fai2   = C2*r2;  V(:,i)  = w(iter) * V(:,i) +fai1 *( Xpbest(:,i) - X(:,i) ) +
fai2 * ( Xgbest(:,1) - X(:,i) );index  = find(abs(V(:,i))>Vmax);if(any(index))V(index,i) = V(index,i)./abs(V(index,i)).*Vmax;endX(:,i) = X(:,i)+V(:,i);endfgbest_fig(iter)  = fgbest;Xgbest_fig(:,iter) = Xgbest;  alpha(1)        = Xgbest_fig(1,iter);alpha(2)        = Xgbest_fig(2,iter);alpha(3)        = Xgbest_fig(3,iter);V_scores       = func_cal_score(alpha,L,m,Theta,Ls,Xt,Yt,r,I2);      V_score2(iter)   = V_scores;
end

VIC算法的主程序调用:

............................%然后用这条曲线构造一个virtual object,如图二所示。 这个object 是曲线以半径r外扩得到的长条形曲面,如图所示。
%进行扩展
X1  = zeros(L/Ls,1);
Y1  = zeros(L/Ls,1);
X2  = zeros(L/Ls,1);
Y2  = zeros(L/Ls,1);for i = 1:L/Lsif mod(sum(theta(1:i)),180) < 0X1(i) = X(i) + r*cos(pi*theta(i)/180);Y1(i) = Y(i) - r*sin(pi*theta(i)/180);X2(i) = X(i) - r*cos(pi*theta(i)/180);Y2(i) = Y(i) + r*sin(pi*theta(i)/180);   elseX1(i) = X(i) + r*cos(pi/2 - pi*theta(i)/180);Y1(i) = Y(i) - r*sin(pi/2 - pi*theta(i)/180);X2(i) = X(i) - r*cos(pi/2 - pi*theta(i)/180);Y2(i) = Y(i) + r*sin(pi/2 - pi*theta(i)/180); end
endif Ls == 1figure;subplot(121)plot(X,Y,'b');hold on;plot(X,Y,'k.');hold on;plot(X1,Y1,'r');hold on;plot(X2,Y2,'r');hold on;for i = 1:length(X)line([X2(i),X1(i)],[Y2(i),Y1(i)],'Color',[1 0 1]);hold on;endtitle('virtual object');grid onaxis squareaxis([0,L,0,L]);
elsefigure;plot(X,Y,'b');hold on;plot(X,Y,'k.');hold on;plot(X1,Y1,'r');hold on;plot(X2,Y2,'r');hold on;for i = 1:length(X)line([X2(i),X1(i)],[Y2(i),Y1(i)],'Color',[1 0 1]);hold on;endtitle('virtual object');grid onaxis squareaxis([0,L,0,L]);
end%产生虚拟图像
%将X和Y曲线变化为实际图像信息
I2 = func_Virtual_Image(X,Y,X_img,Y_img,L,Ls,r,theta);
if Ls == 1subplot(122)imshow(I2,[])title('被描绘出来的曲线');axis square
end

四、仿真结论分析

从上面的仿真结果可知,通过粒子群优化之后,系统的Score值不断逼近0,这说明通过粒子群优化之后,得到的光滑曲线值的精度达到了最大值。从左图可知,当系统的优化达到优化预期时,系统的最佳适应度值达到最佳值,接近1。

从上图的仿真结果可知,当优化之后,系统的仿真参数达到收敛预期。最后输出的参数值,就可以使系统的曲线建模达到最高精度。

五、算法相关应用

通过所研究的VIC算法,可以有效检测输出医学上的蠕虫检测,从而提高医学诊断等目标 。

六、参考文献

[1] Semin B ,  Auradou H ,  Francois M . Curvilinear shapes by Virtual Image Correlation[J]. Europhysics News, 2011, 42(6):p.17-18.A10-10&12

基于PSO优化VIC算法的WORM蠕虫检测matlab仿真相关推荐

  1. 基于GA优化RBF神经网络(GA-RBF)数据预测的matlab仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 遗传算法的基本运算过程如下:  (1)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0 ...

  2. 基于PSO粒子群算法的MPPT最大功率跟踪Simulink仿真,PSO采用S函数实现

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MPPT控制器的全称是"最大功率点跟踪"(Maximum Power Point ...

  3. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<我要打篮球>视频段进行实时目标检测 目录 输出结果 设计思路 核心代码 相关文章 成功解决AttributeError ...

  4. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<俄罗斯总统普京对沙特王储摊的"友好摊手"瞬间-东道主俄罗斯5-0完胜沙特>视频段实时检测 导读   ...

  5. 基于RRT自动探索算法的多智能体SLAM仿真实验

    基于RRT自动探索算法的多智能体SLAM仿真实验 一.引述 1.自动探索内容简述 2.自动探索算法 RRT搜索算法 滤波算法 动态角色分配算法 建图即地图融合算法 二.在ROS上的实现 1.准备工作 ...

  6. 基于matlab的ldpc编码的构造,基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)...

    基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)(开题报告,论文10700字,程序代码,录像) 摘 要 随着无线通信技术的不断发展与进步,数字电视广播.移动视频点播等对数据吞吐量要 ...

  7. ip iq 谐波检测matlab仿真,基于Matlab的低压电力系统谐波检测方法仿真研究

    基于Matlab的低压电力系统谐波检测方法仿真研究 1 前言 随着科学技术的发展,随着工业生产水平和人民生活水平的提高,非线性用电设备在电网中大量投运,造成了电网的谐波分量占的比重越来越大.它不仅增加 ...

  8. 基于二维切片图序列的三维立体建模MATLAB仿真

    目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 isosurface 等值面函数 调用格式: fv = isosurface(X,Y,Z,V,i ...

  9. LMS算法的基本理论和MATLAB仿真

    LMS算法的基本理论和MATLAB仿真 1 基本理论 2 仿真 2.1 第一种信号:期望信号+噪声 2.1.1 没有蒙特卡洛 2.1.2 有蒙特卡洛 2.2 第二种信号:期望信号+幅相误差 2.3 第 ...

最新文章

  1. ERP系统管理员的工具箱 推荐几款优秀的数据比较同步工具 Data Compare and Sync tool...
  2. php blocklog_SQLSERVER中的logblock校验(译)
  3. java第七章多线程_第七章 多线程
  4. mysql root密码重置
  5. Python——蟒蛇绘制
  6. 2018.5.18信息安全铁人三项赛数据赛复现
  7. MySQL千万数据量深分页优化
  8. java定时任务什么时间e结束_Java定时任务
  9. 【AI视野·今日Sound 声学论文速览 第三期】Wed, 20 Apr 2022
  10. 从初级程序员逆袭为技术大牛,你需要懂这 10 项技术!
  11. Disney牵手联想发布AR头显,还有配备激光剑的AR游戏《星球大战》
  12. 【转】C# SqlServer操作辅助类(SqlServerHelper.cs)
  13. python基于大数据的招聘信息实时数据分析系统的设计与实现
  14. 软件测试环境有几种,什么是软件测试环境_软件测试环境有哪几种_做软件测试要用到什么工具...
  15. MST703调试群创AT070TN92
  16. APISpace 绕口令API
  17. Bin文件夹下的DLL可以做什么?
  18. linux搭建云存储服务,CentOS 6.3搭建个人私有云存储ownCloud
  19. 苹果怎么付费购买内存_苹果怎么清理隐藏内存?手机恢复如初都靠它了
  20. 我与chatGPT的谈话从三个问题开始

热门文章

  1. sdoi2017苹果树
  2. c语言洗牌发牌 无大小王 分四堆,C语言入门题
  3. 强烈推荐 10 本我私藏的数据库书单,附读书方法,java程序设计项目化教程
  4. 对话系统 | (3) 阿里云小蜜对话机器人背后的核心算法
  5. linux系统异常断电后开不了机,如何解决电脑突然断电后开不了机的问题
  6. [OOD设计] - Black Jack Game (21点)
  7. 2008欧锦赛 球员名单 A组
  8. Linux的markdown笔记软件,3款免费好用的Markdown笔记应用,可以替代印象笔记
  9. SuperMap许可使用随手记
  10. MyEclipse Building Workspace问题