MATLAB 制作抖音同款突出效果海报
效果如下:
步骤
1.导入图片,获取每个区域的平均颜色,构造随机数矩阵
导入图片后我们首先将图片划分成很多个15x15(可自行调整大小)的小格子,并求取每个格子的颜色平均值,作为柱状图每个小柱子的颜色,构造随机数矩阵作为每个小柱子的高度
oriPic=imread('test.jpg');
pixLen=15;
[H,W,~]=size(oriPic);XList=1:pixLen:W-pixLen;
YList=1:pixLen:H-pixLen;
samplePic=zeros(length(YList),length(XList),3);
for x=XListfor y=YListsampleSquareR=double(oriPic(y:y-1+pixLen,x:x-1+pixLen,1));sampleSquareG=double(oriPic(y:y-1+pixLen,x:x-1+pixLen,2));sampleSquareB=double(oriPic(y:y-1+pixLen,x:x-1+pixLen,3));samplePic(y==YList,x==XList,1)=mean(sampleSquareR(:));samplePic(y==YList,x==XList,2)=mean(sampleSquareG(:));samplePic(y==YList,x==XList,3)=mean(sampleSquareB(:));end
end
randiMat=randi([0,250],[length(YList),length(XList)]);
原始图片:
如果用方块颜色矩阵和方块高度矩阵直接去画图的话,会因为每个颜色只有一个点,而出现如下的效果,
为了画出一个一个小平台的效果,我们要将每个点扩充成15X15个颜色相同,高度相同的点集
2.点集扩充,曲面绘制
expCMat=zeros(length(YList)*pixLen,length(XList)*pixLen,3);
expZMat=zeros(length(YList)*pixLen,length(XList)*pixLen);
for x=XListfor y=YListexpCMat(y:y-1+pixLen,x:x-1+pixLen,1)=samplePic(y==YList,x==XList,1);expCMat(y:y-1+pixLen,x:x-1+pixLen,2)=samplePic(y==YList,x==XList,2);expCMat(y:y-1+pixLen,x:x-1+pixLen,3)=samplePic(y==YList,x==XList,3);expZMat(y:y-1+pixLen,x:x-1+pixLen)=randiMat(y==YList,x==XList);end
end
[XMesh,YMesh]=meshgrid(1:length(XList)*pixLen,1:length(YList)*pixLen);
surf(XMesh,expZMat,YMesh(end:-1:1,:),'CData',expCMat./255,...'FaceColor','interp','edgeColor','none',...'SpecularStrength',0,'AmbientStrength',1,'DiffuseStrength',1)
效果:
我们会发现此时每个小方块界限并不明显,而且当正面看时,曲面几乎看不出任何突出效果,这两点可以通过设置前缩透视法,和增添光照来解决
3.坐标区属性设置及前缩透视法
以下大部分代码为了调整视角和颜色,ax.Projection=‘perspective’; 用来设置前缩透视
ax=gca;
hold(ax,'on')
ax.Projection='perspective';
ax.Color=[0.95 0.95 0.95];
ax.DataAspectRatioMode='manual';
ax.DataAspectRatio=[1,0.1,1];
ax.XLim=[0,W];
ax.ZLim=[0,H];
ax.View=[-0.4830 -0.0717];
ax.XTick=[];
ax.YTick=[];
ax.ZTick=[];
ax.XColor='none';
ax.YColor='none';
ax.ZColor='none';
效果:
4.光照设置
可以根据自己的喜好微调哦
h = light;
h.Style='local';
h.Color=[1,1,1].*0.5;
h.Position=[W/2,-1000,0];
效果:
5.完整代码
function pieceWisePicoriPic=imread('test4.jpg');
pixLen=15;
[H,W,~]=size(oriPic);XList=1:pixLen:W-pixLen;
YList=1:pixLen:H-pixLen;
samplePic=zeros(length(YList),length(XList),3);
for x=XListfor y=YListsampleSquareR=double(oriPic(y:y-1+pixLen,x:x-1+pixLen,1));sampleSquareG=double(oriPic(y:y-1+pixLen,x:x-1+pixLen,2));sampleSquareB=double(oriPic(y:y-1+pixLen,x:x-1+pixLen,3));samplePic(y==YList,x==XList,1)=mean(sampleSquareR(:));samplePic(y==YList,x==XList,2)=mean(sampleSquareG(:));samplePic(y==YList,x==XList,3)=mean(sampleSquareB(:));end
end
randiMat=randi([0,250],[length(YList),length(XList)]);expCMat=zeros(length(YList)*pixLen,length(XList)*pixLen,3);
expZMat=zeros(length(YList)*pixLen,length(XList)*pixLen);
for x=XListfor y=YListexpCMat(y:y-1+pixLen,x:x-1+pixLen,1)=samplePic(y==YList,x==XList,1);expCMat(y:y-1+pixLen,x:x-1+pixLen,2)=samplePic(y==YList,x==XList,2);expCMat(y:y-1+pixLen,x:x-1+pixLen,3)=samplePic(y==YList,x==XList,3);expZMat(y:y-1+pixLen,x:x-1+pixLen)=randiMat(y==YList,x==XList);end
end
[XMesh,YMesh]=meshgrid(1:length(XList)*pixLen,1:length(YList)*pixLen);
surf(XMesh,expZMat,YMesh(end:-1:1,:),'CData',expCMat./255,...'FaceColor','interp','edgeColor','none',...'SpecularStrength',0,'AmbientStrength',1,'DiffuseStrength',1)ax=gca;
hold(ax,'on')
ax.Projection='perspective';
ax.Color=[0.95 0.95 0.95];
ax.DataAspectRatioMode='manual';
ax.DataAspectRatio=[1,0.1,1];
ax.XLim=[0,W];
ax.ZLim=[0,H];
ax.View=[-0.4830 -0.0717];
ax.XTick=[];
ax.YTick=[];
ax.ZTick=[];
ax.XColor='none';
ax.YColor='none';
ax.ZColor='none';h = light;
h.Style='local';
h.Color=[1,1,1].*0.5;
h.Position=[W/2,-1000,0];end
尝试的其他几个图
当方块取的较小时(5x5)
另:
MATLAB 制作抖音同款突出效果海报相关推荐
- MATLAB 制作抖音同款旋转星空海报图
大概像是下面这样(我是真的不会设计海报,大家凑乎着看叭) 我们要制作的就是上面这样的背景图,文章最后由完整代码 步骤 1.导入图片 导入图片并获得长宽及通道数信息,图片需要和m文件在同一文件夹: I= ...
- MATLAB 制作抖音同款故障风海报
效果: 步骤 1.参数设定及图片导入 可以只更改背景图片其实 bkgPic=imread('test.jpg');%图片地址 lineDensity=0.6; %故障线条出现概率 lineLenRan ...
- MATLAB 制作抖音同款 立体人物文字海报
效果如下: 步骤 1.导入图片并制作文字图 原图在这里: 原理就是创建一个隐藏的fig窗口,画完图后存储为图片,再调节至与原本图片相同大小 代码: string='you are very welco ...
- MATLAB 制作抖音同款炫光海报
这篇其实步骤比较多,看效果: 步骤 0.图片导入 oriPic=imread('test.jpg'); 原始图片: 抖音上是做了铜板雕刻的像素化处理,由于MATLAB本身不具备这个功能,因此我们使用添 ...
- MATLAB 制作抖音同款含褶皱面料图
效果如下:!!! 步骤 1.导入图片 我们需要导入一张褶皱图片(background.jpg)以及一张前景图片(foreground.jpg),将褶皱图片灰度化,将前景图调整至与褶皱图片相同大小: b ...
- Python制作抖音同款含褶皱面料图
写在前面的话. 之前在码友slandarer的CSDN主页https://blog.csdn.net/slandarer看到他用MATLAB实现了几个有趣的图片处理趣案例,一时技痒,斗胆留言我也要用p ...
- 利用JS制作抖音同款3D照片墙(three.js)
利用JS制作抖音同款3D照片墙(three.js) 520快到了,跟我一起学习threeJS 用threeJS制作抖音同款3D照片墙 源码下载:3D照片墙源码下载地址
- 手机如何批量制作抖音视频倒放效果
手机如何批量制作抖音视频倒放效果,首先在手机上安装并启动"王者剪辑app",进入一键剪辑中的"倒放镜头"功能, 批量导入或导入一个需要倒放的视频, 接着选择倒放 ...
- 细说如何制作抖音同款性格测试,运气测试网站(带代码讲解)
Hi,大家好!我是你们活泼又可爱的小虎! 最近抖音很火的什么性格测试,运气值测试之类的,小虎研究了一下,发现了其中的奥秘!!! 开始说了,小板凳准备好了吗? 本来想给大家照几张样图,但是刷了半小时,就 ...
最新文章
- 查看无线网卡工作模式
- LSD-SLAM 编译过程(Ubuntu 14.04 + ROS Indigo
- vbs 等于_西门子触摸屏VBS编程quot;陷阱quot;之VBS不支持多线程
- 正式出「圈」丨网易云信圈组的近谋与远虑
- 小明分享|ESP8266设置STA模式ping包测试
- python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...
- linux下vim编辑器插件,linux vim编辑器插件的安装和设置方法
- table切换数据 vue_Vue 知识整合贴 ( 超干货,适合收藏)
- Quagga的安装碰到的问题
- [ECMAScript] 说说你对set数据结构的理解
- java rsa 验_Java使用RSA加密解密签名及校验
- silverlight动态添加xaml物件
- Android Studio向项目中导入module
- ie11 java提示升级,解决IE11安装升级失败和在安装前需要更新的问题
- 计算机绘图课程选用课本,机械制图课程学习指南.doc
- 2019数据安装勾选_建筑CAD首选软件~【T20 天正建筑 V5.0 安装教程】
- ADSL共享方法总结(转)
- Keepalived源码、yum安装-高可用(主备、主主)场景
- 如何解决Error running ‘Tomcat 8.5.45‘: port out of range:-1
- fedora 35 通过docker 使用微信