更新:

添加代码链接:nkyang/MagicCube

有时间的话,会陆续把之前文章的代码都整理好了传到github上去,这样个人文章里面就不会出现代码,文章可读性更好。


我又回来更新了,在上一次的文章中,我写了一个可以用来玩魔方的程序,当时在文章的结尾处,我展示了一个用七阶魔方拼出心形图案的例子。

易夕:MATLAB画图技巧:让魔方转起来!​zhuanlan.zhihu.com

进一步地,能否拼出更复杂的图案?给定一张图片作为参考,能否使用高阶魔方拼出清晰的画面?这就是本文要解决的问题。

1.高效的高阶魔方生成函数

一个很重要的问题就是,上次的魔方构造函数的复杂度很高。一个N阶魔方,是用N^3个立方体构成,每个立方体包括7个hgtransfrom对象,6个patch对象。当N>30时,程序会慢的令人发指,光生成魔方可能就需要一个小时以上。所以我改进了程序,现在的N阶魔方,由6*N^2个patch对象构成,每个patch对象对应1个hgtransform对象。

%% 创建一个n×n的魔方

2. XYZ轴旋转函数

以X轴为例,ids层逆时针旋转90度的函数为(ids可以是数组,这样调用起来比较方便)

%% X轴方向进行逆时针旋转

ids层顺时针旋转90度的函数如下:

%% X轴方向进行顺时针旋转

y轴,z轴的函数就不贴了,不然文章就是大段的代码了...

3.根据输入的图像,用高阶魔方拼出来

首先,对于N阶魔方,只有中间的(N-2)*(N-2)的范围可以用来表示图像。我们需要将输入的图像,灰度化,二值化成为一个(N-2)*(N-2)的矩阵。

以一个70阶矩阵为例,其中要表示的图片来自于我之前的一篇文章。(裁掉了周围的空白)

易夕:MATLAB:如何画南开大学校徽?​zhuanlan.zhihu.com

图像预处理(读取图像,灰度化,二值化,resize图片大小)

N 

70阶魔方的生成。大约需要10分钟来生成如此高阶的魔方。(目前实际存在的最高阶的魔方是一个模仿爱好者用3D打印DIY的33阶魔方,花了200多个小时组装,重点是,我觉得很丑...链接在这里)

figure

看一看效果图,令人震撼的70阶魔方!

按照给出的图片信息,实现魔方的旋转。

for 

魔方整个旋转的过程,我写入到了一个动图中,如下图所示。Gif大小超过10M,无法上传,这是压缩后的结果。(整个程序,包含写入动图在内,跑了大概10个小时。)

这张图片,花了10个多小时

从不同的角度来看最后的结果。有重影,具体不是很清楚怎么造成的。

哪位大佬知道重影是怎么回事

最后,附送一张32阶魔方拼出的渣打银行logo图。

搞定了!

专栏目录

易夕:MATLAB Tricks 专栏目录​zhuanlan.zhihu.com

