千家信息网

如何使用Matlab绘制超绚丽的烟花效果

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关如何使用Matlab绘制超绚丽的烟花效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.使用效果2.随机点生成我们要构造一个黑色背景,
千家信息网最后更新 2026年11月02日如何使用Matlab绘制超绚丽的烟花效果

这篇文章将为大家详细讲解有关如何使用Matlab绘制超绚丽的烟花效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.使用效果

2.随机点生成

我们要构造一个黑色背景,对其添加高斯噪声,然后依据阈值删掉部分噪声,生成一张随机点图片:

% 构造黑色背景并生成白色杂点blackPic=uint8(zeros(800,800));distPic=imnoise(blackPic,'gaussian',0, 0.11);distPic(distPic<254)=0;

3.图像膨胀

我们发现之前构造的点太小了,我们要对其进行形态学膨胀处理:

% 杂点膨胀se=strel('square',3);distPic=imdilate(distPic,se);

4.特效「风」模拟

就是建立一个循环,不断地将点往右侧复制,并将颜色变暗,代码中第二个参数为拖拽长度,第三个参数为暗化速度:

% 构造风特效windPic=wind(distPic,180,0.99);% 风特效构造函数    function resultPic=wind(oriPic,len,ratio)        oriPic=double(oriPic);        for i=1:len            tempPic=[zeros(size(oriPic,1),1),oriPic(:,1:(end-1))].*ratio;            oriPic(oriPic

5.级坐标变换

% 极坐标变换polarPic=polarTransf(windPic(:,end:-1:1)');% 级坐标变换构造函数     function resultPic=polarTransf(oriPic)        oriPic=double(oriPic);        [m,n]=size(oriPic);        [t,r]=meshgrid(linspace(-pi,pi,n),1:m);                M=2*m;        N=2*n;        [NN,MM]=meshgrid((1:N)-n-0.5,(1:M)-m-0.5);        T=atan2(NN,MM);        R=sqrt(MM.^2+NN.^2);                resultPic=interp2(t,r,oriPic,T,R,'linear',0);        resultPic=uint8(resultPic);    end

6.图像模糊及再映射

我们发现烟花图片中心区域方格化严重:

我们很容易想到图像模糊,但是模糊后亮度又不够,因此我们再做一次映射将图片整体亮度提高:

模糊及映射:

% 模糊以减少像素化polarPic=imgaussfilt(polarPic,1.5);polarPic=uint8(double(polarPic)./double(max(max(polarPic))).*260);

7.图像上色

生成一个圆形的渐变图片,并与白色烟花图片进行一次正交叠底:

% 构造圆形渐变图matSize=[1600,1600];point=[800,800];colorList=[195    53    93    211   102   141    231   179   192    229   182   172    227   178   137    238   191   147    236   195   113];% 正片叠底colorMat=cColorMat(matSize,point,colorList);colorMatR=colorMat(:,:,1);colorMatG=colorMat(:,:,2);colorMatB=colorMat(:,:,3);fwPicR=double(colorMatR).*double(polarPic)./255;fwPicG=double(colorMatG).*double(polarPic)./255;fwPicB=double(colorMatB).*double(polarPic)./255;fwPic(:,:,1)=fwPicR;fwPic(:,:,2)=fwPicG;fwPic(:,:,3)=fwPicB;fwPic=uint8(fwPic);imshow(fwPic)%==========================================================================% 图像颜色映射函数    function colorMat=cColorMat(matSize,point,colorList)    [xMesh,yMesh]=meshgrid(1:matSize(2),1:matSize(1));    zMesh=sqrt((xMesh-point(2)).^2+(yMesh-point(1)).^2);    zMesh=(zMesh-min(min(zMesh)))./(max(max(zMesh))-min(min(zMesh)));    colorFunc=colorFuncFactory(colorList);    colorMesh=colorFunc(zMesh);    colorMat(:,:,1)=colorMesh(end:-1:1,1:matSize(1));    colorMat(:,:,2)=colorMesh(end:-1:1,matSize(1)+1:2*matSize(1));    colorMat(:,:,3)=colorMesh(end:-1:1,2*matSize(1)+1:3*matSize(1));    colorMat=uint8(colorMat);    end    function colorFunc=colorFuncFactory(colorList)        x=(0:size(colorList,1)-1)./(size(colorList,1)-1);        y1=colorList(:,1);y2=colorList(:,2);y3=colorList(:,3);        colorFunc=@(X)[interp1(x,y1,X,'linear')',...                       interp1(x,y2,X,'linear')',...                       interp1(x,y3,X,'linear')'];    end

其他几个颜色:

colorList2=[25    59   157    24    71   219    38   124   237    93   215   255   168   244   255   243   254   250   246   252   240];colorList3=[239   250   210   229   164   122   232   150   138   255   164   204   192    58   111   158    10    26   224   168   121];

8.完整代码

function drawFireWorks% 构造黑色背景并生成白色杂点blackPic=uint8(zeros(800,800));distPic=imnoise(blackPic,'gaussian',0, 0.11);distPic(distPic<254)=0;% 杂点膨胀se=strel('square',3);distPic=imdilate(distPic,se);% 构造风特效windPic=wind(distPic,180,0.99);% 极坐标变换polarPic=polarTransf(windPic(:,end:-1:1)');% 模糊以减少像素化polarPic=imgaussfilt(polarPic,1.5);polarPic=uint8(double(polarPic)./double(max(max(polarPic))).*260);%-----------------------------------------------------------------% 构造圆形渐变图matSize=[1600,1600];point=[800,800];colorList=[195    53    93    211   102   141    231   179   192    229   182   172    227   178   137    238   191   147    236   195   113];% 正片叠底colorMat=cColorMat(matSize,point,colorList);colorMatR=colorMat(:,:,1);colorMatG=colorMat(:,:,2);colorMatB=colorMat(:,:,3);fwPicR=double(colorMatR).*double(polarPic)./255;fwPicG=double(colorMatG).*double(polarPic)./255;fwPicB=double(colorMatB).*double(polarPic)./255;fwPic(:,:,1)=fwPicR;fwPic(:,:,2)=fwPicG;fwPic(:,:,3)=fwPicB;fwPic=uint8(fwPic);imshow(fwPic)%==========================================================================% 风特效构造函数    function resultPic=wind(oriPic,len,ratio)        oriPic=double(oriPic);        for i=1:len            tempPic=[zeros(size(oriPic,1),1),oriPic(:,1:(end-1))].*ratio;            oriPic(oriPic

关于"如何使用Matlab绘制超绚丽的烟花效果"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

函数 图像 图片 特效 变换 生成 烟花 颜色 效果 圆形 极坐标 白色 篇文章 背景 黑色 绚丽 亮度 代码 像素 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网科技工作委员会主任 互联网属科技 金融科技 互联网金融 美国互联网科技 互联网与未来科技 广州互联网络科技有限公司 互联网 视角下的科技创新 互联网前沿科技 华中科技有哪些互联网大佬 深圳市运趣互联网科技有限公司 赶超互联网科技 微信多开 中国航天科技大学国际工业互联网 哈尔滨屹滨互联网科技有限公司 佛山市翊博互联网络科技有限公司 锡山区互联网智能科技产品供应 南通创西澳互联网科技有限公司 四川互联网展示科技馆设计 陕西彩京云互联网科技有限公司 互联网的黑科技实验室 什么是科技互联网 互联网科技官网 深圳科技互联网 互联网养老 桔豆科技 联恩商钥互联网科技有限公司 海南科技产业互联网平台 中国科技互联网公司收入 搜狐科技互联网 国大互联网教育科技有限公司工作 艺电能源互联网科技有限公司招聘
0