效果如下:

步骤

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 制作抖音同款突出效果海报相关推荐

  1. MATLAB 制作抖音同款旋转星空海报图

    大概像是下面这样(我是真的不会设计海报,大家凑乎着看叭) 我们要制作的就是上面这样的背景图,文章最后由完整代码 步骤 1.导入图片 导入图片并获得长宽及通道数信息,图片需要和m文件在同一文件夹: I= ...

  2. MATLAB 制作抖音同款故障风海报

    效果: 步骤 1.参数设定及图片导入 可以只更改背景图片其实 bkgPic=imread('test.jpg');%图片地址 lineDensity=0.6; %故障线条出现概率 lineLenRan ...

  3. MATLAB 制作抖音同款 立体人物文字海报

    效果如下: 步骤 1.导入图片并制作文字图 原图在这里: 原理就是创建一个隐藏的fig窗口,画完图后存储为图片,再调节至与原本图片相同大小 代码: string='you are very welco ...

  4. MATLAB 制作抖音同款炫光海报

    这篇其实步骤比较多,看效果: 步骤 0.图片导入 oriPic=imread('test.jpg'); 原始图片: 抖音上是做了铜板雕刻的像素化处理,由于MATLAB本身不具备这个功能,因此我们使用添 ...

  5. MATLAB 制作抖音同款含褶皱面料图

    效果如下:!!! 步骤 1.导入图片 我们需要导入一张褶皱图片(background.jpg)以及一张前景图片(foreground.jpg),将褶皱图片灰度化,将前景图调整至与褶皱图片相同大小: b ...

  6. Python制作抖音同款含褶皱面料图

    写在前面的话. 之前在码友slandarer的CSDN主页https://blog.csdn.net/slandarer看到他用MATLAB实现了几个有趣的图片处理趣案例,一时技痒,斗胆留言我也要用p ...

  7. 利用JS制作抖音同款3D照片墙(three.js)

    利用JS制作抖音同款3D照片墙(three.js) 520快到了,跟我一起学习threeJS 用threeJS制作抖音同款3D照片墙 源码下载:3D照片墙源码下载地址

  8. 手机如何批量制作抖音视频倒放效果

    手机如何批量制作抖音视频倒放效果,首先在手机上安装并启动"王者剪辑app",进入一键剪辑中的"倒放镜头"功能, 批量导入或导入一个需要倒放的视频, 接着选择倒放 ...

  9. 细说如何制作抖音同款性格测试,运气测试网站(带代码讲解)

    Hi,大家好!我是你们活泼又可爱的小虎! 最近抖音很火的什么性格测试,运气值测试之类的,小虎研究了一下,发现了其中的奥秘!!! 开始说了,小板凳准备好了吗? 本来想给大家照几张样图,但是刷了半小时,就 ...

最新文章

  1. 查看无线网卡工作模式
  2. LSD-SLAM 编译过程(Ubuntu 14.04 + ROS Indigo
  3. vbs 等于_西门子触摸屏VBS编程quot;陷阱quot;之VBS不支持多线程
  4. 正式出「圈」丨网易云信圈组的近谋与远虑
  5. 小明分享|ESP8266设置STA模式ping包测试
  6. python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...
  7. linux下vim编辑器插件,linux vim编辑器插件的安装和设置方法
  8. table切换数据 vue_Vue 知识整合贴 ( 超干货,适合收藏)
  9. Quagga的安装碰到的问题
  10. [ECMAScript] 说说你对set数据结构的理解
  11. java rsa 验_Java使用RSA加密解密签名及校验
  12. silverlight动态添加xaml物件
  13. Android Studio向项目中导入module
  14. ie11 java提示升级,解决IE11安装升级失败和在安装前需要更新的问题
  15. 计算机绘图课程选用课本,机械制图课程学习指南.doc
  16. 2019数据安装勾选_建筑CAD首选软件~【T20 天正建筑 V5.0 安装教程】
  17. ADSL共享方法总结(转)
  18. Keepalived源码、yum安装-高可用(主备、主主)场景
  19. 如何解决Error running ‘Tomcat 8.5.45‘: port out of range:-1
  20. fedora 35 通过docker 使用微信

热门文章

  1. Python老男孩第一天
  2. K8S篇-服务器固定ip
  3. Baumer工业相机中曝光与增益两种功能的优点和作用以及使用方法
  4. java获取的NTLM电脑用户名并解码(python解码)
  5. PEPTIDE LIBRARY 多肽文库构建和筛选
  6. GDPR数据保护合规问题分析
  7. 用python写论文不会用软件_有没有高手能用python实现这篇论文?
  8. Nginx介绍及基本使用
  9. 设计人士参加的论坛,自然要有格调的开场形式_数字体验_新浪博客
  10. javascript 实现的表格斜线