存档在 2010年4月

德国朋友看好我们的皮影项目

2010年4月25日

我们x_memo团队在西安回民街寻访民间皮影艺人时,和一位德国朋友有过很多交谈,下面的视频是其中的一个小片段。在他看来,现在很多人都在盲目地追求流行文化,却忘记了常常回头看看过去的历史,去欣赏那些经典的东西,通过古代美好的艺术瑰宝,让我们从喧嚣的现实生活中回归一种宁静。视频里古今有点紧张,无伤大雅,呵呵。

 

U:Talk about this project…I think it’s very urgent,help pi ying,do you think so?
G:Yeah,I also think so.
U:In our minds,what should we look upon home without seeing only the technology?
G:I think I like you guys’ project,because all this world today, so fast,all the people,all the high tech,how to be fast,how to be mordenized,and…but I said Let’s go back to the roots,to the low way.you got fast food,why fast food?let’s go to the low food,its all the same,enjoy the classical things,that’s the way.I like it.I like your way.

用U代表我们,用G代表German Friend。

来源:http://x-memo.blog.sohu.com/148977366.html

使用Physics Helper 做SilverLight小游戏

2010年4月22日

最近在做一个Silverlight的游戏,由于人物上面的关节需要进行活动,类似于在flash用骨骼工具,在SilverLight中没有类似的控件,找了很多东西都感觉实现得很不理想。后来发现了 codeproject上面的一个Physics Helper的开源项目,它封装了Farseer的功能,并且它的使用方法非常简单,直接在Blend中就可以实现很好的动画效果,支持鼠标,重力等。下面是他的描述。

Project Description

The Physics Helper for Blend, Silverlight and WPF contains several Behaviors and controls which allow you to draw objects in Expression Blend 3, and have those objects translated directly into Physics objects using the Farseer Physics Engine. This can be a great timesaver for creating games, as it is traditionally difficult to line up underlying physics bodies and geometries with your Blend artwork.

demo演示地址    http://www.andybeaulieu.com/silverlight/3.0/physicshelper3/index.htm.

Demo Behaviors 2

Rag Doll

震动与责任;走访民间皮影艺人

2010年4月20日

为了更好地完善项目,我们决定这学期再次寻访民间皮影艺人。于是我们特地前往西安回民街,希望能够发现更多和皮影有关的故事。

熙熙攘攘的回民街上,许多外国友人在寻觅来自伟大文明古国——中国的一些印记。可是,失望却写在了他们脸上,矮矮的红墙,不再奢华的招牌早已不如周边的摩天大楼,时装百货抢眼,那数千年来久久回荡长安城下的叫卖声,如今已经湮没在了无数繁杂不安的现代化都市噪声之中。寻觅良久,终于在一个小角落看到了一个“院内皮影戏”的牌子。当时的欣喜已无法用文字来重现,那对于文化的归属,对于自身国度历史的悲凉,在那一刻,杂糅在了一起,即使今天回忆起来,也是略带苦涩。

店里面摆满了各种皮影造型的艺术品。店面不大,却看的过是主人是用心在打扮的。正当我们驻足于一件件民间艺术品之前,主人走了出来。看见我们的到来,主人很热情地招呼我们坐下。我们谈论了许多关于皮影的辉煌的过去,惨淡的现状,和那看似正在不断混沌的未来。主人的师傅正好也在,一个已经一辈子以皮影卫生的老爷爷,今年已经80高龄了。他得知我们在做一个项目来保护皮影,瞳孔霎时间透出的光芒,至今令我们震撼。他从事皮影已经60年了,见证了其不断衰败的过程,他取出了他师傅,以及师傅的师傅传下来的宝贝,很认真地跟我们述说着200年来皮影的变化。在那里,仿佛是现代的博物馆,清朝制作的皮影在今天看来依然充满了艺术的光彩,让在现代文明中长大的我们为之震撼。

