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

博文

Mathematica处理分子云数据的可能性(三)二维图像显示

已有 4453 次阅读 2012-12-26 09:14 |个人分类:知识|系统分类:科研笔记| Mathematica, 图像显示

     数据处理的另外一项重要的操作就是显示二维图像。前面已经提到(http://blog.sciencenet.cn/home.php?mod=space&uid=117333&do=blog&id=641804),用Mathematica读入FITS文件并不困难。直接用Import函数就可以了。比如(假设FITS文件是二维图像,三维图像(数据块)也容易转化为二维图像的情况)
a=Import["xxx.fits"]
这样读进来的严格说不是图像本身,而是以图像为元素的数组,我们感兴趣的是其中的元素,即图像本身。可以加一个指标得到图像本身
a=Import["xxx.fits"][[1]]
在实际工作中,除了显示图像,我们还希望能对图像进行标注,主要是加一个边框,标注上坐标。原则上这是容易实现的,就是把Plot画出的图和二维图像对齐叠画就行了。但是,实际的参数要摸索一下。看了Plot的文档之后发现,类似IDL,Plot可以不画数据,只画边框。IDL中是加一个参数 /NoData,而Mathematica更直接,把表达式的地方空着就行了。
p=Plot[,{x,0,1},PlotRange->{0,1},Frame->True]
其中Frame->True指定了要画出边框,否则只有坐标轴。但是这样画出来的框是固定大小的,无法和之前读入的图像匹配,还需要指定图像的大小和长宽比。
p=Plot[,{x,0,1},PlotRange->{0,1},Frame->True,ImageSize->{nx,ny},AspectRatio->ny/nx]
其中nx,ny是图像的长和宽的像素数。随后就可以叠画了。

Overlay[{a2,p},Alignment->Center]
但是这样是有问题的,因为读入图像默认是沾满整个“图像区域”的,而边框是不沾满整个图像区域的,因为边框下面还有标注什么的。于是我们还需要另外一个参数指定边框所占范围以及图像所占范围,这两个范围应该一致。这个参数就是ImagePadding(图像填充)。
a=Import["xxx.fits",ImagePadding->{{20,20},{20,20}}][[1]]
p=Plot[,{x,0,1},PlotRange->{0,1},Frame->True,ImageSize->{nx,ny},AspectRatio->ny/nx,ImagePadding->{{20,20},{20,20}}]
这样之后再
Overlay[{a2,p},Alignment->Center]
就可以把图像对齐了。其中ImagePadding后面的四个参数分别表示四个页边距。使用Export就可以生成图像文件。
Export["xxx.eps",Overlay[{a2,p},Alignment->Center]]



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

上一篇:Mathematica处理分子云数据的可能性(二)确定列表元素位置
下一篇:『读文献』(十二)恒星形成:慢速?快速?
收藏 IP: 159.226.169.*| 热度|

0

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

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

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

GMT+8, 2024-7-18 00:38

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部