人生的意义就是思考其意义分享 http://blog.sciencenet.cn/u/qianlivan 天体物理工作者,家乡云南昆明。

博文

流线卷积与矢量场纹理化

已有 5406 次阅读 2015-7-24 12:20 |个人分类:知识|系统分类:科研笔记| 流线卷积, 矢量场可视化, 纹理化

      早先,矢量场的可视化使用的是箭头,表现出一些点上流线切矢量的大小。这种理论上直观的图像看起来其实一点也不直观。如果你看过这种图的话,会有一种感觉,只有箭头能够收尾相连形成一些流线的时候,图看起来才比较直观。但是这不总能实现,尤其是某些点的切矢量比较大的情况。
      前段时间,组里的领导开会的时候看到了一张图,看起来就像油画一样,能看到背景图片,同时又能看到一些纹理,这些纹理就代表了磁场。一直以来都不知道这种图是怎么实现的,直到昨天问了Carl。他给了一个幻灯片,里面提到,这种方法叫做Line Integral Convolution,字面意思是线积分卷积。上网搜了一下,其实这种方法也不新,上世纪末就在计算机图形学中出现了,只不过天文学后知后觉,最近才有人引入。不过看了很多文档才终于明白原理。简单说,就是用一种在沿流线方向比较长,横截方向比较短的“波束”对图像(通常是白噪声)进行平滑(滤波),然后就可以得到一些“流线段”。这是一种非常聪明的方法。
      搞清楚了原理,写出程序来并不难,但是还是想偷懒。上网查了一下有没有IDL程序,确实有,不过是把C程序包装了一下(https://github.com/mgalloy/mglib)。下载下来总是出错。也有C写的程序(http://www.cs.utah.edu/~wmartin/cs523project/),但是编译不过。最终还是找到了python的解决方案(http://wiki.scipy.org/Cookbook/LineIntegralConvolution),这个程序包依赖于Cython,在Windows下总是安装不成功,倒是在Linux下比较干脆,可以生成图片,步骤如下:
python setup.py
python lic_demo.py
在想到在Linux下运行之前,我尝试对这个程序包中的核心程序lic.py进行了改写,实现了算法,不过效果稍微差一些,但是也算有点成就感吧。

texture.py

lic.pdf






https://blog.sciencenet.cn/blog-117333-907838.html

上一篇:思考题(三十)把真实放在一起是否一定为真实?
下一篇:Documentation of the Radio Telescope
收藏 IP: 159.226.171.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-23 02:30

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部