曾经,我只会在作文里高呼我们传统文化的绚丽,可是今天,一种从未有过的切身骄傲让我振奋不已。可是心也是痛的,这项技艺正在流失了。老爷爷无奈地说到“我的儿子也不肯学了,现在我只找到一个愿意接受的弟子。”老人无奈的话语,折射出多少传统文化在机械时代中的无奈,这一无奈多少年来一直困扰着我们,可是我们的解决之道在哪里?或许做皮影保护的项目本身只是一个途径,那时的我们更希望找到一种方法让传统文化以一种鲜活的姿态存活下去,而不是苟延残喘的在历史书上摇摇欲坠。

我们点了三英战吕布的戏后,老爷爷去准备皮影戏了。于是我们和老板攀谈起来。在聊天的过程中老板跟我们讲述了皮影戏传承过程中遇到的很多困难,比如老爷爷本来是有一班人马的,但是因为开销实在太大,演出收入少,所以目前还是存在很大的困难。但是我们依旧可以在老板时而发出的充满希望的眼神中看到一种期待。老板说他非常欢迎大学生们来关注皮影,早日让更多的民间皮影艺人登台表演,让更多的人可以看到我们老祖宗留下来的东西,共同见证中国的精彩。

特别值得一提的是,我们遇到了一位德国人,他特别看好中国的皮影戏。他想跟自己在德国的朋友一起分享这一艺术瑰宝,并表示愿意请老爷爷去德国演出。我们项目组也和这位德国人保持着联系,努力把皮影文化传播到更远的地方。

来源:http://x-memo.blog.sohu.com/148776953.html

用Matlab处理Dicom图像

2010年4月14日

最近在处理CT图像时,CT图像是对人体进行逐层扫描的,在图像有很多不需要的部分,比如肋骨部分就夹杂在里面,导致三维重建出来的图像有很多不需要的部分。很不好处理。

于是,我就想了了简单方法,对一张一张的dicom格式的图像,把里面不需要的像素点都置为黑色,这样就可以了。原打算用VC++6.0+VTK来实现的,调试起来太麻烦了,就直接用matlab来处理就简单了。

1。读写Dicom格式的图像

I=dicomread('E:CT37222.dcm');   %读取图像
metadata = dicominfo('E:CT37222.dcm');%存储信息
imagesc(I);%显示图像

dicomwrite(I, 'E:CT37222.dcm',metadata);%写入Dicom图像

2.在Dicom图像上面进行选取需要的矩形区域

这个代码实现很简单,找到这个方法也费了一些波折

[xv,yv] = ginput(2);  %这样就可以在图像上面选取2个点,将X坐标保存到xv中,将y坐标保存到yv中。

如果有很多点形成一个矩形区域的话,可以用  in = inpolygon(x,y,xv,yv); 来判断,x,y坐标是否在选取的点围成的区域中。

image

用LINQ来对文章列表进行操作

2010年4月4日

最近正在做的一个软件,就是对某个网站的所有文章列表里添加一个监听器,判断是否有指定的关键字。对文章列表里面的抓取都已经做好了,就需要对一前一后的两个列表进行更新。本来可以用循环列表一个一个的进行判别的,一想在VS2008里面不是有个LINQ啊,一直只是听说过,从来没用过。今天试看看怎么用。就上网搜了会,照着别人的写了个。感觉效率不好,应该可以写成一个语句了,我去写成了三个,也不知道怎么改好。

 

 public bool getState(ref List<Post> ls)
      {
          second = getData();
          var list2 = from s in first
                      where s.Title.IndexOf( key ) >= 0
                      select s.getPostUid();
          first[4].getPostUid();
          var list3 = second.Where(s => s.Title.IndexOf( key) >= 0);
          var l =from s in list3
              where !list2.Contains(s.getPostUid())
               select s;
          first = second;
          if (l.Count() >= 1)
          {
              ls = l.ToList();
              return true;
          }
          else
              return false;
      }