视频展台正负片操作的虚拟实验
2009-01-28辛允东
辛允东
摘要 视频展台是教学中常用的辅助媒体,正确熟练的使用可以大大提高教学效率。展台调节功能中的其中一个就是正负片的转换,通过这个切换按钮可以在正片和负片之间来回切换。Vrml语言和Java语言是做虚拟实验的常用工具,介绍如何用这两种语言实现正负片转换功能。
关键词 VRML;Java;虚拟实验;视频展台;正负片转换
中图分类号:G434 文献标识码:B 文章编号:1671-489X(2009)15-0097-02
Switching of Image Negative or Positive Virtual Experiment of Video Presenter//Xin Yundong
Abstract The video presenter is the auxiliary tool in teaching progress, the appropriate and skilled usage of the media has done a lot to promote the teaching effect. The switching of image negative or positive is one of the video presenters operations. The vrml and java languages are the commonly used tools for virtual experiments, this article is to realize the operation based on the two languages.
Key words VRML;Java;virtual experiment;the video presenter;switching of image negative or positive
Authors address The Education Department of Jining College, Qufu, Shandong 273155
视频展台是学校教育中广泛使用的辅助教学工具。要想使师生更好地掌握投影媒体的使用,就要通过更多的实验过程,而现实的教学条件又不能为每一位使用者安排尽可能多的实验机会。因此,如何使使用者更好地做好这一块实验就成为一个急需解决的问题。
虚拟现实技术凭借其强大的交互功能,在教育领域中应用很广泛。将虚拟现实技术应用到教育中,主要用处之一就是开发虚拟实验。基于虚拟实验的优势,设计开发一个虚拟实验可以解决上述问题。开发虚拟实验使用的VRML语言是一种应用广泛的建模语言,可以创建逼真的虚拟实验器材及实验环境。再加上Java语言的配合,能够模拟视频展台的各种操作,使虚拟实验的交互性更加突出,进而提高实验教学的效果,优化教学过程。
笔者主要探讨视频展台正负片切换虚拟实验的设计以及实现方法。
1 视频展台正负片转换实验的设计
1.1 实验设计目的虚拟实验有较强的交互性和沉浸感,让学习者体验虚拟实验这一形象逼真的学习形式及其带来的学习乐趣。最主要的目的是通过视频展台模型的展示、正负片转换操作的模拟,让学习者学习掌握正负片转换的基本原理和操作方法。
1.2 实验过程设计虚拟实验分为2部分,一是虚拟场景,在这里学习者可以对视频展台的组成部分进行了解,认识正负片切换按钮的功能,可以按下正负片切换按钮,就像在真实实验中一样对实验器材进行操作;二是applet图像显示区,对正负片切换的结果进行呈现,使学习者可以在虚拟环境交互后立即看到正负片切换的结果。
具体的实验过程是这样的:在虚拟场景中,将鼠标放在正负片转换按钮上按下去的时候,便发生交互,将交互产生的参数传递到Java applet中,Java再根据这个参数对图像进行正负片转换的处理,将变化了的图像显示出来。
2 视频展台正负片转换实验的实现
正片的色彩和实际拍摄的景物的色彩一致,如红是红,蓝是蓝[1];而负片的色彩和实际景物的色彩互为补色,如黑色被记录为白色,白色被记录为黑色,红色被记录为绿色[2]。
正负片转换操作的实现主要利用Java图像操作中图像像素的处理技术。原理是将图像像素读入数组,对每一个像素进行取反处理,再用处理后的像素重新组成图像,最后在applet中显示出来。本实验的目的是使正片变为负片,取反的方法就是用255减去像素原有的色彩值即可。
zf=changjing.Nodes(“zhengfujiedian”).Fields(“translation”).x;
document.applet.zfqh(zf);
“zf”便是从虚拟场景中产生的参数,这个参数是以一个节点x坐标值为基础的,这个x值是变化的,每单击一次正负片切换按钮,x值便变化一次。通过上面这个语句便将参数传递到Java中。Java根据这个参数对图像进行正负片转换处理,最后将处理好的图像显示出来。
2.2 正负片切换处理通过上一步的操作,Java获得正负片切换的参数,这一步的操作就是对像素进行取反操作,模拟正负片的转换。
首先,获取图像的全部像素,通过PixelGrabber函数将图像的像素读入到一个数组中[3]:PixelGrabber (Image bufinitig,int x,int y,int w,int h,int[] pixels,int off,int scansize)。其中,bufinitig是要读取的图像;x,y,w,h指明要抓取像素的一个矩形范围;pixels是保存像素的数组;off表示数组中存储第一个像素的位置偏移量,通常取0;scansize是数组中一行到下一行的距离,即每一行的扫描值,通常取图像的宽度。然后,将像素值取反,模拟正负片的切换。部分代码如下:
if(k==1){
ColorModel cm=ColorModel.getRGBdefault();
for(x=0;x { int alpha=255; int red=255-cm.getRed(pixels[x]); int green=255-cm.getGreen(pixels[x]); int blue=255-cm.getBlue(pixels[x]); pixels[x]=alpha<<24|red<<16|green<<8|blue; } } 其中,k是从虚拟场景传递过来的参数,是Java是否对图像像素进行取反的逻辑变量,为1的时候进行像素取反操作,将正片变为负片;为0时不进行取反操作,原样输出正片。将取反后的像素重新写入数组,再将改变后的像素组成图像显示在applet中,完成正负片的变化(图1)。 3 小结 本文只是实现视频展台虚拟实验的正负片转换功能,还有很多扩展的地方,如亮度变化、连续操作的转换等,不能一一细述,有待以后进一步完善。 参考文献 [1]正片[EB/OL].[2008-07-12].http://baike.baidu.com/view/215447.htm [2]负片[EB/OL].[2008-07-12].http://baike.baidu.com/view/215436.htm [3]李敏,丁友东.JAVA图形与动画编程实例[M].北京:清华大学出版社,2003