2012年1月17日 星期二

gnuplot所有的colornames及范例

这里列出gnuplot 4.4所有colorname及其代表的颜色:

white black dark-grey red web-green web-blue dark-magenta dark-cyan dark-orange dark-yellow royalblue goldenrod dark-spring-green purple steelblue dark-red dark-chartreuse orchid aquamarine brown yellow turquoise grey0 grey10 grey20 grey30 grey40 grey50 grey60 grey70 grey grey80 grey90 grey100 light-red light-green light-blue light-magenta light-cyan light-goldenrod light-pink light-turquoise gold green dark-green spring-green forest-green sea-green blue dark-blue midnight-blue navy medium-blue skyblue cyan magenta dark-turquoise dark-pink coral light-coral orange-red salmon dark-salmon khaki dark-khaki dark-goldenrod beige olive orange violet dark-violet plum dark-plum dark-olivegreen orangered4 brown4 sienna4 orchid4 mediumpurple3 slateblue1 yellow4 sienna1 tan1 sandybrown light-salmon pink khaki1 lemonchiffon bisque honeydew slategrey seagreen antiquewhite chartreuse greenyellow gray light-gray light-grey dark-gray slategray gray0 gray10 gray20 gray30 gray40 gray50 gray60 gray70 gray80 gray90 gray100

2011年5月27日 星期五

数码单反(DSLR)相机raw格式图片的读取和处理

随着消费用数码单反(DSLR)相机成本的下降和性能的提升,在很多要求不太高的科研场合DSLR相机可以用作昂贵的高档CCD数码相机的替代品。现在最新的数码相机可以提供14位A/D转换,而动态范围可以到达11档光圈以上【参考链接:12】,很多时候这已经可以满足要求了。一般摄影爱好者使用的JPEG图片格式只能存储8位的层次,而且JPEG图片压缩过程中会有失真,所以作为科研使用的DSLR相机必须使用raw图片格式。

一般各个消费用相机厂商都使用自己专有的raw格式,所以处理起来不像科研级相机那么直接。dcraw是一个Linux平台上的能将各主要品牌相机的raw格式图片转为Netpbm格式图片的小工具。Netpbm提供了一些工具软件,另外很多图像处理软件也包含对Netpbm格式的支持,所以可以在此基础上对图片进行进一步处理。

很多时候我们可能希望自己写代码来处理图片,因为:
  1. 很多图像处理软件只支持8位(或24位RGB)而不支持16位图片;
  2. 科研上用到的算法大都比较复杂,现有的软件不满足需求。
Netpbm可以把图片存成二进制文件或者纯文本(ascii)文件。无论哪种方式,开始的几行都是标识文件格式的纯文本信息,后面跟着是文件内容。

纯文本文件的好处是数值大小一目了然,但是文件比较大。二进制文件比较小,但是处理的时候需要注意:Netpbm存储文件时使用的是Big-endian方式,而一般x86机器都是使用Little-endian方式,所以在读取数据时要进行转换。glibc的endian.h提供这样的转换函数。二进制文件存储顺序是从上到下按行存储,每行内按从左到右顺序存储。

dcraw转换图片时默认使用8位方式,如果要使用16位方式,需要使用参数 -6

2011年5月24日 星期二

《Maxima快速参考手册1.1》

这是之前写的一份Maxima中文文档的更新版本。

2011年4月15日 星期五

Vim笔记(二)

  1. 分割窗口
    :split file2    把窗口分割成上下两半,在新开窗口打开文件file2
    :new    上下分割窗口,在新开窗口打开新文件
    CTRL-W w    切换窗口
    CTRL-W +    增大窗口尺寸
    CTRL-W -    缩小窗口尺寸
    :vsplit file2    左右分割窗口,在新开窗口打开文件file2
    CTRL-W h    切换到左边窗口,其他方向按j, k, l类推
    CTRL-W H    移动窗口到最左边,其他方向按J, K, L类推
    :qall    退出所有窗口,类似的有:wall
  2. 反复执行复杂命令
    q{register}    开启寄存器,开始记录命令,register可以是az中任何一个
    q    结束记录命令
    @{register}    执行寄存器{register}内所有命令
  3. 查找替换一段字符
    :[range]s/from/to/[flags]    将from替换为to[range]控制替换范围,[flags]表示一些控制参数
    常用[range]
    • .    当前行
    • $    文件最后一行
    • 1,5    第一行到第五行
    • %    全部文件
    • .+3    当前行之下第三行
    常用[flags]
    • g    替换所有匹配字符串,否则只替换第一个匹配
    • c    执行每一个替换之前寻求确认
  4. 可视化块模式
    CTRL-V    开启可视化块模式,用h,j,k,l选择块
    I{string}<Esc>    在块的左边每一行插入一段字符串
    A{string}<Esc>    在块的右边每一行加入一段字符串
    c{string}<Esc>    替换一个块的文字
    U    换为大写字母
    u    换为小写字母
    ~    大小写互换
  5. 数行合并
    J    数行合并,去除换行符