matlab将图片旋转的代码_我的MATLAB魔方新玩法:拼出任意图案!相关推荐

  1. matlab将图片旋转的代码_从零开始的matlab学习笔记——(27)图像旋转与动态图...

    matlab应用--求极限,求导,求积分,解方程,函数绘图,三维图像,拟合函数....更多内容尽在个人专栏:matlab学习 昨天思考了一下,因为笔者的GUI只是刚刚入门,如果直接说的话也说不了多少东 ...

  2. matlab将图片旋转的代码_空间曲线绕空间直线旋转生成的旋转曲面方程

    校内建模的一道题,虽然我认为这么trivial的东西前人早就造好轮子了,但是找遍所有能找到的网络资料.文献都没找到答案,只好自己造了个轮子. 设空间曲线 : 绕 : 旋转得到的曲面方程为 ,则 的方程 ...

  3. matlab将图片旋转的代码_基于Matlab的PMSM模型初探

    本文首发自微信公众号"汽车技术馆"! 随着新能源车辆的普及,电机的控制技术逐渐成为了热门的话题,尤其是目前在电机上普遍使用的永磁同步PMSM技术,其实不止是新能源的电机驱动使用了这 ...

  4. matlab将图片旋转的代码_【MATLAB】钟表

    文章来源于我的B站专栏: MATLAB实现钟表​www.bilibili.com GIF:最终效果 整个实现的是在figure内直接通过line.text.circle绘制表盘.刻度.数字.指针(时针 ...

  5. matlab将图片旋转的代码_论文写作经验分享word+mathtype+matlab

    该文章整理了作者近期撰写论文的一些经验及小技巧,并分享了几个Matlab绘图源代码,以辅助提升中英文论文撰写效率. 主要内容包括三部分,一是Word多级列表生成及使用,二是公式编辑器MathType使 ...

  6. 米兔机器人重置_米兔积木机器人新玩法,双主控互联脱离手机遥控

    米兔积木机器人推出履带机甲的时候,同时推出了一项重磅功能--双机互联,这使得每个米兔积木机器人之间可以相互通信,实现联动,大大增加了可玩性.因此我突发奇想,能否利用双机互联,实现摆脱手机APP遥控的限 ...

  7. matlab批量图片旋转处理

    matlab批量图片旋转处理 我们用于神经网络训练的图片有时候需要自己标记,但比较麻烦,通过一些旋转处理往往可以扩大训练集数目,但是一般我们用一些图像软件处理会使彩色索引图编程RGB图或者灰度图,不能 ...

  8. 安卓关于健身的代码_亲子运动健身新玩法,娱乐享瘦两不误,让孩子不再沉迷电子产品...

    每次和姐妹逛街,看到那些漂亮小姐姐们在电玩城跳舞机上跳舞,心里都痒痒的想要自己上去试试,可就是因为不熟练,大庭广众之下害羞怕丢脸,最后放弃了.可每次路过还是会羡慕那些敢跳的姐姐们! 平常工作忙,压力大 ...

  9. html 横屏内容显示不全_“屏”什么喜欢你,车载显示器有哪些新玩法...

    自2014年特斯拉使用大屏之后便开启了汽车大屏时代,各大汽车公司开始无休止的开展着自己的"大屏"计划,为汽车内饰创造更多的科技感和现代感. 似乎现代智能车载显示,大屏成了标配.但随 ...

最新文章

  1. linux sed高级用法,sed 高级用法
  2. fusionchart图表遮挡Ext下拉控件或日期控件解决办法(IE下有问题firefox与chrome正常)...
  3. CDH中文文档下载,Cloudera中文手册,CM中文文档
  4. osm数据下载 python_GIS Experience (十):OSM数据获取
  5. Express框架简介、express使用模块引擎、模式数据
  6. Android中BitmapFactory.Options详解
  7. iOS WKWebView和JS交互的两种方式
  8. JRebel出现ERROR Failed to obtain seat. Unable to connect to license server
  9. tmux使用指南:1 :简介与安装
  10. java欢迎来到宠物店,用JAVA语言实现简易的宠物店程序暨寒假集训心得
  11. 寒霜3引擎再造经典极品飞车18
  12. QT MPlayer播放器
  13. Nokia Symbian PKG sis文件就会及时更新了
  14. oracle先决条件内存,oracle11g安装客户端检查先决条件失败
  15. xshell下载步骤
  16. Android 开发-创建app
  17. NPDP产品经理证书(2019年04月),NPDP是IBM和华为的IPD的祖师爷。IPD学不到,NPDP还是可以学到的。...
  18. 这样学Shader可以少走几年弯路,看完我信了……
  19. Java学习笔记(9)-数组
  20. 用QQ群推广网站的方法

热门文章

  1. Python练习题答案: 杰克的家【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
  2. Herman miller Aeron 一代 气压杆(气压棒,气柱)更换笔记(电脑椅中的劳斯莱斯)
  3. Linux与Windows的区别与比较,及Linux基本命令
  4. nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)
  5. ride不能启动解决办法
  6. Excel如何制作下拉列表
  7. 蓝牙耳机品牌哪个音质好佩戴舒适性?2023年蓝牙耳机盘点
  8. mb是做1还是0_德国爱他美奶粉0-6月选择,给宝宝喝pre段还是1段奶粉?
  9. 21 C++ 长度单位转换
  10. Android Library的创建及使用详解