今天给各位分享计算机绘图是一种什么绘图,是指利用计算机上的什么进行美术创作过程.,传统绘画与电脑绘画的表现形式分析...的知识,其中也会对点击查看>>电脑绘画论文(免费期刊范文8篇)其他文章进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文导读目录:
1、用计算机程序制作三维立体画
2、计算机绘图是一种什么绘图,是指利用计算机上的什么进行美术创作过程.,传统绘画与电脑绘画的表现形式分析...
3、什么?你还不会看三维立体画吗?没关系,咱们来做一个_三维立体画查看器
摘要该文介绍了三维立体画的原理和制作方法,并给出了用C语言编写的源程序。借助于Pbrush.exe,读者可以自己设计和欣赏各式各样的三维立体画。
目前,市面上正在流行各式各样的立体画,其特点是从外表来看与一般的图案很相似,但是双眼紧盯着注视片刻后,一恍惚之间眼前便出现了画中画——立体像。笔者第一次看到这种画便被发明者的创意所倾倒。利用众所皆知的双眼视差原理,竟能在一张平面纸上制造出如此奇幻。但是立体画本身除了其发明者的灵感和画面创作者的别出心裁之外,其原理上并无神秘之处。用计算机程序来实现它,可说是易如反掌。笔者用一个晚上时间,便在微机上用BASIC语言实现了简单形体——平面圆饼的立体画。当然,要使该程序具有完善的功能,提高其制作速度,还是应该用编译语言(如C语言)来编写。本文中给出的源程序借助于Windows中的.BMP图形文件,可使大家自己制作任意形态的立体画。
一、立体画的原理
看过立体电影的人都知道,当人的双眼分别接收不同视角拍摄的图像时便会产生立体感。这是由于人眼长期观察的习惯造成的。和立体电影原理相同的立体摄影风景照片也很早就已出现。图1中给出了这种立体照片的示意图。左、右照片分别是人的双眼角度上观察一棱锥体时左右眼看到的图像(图2)。左眼看到的是棱锥的顶端向右错动了一些的图像,右眼的看到则是棱锥的顶端向左错动了一些的图像。如果用一张硬卡片隔开两张照片(如图3),@@09A04000.GIF;图1@@
@@09A04001.GIF;图2@@
@@09A04002.GIF;图3双眼分别看两张画,会看到一个立体的棱锥体。这种立体照片的观察方法在测绘学中也早已采用。
但是,目前的三维立体画在形式上与这些很不相同。它是怎样在同一张画面上呈现立体的呢?首先,分析一下人们是怎样从这些立体画中看出“立体形体”的。从前面所说的可以知道,人眼要得到立体感,双眼必须有视差,即双眼看到的图像应该有差异。人们在看立体画时,都有“恍惚”一下的过程。在这过程中,双眼的视中心发生了错动(如图4)。这样@@09A04003.GIF;图4左眼看到的是画面的“偏左像”,右眼看到的是画面的“偏右像”。@@只要“偏左像”和“偏右像”的内容相当于图1的左、右照片,双眼就会感到立体形体。那么,能否把图1的左、右照片分别当做“偏左像”和“偏右像”,简单重叠来得到立体画呢?
显然不行。能够合成立体画的“偏左像”和“偏右像”是要满足一定条件的。
如果图5中表现的棱锥体的表面上有图案的话,
@@09A04004.GIF;图5像素a和像素a''''应该具有相同的颜色,因为它们是从不同视角观察的@@同一个实体点。像素b和像素b''''、像素c和像素c''''的情况与此相同。把两幅画分别当作“偏左图”和“偏右图”,部分重叠成为同一画面时,在新的画面上这种关系仍应该表现为a=a'''',b=b'''',c=c''''(如图6)。但这时应该注意到,在这张合成
@@09A04005.GIF;图6画面上,点a''''既是“偏右图”上的点a'''',又是“偏左图”上的点b。而@@一张画面上相同坐标点的像素只可能是一种颜色,因此,产生了新的像素关系a''''=b。另外,点a既是“偏左图”上的点a,又是“偏右图”上的点c'''',所以,a=c''''。以此类推,点b''''和点c也有类似的情况。因此出现了新的关系表示式,...''''=c=c''''=a=a''''=b=b''''=...。这就构成了立体画面上像素必须要满足的条件:“等颜色像素链”。立体画上的所有点都从属于某一条“等颜色像素链”。这就是所有立体画图案都呈现出某种程度上的水平周期性的原因。
因此,对于任意立体形状,只要构造出相应的这种“等像素链”,并按其规律充填图案即可得到立体画。但是正如前面所述,由于这种“等像素链”条件的约束,人们虽然可以随意构造出各种形体的立体画,但其立体形体的表面图案是不能完全随人意愿的。
二、制作立体画的计算机程序
由于人的双眼的水平性,以上的“等像素链”只按水平方向分布,与垂直方向无关。因此,在程序中,各个像素行的处理过程是相互独立的。制作立体画的程序主结构图如图7。
@@09A04006.GIF;图7制作立体画的程序主结构图在以上结构图中,关键是如何建立“等@@像素链”。具体的处理如下。对于立体形体上的每一个点,首先求出该点在“偏左图”和“偏右图”上的坐标。以图1中的棱锥顶点为例,实际上其X坐标是在中心点,但由于双眼的位置并不在其正上方,顶点在“偏左图”上向右位移,在“偏右图”上向左位移,而且其位移值的大小显然与其高度有关,即该点坐标越高位移值就越大。a,b,c等点也都有这些位移。在求出一个点在“偏左图”和“偏右图”上的坐标后,再算出在合成图(如图6)上的对应坐标
,以建立“等像素”关系,如a=a''''。当立体形体的一个水平剖面上的全部点经过以上处理后,合成图的各条“等像素链”关系也就自然形成了。
另外,由于有可能出现高点遮盖低点的情况,“等像素链”的构造应该从低点到高点逐层进行,高点的“等像素”关系将替代低点的“等像素”关系。这也是程序主结构图中“首先,对于没有任何形体存在的背景平面构造‘等像素链’”的原因。
下面给出了根据以上结构图用C语言编写的源程序。程序中,每一个坐标点对应一个结构型数据,它包含“前像素”、“后像素”两个指针。“前像素”指针指向该坐标点作为“偏右图”上的一点,在“偏左图”所对应的点的坐标。“后像素”指针指向该坐标点作为“偏左图”上的一点,在“偏右图”所对应的点的坐标。程序中,“立体形体水平剖面的高低坐标数据”、“原始图案素材”和输出的“立体画”的文件格式都是采用了Windows3.1的Pbrush产生的BMP图形文件格式。图幅大小要求都是640×400,用16种颜色方式。其中,立体形体上各点的高低坐标用图形文件中的颜色值表示,因此该图形文件的图形与带颜色的等高线图安全相同。通常情况下,在16色的BMP文件中颜色值从小到大的顺序为:黑色、暗红色、暗绿色、暗黄色、暗蓝色、暗紫色、暗青色、暗灰色、灰色、明红色、明绿色、明黄色、明蓝色、明紫色、明青色、白色。本程序采用最简单的“图案充填”方案,即各条“链”上的像素点皆采用该“链”上的第一个像素的颜色。程序中的常数EYE-SPACE表示“偏左图”和“偏右图”之间的偏差,BO-DOT是表明“链”的首或尾的指针标志。
该程序寄生在Windows3.1中的Pbrush软件上。借助于它来构筑立体形体(即立体形体水平剖面高低坐标数据文件图8),设计原始图案(图9)。程序运行后,逐行输入并处理以上两个文件中的图形,然后输出立体画结果文件(图10)。最后,用Pbrush来观赏立体画result.bmp。当然,要设计出令人赏心悦目的立体画,必须在立体形体和图案素材的选择和搭配上做到天衣无缝,独具匠心。
@@09A04007.GIF;图8@@
@@09A04008.GIF;图9@@
@@09A04009.GIF;图10程序清单@@
/*--from1995.4.19--to1995.5.18----*/include
#defineCOMPRESSION0
#defineSIZE-OF-BITMAPFILEHEADER14
#defineSIZE-OF-BITMAPINFOHEADER40
#defineSIZE-OF-RGBQUAD4
#definePIXEL-DATE-OFFSET14+40+4*16
/*SIZE-OF-BITMAPFILEHEADER+SIZE-OF-BITMAPINFOHEADER+BITS-PER-PIXEL
*NUM-COLOR*/
#defineNUM-COLOR16
#defineNUM-LINE400
#defineWIDTH640
#defineBITS-PER-PIXEL4
#definePIXEL-PER-BYTE2/*8/BITS-PER-PIXEL*/
#defineBYTE-PER-LINE320/*((WIDTH*BITS-PER-PIXEL-1)/32+1)*4*/
#defineNO-DOTWIDTH+1
#defineEYE-SPACE128
struct{
unsigndecharcolor;
unsignedintpri-x;
unsignedintnxt-x;
}dot[WIDTH];
main()
structtagBITMAPFILEHEADER{
unsignedcharbfType1,bfType2;/*alwaysequalto''''BM''''*/
unsignedlongintbfSize;/*sizeoffile*/
unsignedintbfReserved1,bfReserved2;/*settozero*/
unsigedlongintbfoffits;/*byteoffsetfromBITMAPFILEHEADERtobitmapp
ixel
datainthefile*/
}BITMAPFILEHEADER;
structtagBITMAPINFOHEADER{
unsignedlongintbiSize,/*sizeofBITMAPINFOHEADER*/
biWidth;/*widthinpixelsbiHeight;/*heightinpixels*/
unsignedintbiPlanes,/*always1*/
biBitCount;/*colorbitsperpixelmustbe1,4,8or24*/
unsignedlongintbiCompression,/*BI-RGB,BI-RLE8or4*/
biSizeImage,/*totalbytesinimage*/
biXPelsPerMeter,/*0,oropt,hres.*/
biYPelsPerMeter,/*0,oropt,hres.*/
biClrUsed,/*normally0,cansetalowerno.colorsthanbiBitCount*/
biClrImportant;/*normally0*/
}BITMAPINFOHEADER;
structtagRGBQUAD{
unsignedcharrgbBlue,/*blueintensity,0-255*/
rgbGreen,/*greenintensity,0-255*/
rgbRed,/*redintensity,0-255*/
rgbReserved;/*reserved,settoZero*/
}RGBQUAD[NUM-COLOR];
char*fn-layer="layer.bmp";
char*fn-org="origin.bmp";
char*fn-result="result.bmp";
FILE*flayer,*fOrigin,*fResult;
unsignedchartmp-byte1,tmp-byte2;
unsignedintline,i-byte,i-pixel,x;
unsignedintlayer;
intleft-x,right-x;tmp-x;
unsignedlongintcur-offset;
unsignedcharh[WIDTH],org-color[WIDTH];
puts("---WINTRICK---");
puts("---byLiJisong---");
if((fLayer=fopen(fn-layer,"rb"))!=NULL){
fread(&BITMAPFILEHEADER,SIZE-OF-BITMAPFILEHADER,1,fLayer);
fread(&BITMAPINFOHEADER,SIZE-OF-BITMAPINFOHEADER,1,fLayer);
if(BITMAPFILEHEADER.bfType1==''''B''''&&BITMAPFILEHEADER.bfType2==''''M''''
&&BITMAPINFOHEADER.biWidth==WIDTH&&BITMAPINFOHEADER.biHeight==NUM-
LINE
&&BITMAPINFOHEADER.biBitCount==BITS-PER-PIXEL
&&BITMAPINFOHEADER.biCompression==COMPRESSION)
fread(RGBQUAD,SIZE-OF-RGBQUAD,NUM-COLOR,fLayer);
else{
fclose(fLayer);
printf("File%sisnotfitforthisprogram!
",fn-layer);
getch();
exit(1);
else{
printf("File%sdoesnotexist!
",fn-layer);
getch();
exit(2);
if((fOrigin=fopen(fn-org,"rb"))!=NULL){
fread(&BITMAPFILEHEADER,SIZE-OF-BITMAult);
参考文献
孙志辉、王萃寒、王茜.实用Windows3.1详解.北京:电子工业出版社,1994. 电脑绘画论文(免费期刊范文8篇)之第八篇
摘要:绘画在信息化高速发展的今天, 具有各种不同的表现形式。自从计算机时代来临之际, 我们生活节奏不断加快, 由计算机衍生的产品更是层出不穷。在艺术家眼中, 世界在变, 他们所创造的艺术作品的表现形式也在不断变化着、发展着、创新着。许多艺术家都在思考着这样一个问题, 到底是传统的艺术表现手法是艺术的表现灵魂, 还是利用计算机绘图软件表现的绘画形式是最先进的, 最被当代人们所认知的。
关键词:传统绘画,电脑设计,表现形式
1 传统绘画表现形式与二维电脑绘图软件之间的不同表现形式
在二维电脑设计师的眼中, 一幅作品的好坏, 在很大程度上取决于设计师对软件的操作能力, 当然, 必备的还有和传统绘画一样的创造能力和扎实的会话能力。一些作品在创作之初, 无论是运用二维电脑绘图软件操作完成, 还是利用传统的绘画进行创作, 都需要有良好的绘画基本功。因为无论是画笔还是鼠标他都是创作一幅作品的媒介, 都是一种工具, 所以无论时代怎么发展, 计算机衍生的二维软件怎么完善, 相对于创作者来说, 都离不开绘画的扎实基本功。
大多说人, 对于传统绘画的与二维电脑绘图软件之间不同的表象形式众说纷纭。有些人觉得, 造型能力强、绘画功底深、模仿能力好的人, 在利用二维绘图软件设计的平面作品会非常得心应手;而还有些人则认为, 二维电脑绘图软件, 就是纯粹的电脑操作, 它是一种独特的、新型的表现形式, 有没有扎实的绘画基本功和造型能力都无所谓, 他们两个没有直接联系。专业从事美术的相关人士会赞成前一种观点, 因为他们是受过专业美术训练的, 而后一种观点, 一般是相关二维软件设计人员所持有的观点。所以在这方面的不同看法, 一直是人们所正义的焦点。
1.1 当代的绘画表现形式是一种独特美
每个从事绘画的人都知道, 当你想要创作一幅作品的时候, 首先第一点就是创意和构思。这是一幅作品的灵魂所在, 没有任何一幅世界名画, 是临摹前面大师的作品而一鸣惊人的。因为模仿和复制不属于真正的艺术品, 所以, 独特美是一幅绘画作品的灵魂所在。
着名的绘画大师, 在表现自己的一幅作品的时候都会把独特美与其它艺术表现形式相融合进行再次的艺术加工, 创造, 从而实现自己心的艺术表现形式。在一些公开的艺术品展览会、商业展览会等大型展览会上, 我们都能看到这样的作品, 他们把独特美融入到作品中, 同时, 对于观者是否喜欢这新作品, 从不在乎, 只是表达了自己的艺术语言而已。
1.2 当代绘画中, 大师们往往更情有独钟于朦胧美
朦胧美不仅仅是传统画与二维电脑绘图软件的区别之一, 在意境上更是无法比拟。
朦胧美gossamerbeauty对象形象模糊, 概念不确定, 可意会而难以言传的朦胧含蓄的美。其特征是用某种朦胧模糊而含蓄的形式来表现多义性的内容, 使欣赏者在欣赏中通过猜测、想像和意会, 才能获得某种审美享受。中国魏晋南北朝时已开始重视艺术的朦胧美。《世说新语》中记载“纡余委曲, 若不可测”, 刘勰《文心雕龙·隐秀》中说“隐之为体”, “优采潜发”, 唐司空图《二十四诗品》“远引若至, 临之已非”, 及后人说的“水中月, 镜中花”等, 都是追求一种朦胧蕴藉的美。现代中外艺术追求模糊、抽象等, 也试图达到朦胧美的效果。自然界中, 水光山色的空蒙迷茫, 月光下物体的模糊恍惚等即为自然界的朦胧美。艺术中的朦胧美表现于内容意蕴的模糊、多义、抽象、含蓄蕴藉不直露, 表现于形式多用比兴、象征、隐喻, 语言、形、色、声及其组合的模糊不确定、离奇超常, 大幅度的变形、变色、变声, 使人难以通过直观和按常理加以理解, 必须通过丰富的想象力进行猜测、推断, 才能把握其真实的含义和内在的美。朦胧美可以造成特定的意境, 诱发人的好奇心, 激起人的探究心理, 使人在似明白又模糊中得到一种特殊的审美感受。
朦胧美不但被多情的诗人们运用在诗词, 古今中外的绘画大师们也无不是巧妙使用朦胧美展现艺术才华的高手。
国画中的写意山水、“云龙雾豹”、“绿纱迷影”“隔雾观景”“帘内美人”都是朦胧美的体现。
画蛟龙, 从不全龙毕现, 或露片鳞, 或垂半尾, 仰观者虽极目力而莫能窥其全体。
画美人, 必是绿纱迷影, 湘箔地裙, 隐隐约约, 不露全身。
画花卉, 往往只画墙头数株, 或石隙一枝, 虽观之不足, 却思之有余。
达芬奇的名画《蒙娜丽莎》, 画中的蒙娜丽莎沉静含蓄, 她的目光充满智慧、自信, 同时又流露出一种不可捉摸的表情, 双唇欲启未开, 显出迷一般的微笑, 与其背景中朦胧的山川景色相辉映, 迷蒙缥缈, 含蓄悠远, 可意会不可言传, 引得无数后人遐想、探究。
1.3 在二维电脑绘图软件中精准性是他的最大优点
利用二维电脑绘图主要优势就是在于绘图的精准性, 一幅传统绘画作品因为是手绘的作品, 所以避免不了会有一些小小的误差, 但是利用二维电脑绘图软件绘制的效果图, 就不会存在这这种误差, 因为他是计算机程序编制而成的, 所以一切都是固定的模式, 精确度极高。
2 传统绘画表现形式与三维电脑绘图软件之间的不同表现形式
三维立体画是利用人眼立体视觉现象制作的绘画作品。普通绘画和摄影作品, 包括电脑制作的三维动画, 只是运用了人眼对光影、明暗、虚实的感觉得到立体的感觉, 而没有利用双眼的立体视觉, 一只眼看和两只眼看都是一样的。充分利用双眼立体视觉的立体画, 将使你看到一个精彩的世界。
2.1 立体视觉和立体画原理
人有两只眼, 两只眼有一定距离, 这就造成物体的影象在两眼中有一些差异, 见右图, 由图可见, 由于物体与眼的距离不同, 两眼的视角会有所不同, 由于视角的不同所看到是影象也会有一些差异, 大脑会根据这种差异感觉到立体的景象。
三维立体画就是利用这个原理, 在水平方向生成一系列重复的图案, 当这些图案在两只眼中重合时, 就看到了立体的影象。参见下图, 这是一幅不能再简单的立体画了。图中最上一行圆最远, 最下一行圆最近, 请注意:最上一行圆之间距离最大, 最下一行圆之间距离最小。
另一种立体画较复杂, 在这种立体画上你不能直接看到物体的形象, 画面上只有杂乱的图案, 制作这样的立体画只有使用程序了, 我为此编写了一些程序, 有C和QBASIC的源程序, 请看自制立体画和程序下载。两种作品看法是一样的, 原理都是使左眼看到左眼的影象, 让右眼看到右眼的影象, 听我说具体的方法:当你看立体画时, 你要想象你在欣赏玻璃橱窗中的艺术品, 也就是说你不要看屏幕上的立体画, 而要把屏幕看成是玻璃橱窗的玻璃, 你要看的是玻璃之内的影象。
2.2 传统绘画中的三维立体画
“立体感”本身是个错觉, 让你在平面上感觉到立体, 产生这种错觉的方法是很科学的, 无外乎处理线条·明暗·透视, 这不管古今中外都是这么干的。
但是事实是中国传统绘画压根就没把“立体感”当回事, 也千万不能把它太当回事, 可以有点立体感, 仅限于为了视觉舒服, 而一旦追求立体感了, 那就下品了。毕竟“立体感”这玩意太描摹现实了, 也太技术性了。对那些境界颇高的古人来说, 这东西就是个把戏, 就是个小魔术, 斗斗乐的, 特别匠气。
据说当年东方画作传到西方和西方画作传到东方, 当地人的反应都是“他们画的太匠了!”
2.3 从其绘画过程上看, 却有很悬殊的差异。
数码技术计算机不是人脑, 但是来自人脑, 应该认识到计算机是人脑的延伸和扩展。任何一门艺术的表现形式都不能说是尽善尽美的, 数码艺术也同样有其不足, 但具备艺术修养是数码技术的根本前提, 电脑表现形式的不足可以改善, 而艺术修养的匮乏就决定了数码艺术作品的命运。今天, 我们不仅需要艺术设计者能熟练地掌握计算机各类图形软件的使用, 而且也需要尊重艺术创作的规律, 以人为本, 注重美学修养。电脑美术是一门新兴艺术, 需要我们共同努力才能使其健康成长, 这样才能创作出更多的好的数码艺术作品。
点击查看>>电脑绘画论文(免费期刊范文8篇)其他文章 事情是这样的:
前几天刷到介绍刘慈欣的文章,看到了小时候最喜欢的《科幻世界》,思绪一下回到90年代,也想起自己为数不多的超能力:秒看三维立体画,当年那可是赚足了存在感。但很多小朋友不会看,这个技巧呢就还有点难学,所以,咱就是说,能不能做一个自动识别的程序,让不会看的同学也能知道图里面到底藏了啥玩意儿呢?
说干就干,来吧,动手,顺便聊聊三维立体画的前世今生。
先放结论,目前做的是一个简单算法的python版,可以自动识别90%左右的立体画,一些特别的图无法识别,原因后面会说明。
看一下成品效果:
在动手写代码之前,还是先简要介绍下什么是三维画,为什么平面图能有三维效果,这样才能找到解题思路。
三维立体画利用了人的双目立体视觉原理。人有两只眼睛,左右眼看到的图案会有一定视差,大脑就会自动计算出图像的深度。
三维立体画是最广为人知的视错觉之一,是图片中隐藏信息的一个方法(特别是SIRDS,虽然很容易被破解),是研究人类视觉的一个案例,当然也是将人群分类的方法之一,那么问题来了,你是属于“会看”还是“不会看”的一方呢?
双目视觉示意图:
这其实也是光栅立体画、红蓝3D/偏振3D等电影、时分3D、VR眼镜共同的基本原理。因为说到底,人类立体视觉的基本原理就是这样,所有的方案都是用不同方法在crack而已。
红绿眼镜和红绿眼镜3D画:
顺便说下,甚至在天文观测上人们也用到了同样的视差思路,“秒差距”这个概念就是用地球公转轨道宽度的2个眼睛,在观察远处同一个恒星时形成的夹角来定义的:
回到正题,实际上三维视觉的原理远比看上去的要复杂,主要是因为大脑在视觉识别方面做了大量的加工处理,你看到的并不只是原原本本的视觉信息。人们对大脑的处理过程还没有彻底了解,还在通过细胞学、神经科学和fMRI、PNAS等设备,以及视错觉图像、AI图像识别等从各方面去探索研究,还是蛮有趣的。感兴趣的同学可以关注相关的研究,包括视觉与眼科研究大会(ARVO/EVER),以及一些图形图像、VR相关的研究。
比如,很多经典视觉算法都是先寻找轮廓再做处理的,效果很好;但假设人类都是先抽取轮廓再去识别,主要关注结构化的信息,那么为什么人能够从一对随机点中识别立体图(SIRDS)呢?SIRDS图里全都是无意义的噪点。 [参见 The Human Visual System;注:由于B站不能贴站外链接,这里以及下面所有的站外链接都省掉了。]
当然这不是我的专业方向,欢迎有懂行的同学发表见解。我在知乎殷尚墨羽大佬(因伤摸鱼?)的《视觉系统:人类最重要的感觉》专栏里看到了一些有趣的介绍,觉得很不错,顺便推荐一下。
知道了立体视觉的原理,咱们还要再看看这个说实话有点奇葩的三维立体画是怎么一路发展出来的,知道怎么做的就更容易知道怎么破解了。
神奇的是,三维立体画的原理其实19世纪人们就已经知道,并且可以说,19世纪的人们已经经历了一波VR浪潮。
19世纪的立体画:
华盛顿纪念拱门1899:
19世纪英国著名的物理学家查尔斯·惠斯通爵士(Charles Wheatstone),对,就是那个电报机的发明人之一,于1838年首次发现并确定立体图原理(Principle of stereo graph),并因此被授予皇家学会皇家奖章。
他的研究表明,把同一个物体从不同角度拍摄的两张略有不同的图片摆放在一起观看,人脑会感觉到物体的3D立体感。
他阐明了立体视觉的实现机制,在此理论基础上还发明了一种由棱镜和镜子组成的器材——立体镜,从而使人可以从两张略有不同的二维照片中观察到立体的三维效果。
立体镜:
1851年英国首次举办的万国工业博览会上,由荷兰物理学家大卫布鲁斯特(Sir David Brewster)改进的装置首次展出,赢得维多利亚女王的支持,女王认为这也是工业革命改变世界的证明,代表了科技的力量。女王大人甚至有了自己的三维照片:
改进的立体镜:
所以,当时的人们看待这个东西就像现在我们看待VR一样,是突破性的体验手段,商机无限,人们甚至当时就做出了立体照相机,一下就可以拍出2张照片。
1854年成立的伦敦立体摄影公司是主要的内容出版商之一,他们出版了超过10万张立体图,在那个照片只能靠现场买,没有机器还看不了的年代,不难想象人们是多么狂热。这也许就是当年押注VR的另一家Meta吧。这家公司甚至穿越了近200年,现在都还存在,也依然在做他们的立体画立体声生意:伦敦立体摄影公司。只是时隔两百年的现在,VR命运的车轮再次转动,他们还在用200年前的思路,个人觉得不太可能成功。
类似现在的VR,当时的很多人都觉得有无限可能,但所有人也都没能找到实在的落地场景,于是毫无意外的,这个设备逐渐沦为了娱乐专属,并最终在电影、收音机的冲击下销声匿迹了。
20世纪90年代,随着计算机图形学和神经科学的发展,三维立体画又再次快速传播起来,《Magic Eye》和《科幻世界》一类的杂志起到了很大的推动作用,从《Magic Eye》的副标题“A New Way of Looking at the World”就可以看出,当时人们对三维画的认知是多么高大上。
magiceye杂志(这家公司现在也依然还在,可以查到):
在这个时期,借助于计算机辅助,还发展出了新的立体画模式,“Random dot stereograms随机点立体画”、“Autostereograms自动立体画”、“SIRDS(Single Image Random Dot Stereogram)”,图像直观上与内容已经没有任何关联,真正的信息完全通过深度信息隐藏于图像内部。
黑白随机点立体图:
彩色随机点立体图:
还有一些极简的三维画,比如:
一些看起来随便稀疏分布的点,没错,这也有三维效果:
ASCII码三维画_码农版:
现在我们已经知道了原理,也知道了三维立体画的种类,离学会看就只差一步了。
裸眼看的方法有两种:
观察方法示意图:
形象的讲,就是用发呆时空洞的眼神(平行观察法),或者用斗鸡眼(交叉观察法)的样子,盯住画面,直到画面开始重叠起来,并且两组相似的图案重叠起来(实拍图或者有大块图案的图可以看出来)或者眼前浮现出稳定的三维图像(随机点三维图只能这样看)为止。
将2个点看到一起就o了:
而正因为有两种观察方法,立体图又多了一种分类方法。
本文中所有的图片都是适合“平行观察法”的,除了下面这个,它更适合用交叉观察法:
特别需要说明的是,由于电脑生成的三维图通常都是多个竖条图形拼接的,所以会有多个重叠位置,如果看到的图形不太正常,那可能是你交叉过头了,放松眼睛再试试。
如果还没学会,也可以试试这个,自己做一个简单的能挡住左右视线的板子就可以了:
或者,你也可以等咱们的自动识别程序
那么,三维立体画是如何制作出来的呢?这一章务必不要跳过,一方面,了解制作方法可以让你更好的观察三维立体画,另一方面,这也是我们自动识别程序的基础。
一种制作方式就是和19世纪相同的,用双目照相机同时拍摄一个物体,自动的就拥有了立体视觉。这也是现代立体摄像机的原理:
But。。。这太没技术含量了不是?(并不,主要是设备太贵了)在这个各种AIGC的时代,我们要的是自动生成!
现在让我们思考一下,一个物体距离越近,左右眼睛看它的聚焦平面就越近,所以左右眼看到的这个物体的左右距离就越近。
是时候再回顾一下这个图了
所以这个比较近的物体,它们在图片上的左右距离就要比其他图形要短。
下面我们会用两个文本块来示意,看的更明白一些。是的没错,文本也可以形成三维立体画,也就是所谓的“ASCII Stereogram”
1 这里是一个文本块(注意需要用等宽字体显示)
2 让我们复制一份出来备用
3 假设我们想让橙色带下划线的部分变成立体的,从其他字中浮现上来:
4 只需要把他们向左移动一位,是不是就会显得比较突出了呢?
5 同样的道理,如果想要陷进去,只需要向右移动一位即可:
6 如果想做有更丰富深度的立体文本,没问题,不同图形移动距离不一样就行了!
同理,其他的三维立体图也是这样生成的,往👈🏻左边右边👉🏻挪一挪,立体感就出来了!
随机点图生成示意图_不同深度:
最终生成的随机点3层立体图:
接下来,就是怎么把想要隐藏的深度图案放到图片中了
上面ASCII立体图相当于放了一个3*3的方块进去,我们只要把方块换成自己想要的形状是不是就可以了?
Yes,就是这样,所以下面的图隐藏图案就是一个C:
以此类推,我们只需要精细的控制每一行像素的偏移,就可以一点一点的把深度图像编织进一个图片里隐藏起来了!
也正是因为要移动像素,而且深度越深偏移的越多,所以三维立体图特别是Autostereogram,都会有明显的扭曲痕迹(与双目相机实拍图不同,这种图是用重复排列的图案来模拟另一个图案的,因此每行像素都会被深度信息扭曲,类似衣服脱线了一样)
比如下图,仔细看看,你会发现图像右边有些部分像是被横向拉脱线了:
现在我们已经学会了制作静态三维立体画,有同学就会想,那三维图能动起来吗?
当然可以,用同样的方式做出连贯的帧,一边播放一边用我们的magic eyes来看,就可以裸眼看3D电影了!
比如Gif动态三维图:
比如漂亮的吸引子曲线视频:
终于到了最关键的部分,让我们来思考如何用程序识别复原三维立体画。
理论上是需要“三维重建”的方式来复原的,但是,我们可以发现,前面的三维立体画有一些很特别的地方,可以大幅简化复原算法:
基于以上两点,我们可以大胆的假设,把一张图片与自身重叠起来,左右移动来观察重合度,只要找到重合最大的平面,然后就可以看到凸起部分的样子了!
先拿ps做一个测试,看是否真的能有效果:
好像真的可以!
事实上,目前网上能找到的立体画复原程序基本也都是以此为基础的。
虽然,在动手之前已经知道了有别人写好的程序,但程序员的习惯不就是重复造轮子吗?(并不是。。。
在学习理论时自己动手做点有趣的东西,会非常有助于深刻理解知识,实践才能让知识真正变成自己的。况且我们还可以给自己定个小目标:自己动手做,效果当然要比他们好才行。
接下来是语言选型,由于python有PIL、opencv、numpy、scipy、matplotlib等强大的库支持,很适合验证原型,也很方便分析数据,就拿python来先做一版吧
现在我们有几个主要的问题要解决:
看起来很简单,开工!
代码很简单,核心代码只有二三十行,关键计算步骤都是现成的:
写好了试验一下,有点不对啊,看这个重合度数据曲线:
明显最左边的重叠度非常高,远大于后续的值,找全局最大值肯定不对,怎么回事?
其实,我们要找的是峰值,而不是全局最大值。 如果要看重叠度,那显然2张图全贴合的时候重叠度最高,随着逐渐错开重叠度逐渐降低,有一个连续的过程(主要是因为除了RDS外的图像都有色块,正常移动的时候不会突变)。
从视频中也可以看出,图像突然显现的时候才是真实的结果,也就意味着我们需要一个peak detection算法来找到突变的峰值。
scipy.signal.find_peaks刚好提供了我们需要的,直接调用就行了
参数有点多,我们关注的主要是prominence,即峰值的高度,我们只关注比较高的峰值即可,但为了我们能尽量找到结果,所以可以设置一个相对比较保守的小值,比如总数据振幅的2%,这样就能找到大部分肉眼可见的峰值了
其实之前也尝试了threshold(左右邻居的落差阈值),发现效果不好,我们关注的还是相对偏中长程一些的峰值发现,这么短程的限制作用不大。
至此,我们的算法就基本完成了,剩下的主要就是调优了,比如刚才说的峰值筛选,以及还有其他一些细节问题:
优化之后,最终的程序运行效果见下图。其中有些图片有规律分布的多个峰值,代表了之前说的“过度交叉”的多重解,但第一个图不是:
我在网上找了2个solver程序,对比刚写的代码,发现大部分图片样本的能力一致,毕竟基本算法都一样。
在部分图片上我们表现的更稳定,相信主要是上面的一些细节优化带来的效果。下面是一些相对比较难且有区分度的识别结果:
拼接图的识别结果对比:
科幻世界封底_原图:
然而人眼可以轻松识别,也就是说人眼至少是自动做了仿射变换修正
修正后的科幻世界封底实拍图识别结果对比:
复杂的深度图原图是这样的:
复杂深度图的结果对比:
正如本文之初的思路,当前程序的原理本质上就是识别最大背景,而不是真正的三维深度部分。所以有不少待改进的地方:
这个有趣的东西背后,原来还有着工业革命时代科技先驱的狂热开拓,有着深刻到现在人类还没有完全理解的视觉原理,也有着改变人类体验交互方式的无限可能,还是当前计算机研究热点之一VR的前身。
今天的问题解决了,我们一起用计算机视觉知识做了个读图小玩具,如果有同学想要的话,我也可以考虑把这个程序转成js,放到网页上,让大家可以自己上传图片识别,需要的话可以在评论区留言。
本文的各类资料都经过多来源的验证确认,许多配图经过修正整合,但计算机以外的知识仍可能存在偏差,欢迎指出问题。搜
索验证资料不易,写代码调优更不易,请多多点赞转发,谢谢大家。
最后再送大家一个抄来的ASCII stereogram,发现还是最简单的ASCII形式最有趣。
计算机绘图是一种什么绘图,是指利用计算机上的什么进行美术创作过程.,传统绘画与电脑绘画的表现形式分析...的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于点击查看>>电脑绘画论文(免费期刊范文8篇)其他文章、计算机绘图是一种什么绘图,是指利用计算机上的什么进行美术创作过程.,传统绘画与电脑绘画的表现形式分析...的信息别忘了在本站进行查找喔。
未经允许不得转载! 作者:谁是谁的谁,转载或复制请以超链接形式并注明出处。
原文地址:http://www.scnuyjs.net/post/22647.html发布于:2026-03-28




