解决方案

用 Wolfram 语言透视埃舍尔的立方体空间

摘要


荷兰版画埃舍尔 (M. C. Escher,https://mcescher.com/) 的每一件作品对于他的追随者而言都是数学和视觉上的谜题。其实埃舍尔的许多作品和创作方法已经在数学概念上已经得到了很好的诠释,例如:二维的镶嵌密铺、正多面体、等角球面螺旋线、双曲空间、共形映射等等。

请比较如下两张图像,你能分辨得出哪一幅是埃舍尔的原作吗?

来源 : M. C. Escher, Cubic space division, Lithograph, 1952.



01:背景


1.0 初始化


函数:LineIntersection



1.1 线性透视(艺术绘画领域)

透视学起源于西方绘画领域,人们思考并试图解决这样一个问题:"如何才能正确地将空间中的三维物体更真实地表现在二维画布上,并符合人眼的视觉体验?"

最早古希腊或古罗马人可能已经掌握了单点透视,但这项技艺后来遗失了。幸运地是在经过达芬奇和丢勒的高度重视和大力助推下,透视学重新成为了文艺复兴时期西方绘画的核心理论。


1.1.1 单点透视

单点透视仅有一个消失点,通常该消失点同视点中心重合并位于视平线上。在单点透视中对于一个长方体的三维物体,该长方体的正面将平行与像面或画布面。消失点可以通过画面中长方体或长方形边线的延长线汇聚而找到。在摄影或绘画中单点透视通常用来表现无尽延伸的马路或铁轨,也可以很好表现室内场景的景深,例如达芬奇的著名作品《最后的晚餐》就是一个很好的例子。消失点和视点中心正好位于中心人物耶稣脸部的左侧。

来源 :Leonardo da Vinci, The Last Supper, 1494-1498.


1.1.2 两点透视

两点透视有两个消失点,通常这两个消失点的连线就是视平线,视点中心位于位于两个消失点的中间。在两点透视中对于一个长方体的三维物体,该长方体的垂向边将垂直与视平线,而长方体的正面将沿着Z向偏转一定角度,正面和侧面将同时展示在画面上。同样,消失点也可以通过画面中长方体或长方形边线的延长线汇聚而找到。两点透视可以很好的表现交叉的十字路口或建筑立体感。历史上第一幅精确采用两点透视绘制的建筑是十五世纪的佛罗伦萨圣若翰洗者洗礼堂,它正好是一个八角形的建筑。画师 Filippo Brunelleschi 还设计了一种双面反射镜装置来验证自己的作品同实际建筑一模一样。

来源 :Filippo Brunelleschi, Florentine Baptistery (octagonal building), 15th Century


1.1.3 三点透视

三点透视有三个消失点,三个消失点的连线称为消失线。三点透视是一种通用的线性透视模型,它不再需要被观测物体同观测者之间有任何的特定约束(平行或垂直),换言之三维长方体可以任意姿态摆放。在绘画和摄影中,三点透视可以更好的表现高大建筑的雄伟,例如采用飞鹰视角俯瞰物体,或采用蚂蚁视角仰视物体。如果是俯视角度第三个消失点被称为地底点 (nadirs),如果是仰视角度它被称为天顶点 (zeniths)。

在埃舍尔的作品中会频繁采用三点透视,例如他的一幅早期作品《巴比伦塔》。建筑两侧方向的棱边会交汇形成类似于两点透视的视平线方向上的两个消失点。同时区别于两点透视,垂向边界线将会交汇形成第三个消失点。这种垂向的边界向下的交汇于地底点,产生了强烈的垂向透视感,以此突显了建筑的无比高大和雄伟。

来源:M.C. Escher, Tower of Babel, 1928.


1.2 线性透视(计算机图形学)

进入信息化时代和计算机的蓬勃发展,传统的透视学理论和方法被应用与计算机图形学。在计算机图形学的透视普遍采用针孔模型,它的一般处理流程和方法如下图所示。


1. 确定世界坐标系:包括被观测物体的坐标和相机坐标;

2. 转换到相机坐标系:根据物体和相机先对位置和姿态关系,固定相机坐标系并将物体坐标系转换到相机坐标系;

3. 边界框坐标系:确定观测范围,它通常是一个正方体,并根据观测范围,提取范围内的观测物体;

4. 标准化坐标系:将正方体观测边界范围内的物体,根据透过关系投影到二维单位正方形内;

5. 图像坐标系:根据图像坐标系,将单位正方形的图形进行线性变换(压缩、拉伸或翻转),以符合图像边界尺寸;

6. 图像坐标系:将二维图形进行栅格化,处理为图像文件或投影屏幕;

需要指出的是计算机图形学中的透视投影其实和传统透视绘画中所解决的是同一类问题,将三维物体如何正确的投影到二维画布或屏幕上。两者的区别在于计算机通过数学、几何、算法来表达描述透视投影关系,过程是自动化,结果更精确。


1.3 线性透视(模型与实验)

如下我们采用 Mathematica 构建一个演示项目,以便更好的理解线性透视关系。

首先,我们构建一个 RGB 的正方体,它的 X 方向的边都用红色,Y 方向的边都用绿色,Z 方向的边都用蓝色。



由于它们三个方向边的颜色差异,我们可以很方便和准确的计算,该正方体的消失点和和消失线三角形的垂心。



最后,把它们集成在一起,其中左上角视图是基于世界坐标系的视图,黑色为原观测正方体,红色箭头代表视线中心方向。中上视图为相机坐标系下,被观测的 RGB 正方体。左下角视图为图像远景视图,它包含了消失点,视线中心点和图像边界。右下表格反应了当前观测选项,右侧滑条可操控观测选项。



通过实验验证,我们不难发现,三点透视是一种通用的模型,而单点透视和两点透视是一种观测物体和相机在位置特定或约束条件下的特例。

1. 单点透视要求被观测角度要求正方形的正面刚好同像面平行,这时候它的另外的两个消失点其实在无穷远处。

2. 而两点透视要求物体的垂向正好同视平线垂直,这时候它另一个消失点的位置也在无穷远。

3. 三点透视不含有任何的几何约束,正方体可以任意姿态摆放,同时,三个透视点的位置都在有限的范围内。

将单点透视、两点透视和三点透视综合在一起就是线性透视的全部观测范围和角度了。


1.4 问题辨析

进一步辨析问题,可以把透视相关的问题分为两类。

正向问题:采用人眼、绘画、相机以及计算机图形学所面临和解决的是正向问题。在这类问题中,已知或输入条件是观测点的位置姿态、3D 的物体形状和尺寸和、3D 的物体位置姿态,而求解和期待输出的一幅正确符合这些条件的 2D 图像。正向问题从三维到二维,是输入信息完备的,解是唯一的。

逆向问题:而机器视觉或逆向重构所面临和解决的是逆向问题。在这类问题中,已知或输入条件是一幅2D 物体的图像,通过二维图像可以估算或假设观测点或相机位置姿态,更进一步估算或假设3D 物体的部分信息(形状尺寸),最后输出它的三维物体的全部关联信息(位置姿态)。逆向向问题从二维到三维,是输入信息不完备的,解也是不唯一的。



02:分析埃舍尔的作品


本节我们将通过线性透视原理,详细分析埃舍尔的作品,洞察埃舍尔是如何创作这幅作品的。

来源: M . C . Escher, Cubic space division, Lithograph, 1952.


2.1 找到视觉选项(二维处理)

根据图像文件,通过图像处理算法,采用 ImageLines 寻找图像中的边界线。同一指向边界线的交点就是消失点。


根据消失点,进一步计算消失线、视平线、视线中心点。





估算消失点的位置,任意两条边线的交点都有可能是消失点,此处取了它们的统计中值作为画面的理想消失点。

通过此处的计算可见艾舍尔的版画其实精度很高,而在 2000*2000 的范围内,消失点的误差在沿着中心线方向100 的范围内。这意味着埃舍尔绘制线条的最大角度误差为 0.00027 Rad 或 0.015 degree。在他那个年代没有计算机和绘图仪,作图仅能靠笔和尺,能达到这样的精度其实是非常困难的。


艾舍尔工作室内的物件照片





计算消失线、视平线、视线中心点。此处,我们认为消失点三角形的垂心 (orthocenter)就是视线中心点 (principal point) 。


2.2 找到视线方向(三维处理)

根据视线中心点进一步求解视线方向向量。假设像面(image plane) 在 Z =-500 的位置,像面就是物体的投影面或画布面。


观测点 ( view point) 位于视线方向上,从观测点到视线中心点 (principal point) 的连线称为 视线方向 (direction of view),视线方向垂直于像面(image plane)。由于我们处理的问题是从二维到三维,理论上 观测点可以位于视线中心线上任意一点,因为我们不知道该三维物体的真实尺寸,仅能通过线性透视测量和确定二维图像和三维物体的对应几何关系。为方便计算,我们将会假设观测点位于视线中心线上某一点。



需要特别指出的是,这幅画中它的视线中心点位于取景框或图像边界的外面,画框外左下角(紫色)是视线中心点。这种处理方法无论对于传统画院派或计算机图像学而言,都是极为不常见的。传统绘画、相机摄影或计算机图像学,通常会把视线中心点包含在画框或图像边界内。


2.3 采样正方体顶点(二维处理)

埃舍尔在创作新的版画作品时,极有可能会先用铅笔绘制一幅草稿。我们没有找到和原作完全一致的草稿,但文献[1]提供了另一幅极为类似的草稿。在该草稿中他标记了主要空间点的三维坐标系,中心用数字编号,并采用数轴的长短表示空间中的比例关系。有趣的是这幅草稿的透视关系也是视线中心点也位于取景框的外,且位于画框的右侧。

来源:M.C. Escher, Preliminary Study for Depth, pencil, 1955.


受到埃舍尔草稿的启发,同时如果你仔细观察这幅画,可以发现埃舍尔绘制一个完整的大正方体。我们可以通过在图像上采样获得该大正方体8个顶点坐标。通过 Mathematica 坐标采样工具可以一次性简单操作完成,正方体顶点的坐标值如下。


2.4 优化正方体位置和姿态(三维处理)

接下来我们假设相机位于垂向 Z= 260 的位置,即观测点位于视线中心线上某一特定点,该点位置 Z=260。且已知正方体 8 个顶点的二维坐标,并需要求解 7 个未知变量,分别是:正方体尺寸(边长);正方体位置和姿态 6DOF,即姿态 {α, β, γ} 和正方体的中心位置 {x0,y0,z0} 。


优化算法的思想:已知了相机的位置和姿态,像面于画布面完全重合,视线中心垂直于像面。根据视线中心点确定相机X和Y坐标,相机Z向位置假设为 260,观测点位于视线中心上。随后假设该实体为单位立方体,确定立方体的顶点坐标作为待求解变量,然后将正方体 8 个顶点根据透视投影投到一个像面上 (Z = -260)得到 8个投影点,然后把这8个点与图像上的采样 8个点一一对应,并最小化它们之间一一对应距离的总和,这样就得到三维正方体模型的位置和姿态了。


为方便后期建模,此处进一步假设正方体的边长为 50,再次进行最小化顶点距离之和,得到了另一种优化解。


我们将优化解的结果进行可视化,左侧为世界坐标系:黑色箭头代表视线中心方向,细红线为三维立方体,粗红线为它在二维像面上的投影,绿色为投影光线。右侧视图为相机坐标系下投影到二维画布上的正方体,它们的位置可以同橘黄色采样点位置进行比较。



03:重构埃舍尔的作品

3.1 采用埃舍尔的视角

如下我们进一步采用埃舍尔的视角来复原原作。




3.2 重构埃舍尔的周期性正方体

3.2.1 创建埃舍尔的单周期正方体

创建一个单周期的埃舍尔立方体。



采样埃舍尔的视角,将埃舍尔的立方体摆放到二维画面上。



3.2.2 创建埃舍尔的多周期正方体

创建多个周期的埃舍尔正方体。


左图为埃舍尔的多周期立方体(外部视角);右图为姿态调整后埃舍尔的多周期立方体。



3.3 更多埃舍尔的视觉和图形处理技巧

3.3.1 灯光照明

在分析埃舍尔的用光策略上,他的另一幅作品给了我们很多的启示。在该幅画作中,一个男人强有力的双手试图从黑暗的深井中爬出,而井口位置也就是版画的中心偏上位置,呈现出强烈的白光照明,明暗产生强烈的反差。

来源:M.C. Escher, New Year' s Greeting Card, 1946


光源的布置:根据本文所述作品正方体空间的画面效果,我们有理由相信,埃舍尔采样了类似的布光策略,并且更为通透。在画面的正上方位置确实是周期性立方体晶格结构的一个通光口,这个位置比画面其他任何位置都具有更通透的结构,且伴随晶格结构周期数的增长,它对该位置的通光影响极小,不会被新增的立方体棱边覆盖。埃舍尔在此处布置了强烈主光源,通过画面的背光结构逐步产生灰度上的变化。

基于上述揣摩和分析,我们在周期性晶格的正前方,布置了一排水平向点光源,用于产生类似的照明效果,点光源位置如下图红色圆点所示。


实体和空间边界强化:同时埃舍尔在结构边界区域,实体和空间之间采用"白线沟边",以进一步加强光线和实体的明暗对比效果。用计算机完全模拟出这种效果,还是很困难的。在此我们采用了一种简化方法,直接将实体的边界(White Edge Form)赋值为白色。

控制面灰度的梯度:由于该作品为传统版画,而版画实际只有 2 种颜色(非黑即白),埃舍尔通过控制每个大小立方体和长方体端面上的灰度,构造光线的照明效果以及空间的延伸的透视效果。产生了一种面朝读者的实体背光,逐步地离散梯度的过渡到中心的强光位置,在强光中心为白色,实体不可见、不可测的无尽效果。


3.3.2 材质纹理

此外,埃舍尔对近景结构材料了点刻、点画 (Stipple Shading ) 的手法,进一步以体现结构的质感。有关 Stipple Shading 可参见 Silvia 的文章,文献[4]。

最后,我们将上述技法和处理,融入代码,生成一幅完整的图像。



3.3.3 取景边界

采用 Escher 取景框,将其余结构和画面隐去。该幅作品的特定的取景框,避免了周期性结构简单地重复和复制,使得画面中每一处的结构看上去都不一样,然而实际又都一样的矛盾和冲突心理。



3.4 效果比较

对比两幅作品:左上图为埃舍尔原作,中上图为作者复原作品,右上图为两者之间的像素差异。下行三小图分别为对应上图图像的灰度分布。

本文作者兴趣并非刻意复原埃舍尔原作的所有细节,而是希望最大程度还原 Escher 在创作这幅作品时,其背后的思考、技巧和方法。


04:拓展埃舍尔的方法


4.1 应用埃舍尔的视角

埃舍尔的遗产和透视美学的技巧,其实可用于三维周期性晶格内部结构的展示。如下图所示,左图为埃舍尔原作,右图为本文作者改变了立方体的结构,取而代之以一种三周前极小曲面的晶格结构作为实体模型,仍然采用和埃舍尔相同的视角,表现的该种曲面晶格的内部结构。


4.2 动画:埃舍尔的三维周期性与无限立方体

在埃舍尔的另一幅作品 (Depth) 中, 同《立方体空间》的一模一样的透视方式被再次采用。视线中心点也位于取景框的外,并靠近取景框的左侧。

来源:M.C. Escher, Depth, wood engraved, 1955.


受到埃舍尔 Depth 的启发, 画中绘制了许多的飞鱼,它们看上去正在动态的向前飞行。如果在上个世纪,Escher 可以拥有计算机和 Mathematica ,他很可能想表达如下的动画。为此,我们生成一个沿初始X方向,平移一个晶格的周期,产生无限飞行的效果。





05:总结和讨论


埃舍尔的作品与方法

1. 极简与极繁:埃舍尔的该幅作品是极简与极繁的矛盾和统一。立方体作为一种最简单的三维实体结构,在埃舍尔的手中通过多周期性结构变换为一种极为复杂和庞大的空间结构。此外他采用了一种非常特殊的三点透视方法和边界剪裁技巧,产生了一种前后交织交错,绵延不绝、深不可测的视觉体验。

2. 从一到无穷:从一到无穷的思想体现在埃舍尔的许多作品上,当然也包括这幅作品,你可以说他只画了一个立方体或有限个立方体,同时也可以说他画了无穷多个立方体。

3. 精准绘制:埃舍尔的作品非常地精准,通过正交结构线完全可以准确定位消失点。这意味着埃舍尔绘制线条的最大角度误差为 0.00027 Rad 或 0.015 degree,而他那个时代仅有的工具是笔和尺。

4. 线性透视:该作品完全符合线性透视原理,但又跳到了画院派和传统处理方法的框外,同传统三点透视比较存在以下两点差异点:1. 视平线并非水平,作者猜测采用埃舍尔想利用第一横条来模拟一个假的水平线,产生错视的效果。2. 视线中心线和视线中心点都位于取景框外。如果采用传统三点透视复原,根本找不到该特定的视角。这种透视处理的手法被应用于此后埃舍尔的多幅作品中,绝非特例。

5. 三维立方体周期性结构:通过作者的三维模型重构验证,可以确定本幅作品的绘制的目标物体是一个多周期的立方体晶格结构,这也同作品的名称相符合。埃舍尔绘制过很多二维镶嵌的周期性图案的作品,此作品也可视为他向三维周期性结构迈进的奠基性作品,或者是空间网络划分思想的奠基性作品。

6. 布光:埃舍尔充分利用了立方体晶格结构在特定视角下的透光孔,该通光孔位于画面的中心正上方,并采用白色照明产生强光覆盖的效果,给观者产生了无穷迭代的遐想。由于该作品为传统版画,而版画实际上只有2种颜色(非黑即白),埃舍尔进一步通过控制每个正方体端面上的灰度,构造光线的照明效果以及空间的延伸的透视效果。产生了一种面朝观者的实体背光,逐步地离散梯度的过渡到中心偏上的强光位置,在强光中心为白色,实体不可见、不可测的无尽效果。

7. 取景:该幅作品的特定的取景框,避免了周期性结构简单地重复和复制,使得画面中每一处的结构看上去都不一样,但实际又都一样的,心理上的矛盾和冲突。


进一步的改进点

1. 本文优化模型的位置和姿态,采用了8个立方体顶点和8点图像采样点进行总距离的差值最小化,进行优化以获得精确解。但精确解的数量并不唯一,存在多解甚至是无穷解的情况。也可改进优化函数,例如面的差异最小化、或整体面积的差异最小化。

2. Escher在结构模型边界采用了"白线沟边"的手法来产生光晕的效果,当前作者采用了简单的边赋色的方法,可采用更佳的方法来处理或光线追踪的算法来模拟。

3. 本文当前并不确切知道光源位置和强度分布,所以整体和局部灰度仍同原作有差异。但根据正方体每个小面上的灰度值和距离,可以反算光源,背景光的数量、位置和强度。对于版画可能会受限于人工绘画的精度,但采用立体晶格的反射灰度,以摄影照片获得采样数据,便可更精确地估算光强分布和光源位置。


参考文献

[1] B. Ernst, The Magic Mirror of M. C. Escher, Köln: Taschen Press, 2018. pp.46-49.

[2] B. MacEvoy, "Three Point Perspective", Online book, 2021.

[3] I. Hafner, "Perspective Projection of a Cube onto a Plane", Wolfram Demonstrations Project, 2017.

[4] S. Hao, "Computational Stippling: Can Machines Do as Well as Humans", Wolfram Blog, 2016.



购买软件/免费试用【13.1.0中英文 Wolfram 软件】

可扫码申请