Navigate this Article


 

Measurement and Analyses of Avian Plumage Color   

How to cite Favorites Q&A Share your feedback Cited by

摘要:鸟类羽色的多样性是生物界中最吸引人的性状之一。随着鸟类特征演化、分类与系统发育以及演化机制研究的深入,对鸟类羽色的精确量化方法近来也有了一些新发展。由于人类与鸟类视觉系统的差异,在分析鸟类羽色数据时,应以鸟类视觉模型为基础开展研究。本文提供了利用光纤光谱仪量化鸟类羽色和基于鸟类图片提取羽色数据的常用方法,以及在鸟类视觉模型下进行反射光谱数据分析的流程,以期还原鸟类视角下的羽色表型特征,为鸟类分类与演化等多方向的研究提供可靠的数据。

关键词: 鸟类羽色, 反射光谱, 鸟类图片, 鸟类视觉模型, 性选择, 演化

研究背景

羽色是鸟类最重要的性状之一,对羽色及其多样性的形成机制的研究极大地推动了鸟类生态与演化等多方向的发展。在鸟类视觉模型的创建之前,研究多从人类视觉的角度对羽色进行描述与分析,但是这种分析会导致不准确甚至是完全相反的结论 (Bennett et al., 1997),因为人类与鸟类的视觉存在明显不同 (Hill and McGraw, 2006)。自20世纪90年代开始,多种鸟类视觉模型被创建出来 (Vorobyev and Osorio, 1998; Endler and Mielke, 2005),并在之后被用于多方向的鸟类研究之中 (Stoddard and Prum, 2008; Facchinetti et al., 2011; Burns and Shultz, 2012; Yang et al., 2015),成为一种可靠的羽色分析方法。然而鸟类视觉模型分析基于羽毛反射光谱数据,相对费时费力、不宜获得。因此,在进行包含众多物种的鸟类系统演化等方向的研究时,更多通过鸟类图片(主要是彩绘图)来获取鸟类羽色数据 (Dale et al., 2015),虽然此类数据无法进行视觉模型分析,但是相对容易获取、方便快捷。
    本文介绍两种鸟类羽色的测量方法,以及基于鸟类视觉模型对反射光谱数据进行可视化与分析的方法。

方法一:利用光谱仪测量鸟类羽毛反射光谱及鸟类视觉模型分析

材料与试剂

  1. 待测的鸟类活体、标本或羽毛

仪器设备

  1. AvaSpec-ULS2048光纤光谱仪 (北京爱万提斯科技有限公司)
  2. AvaLight-DHc全谱段紧凑型光源 (北京爱万提斯科技有限公司)
  3. 带标准反射探头的光纤线 (北京爱万提斯科技有限公司)
  4. WS-2参考瓦 (北京爱万提斯科技有限公司)
  5. 嵌入式固定器 (北京爱万提斯科技有限公司)

软件

  1. Avasoft 7.8 (北京爱万提斯科技有限公司)
  2. R version 4.0.3 (R Core Team, 2020)
  3. RStudio version 1.4.1106 (RStudio Team, 2021)
    注:方法一基于上述仪器设备与软件,它们已有许多更新型号与版本,使用方法也可能有变化,详细可咨询公司或查阅相关帮助文档。也可选用其他公司的光谱仪产品,如海洋光学 (Ocean Optics)。

实验步骤

一、准备工作

  1. 连接仪器设备
    1.1
    将所有样品材料与仪器设备置于暗室中,测量在暗室中进行 (或者在测量时将样品与探头置于纸箱中,以减少环境光线的影响)。
    1.2
    用光纤线将光谱仪和光源连接起来 (光纤线中连接光谱仪的光纤孔径小,连接光源的光纤孔径大,请勿混淆)。光谱仪连接电脑、光源连接外接电源进行供电。光源设置为DH模式 (即氘-卤素灯模式),需预热20 min以上。
    1.3
    光纤线探头置入固定器中固定,探头距离固定器出口约2 mm,测量时保持统一。
  2. 设置黑白平衡
    2.1
    打开Avasoft 7.8软件,在菜单栏中选择File → Start New Experiment,指定测量数据的保存路径与实验名称。
    2.2
    在编辑栏中设定Integration time (即积分时间) 为100 ms,Average为20。在按钮栏中点击Start,将光源设置为OFF状态,将带探头的固定器出口端抵在白色参考瓦上,待软件显示的光谱曲线稳定后点击按钮栏中的黑色框,保存黑平衡数据。
    2.3
    将光源设置为ON状态,将带探头的固定器出口端抵在白色参考瓦上,待光谱曲线稳定后点击按钮栏中的白色框,保存白平衡数据。
    2.4
    点击按钮栏中的R,将测量的数据设置为反射率 (Reflectance) 模式。若按钮栏中无R (而有T),选择菜单栏中Setup → Options中的View Reflectance instead of Transmittance选项。

二、测量反射光谱

  1. 测量鸟类活体或标本
    1.1
    以合适的手法握持待测 (活体或标本) 个体,使其保持稳定 (且不影响活体正常呼吸)。将固定器出口端抵在待测个体的某一待测部位的羽毛表面 (测量前应使待测部位的羽毛恢复自然),待反射光谱曲线稳定后点击按钮栏中的保存图标,输入数据名称并保存。数据名称应包含足够的信息 (如物种、个体编号、测量部位、测量重复、测量时间等等) 以便于以后追溯。
    1.2
    将固定器抵在该个体该部位的不同位置,再保存一个数据。同一个体的同一部位测量3个反射光谱数据形成重复。
    1.3
    继续测量该个体其他待测部位,直至所有个体测量完成。点击Stop结束测量。
  2. 测量鸟类羽毛
    2.1
    当待测样品不是完整个体而是零散羽毛时,将同一个体同一部位的羽毛部分堆叠放置于平面 (一片黑色天鹅绒面料,或者其他哑光材料) 上,羽毛正面 (即背面) 朝上,模拟该部位的羽毛在完整个体上的排列与展示方式。
    2.2
    将固定器抵在堆叠好的羽毛上进行测量。同一个体同一部位的羽毛测量3个反射光谱数据形成重复。所有个体的羽毛测量完成后,点击Stop结束测量。

注:

  1. 暗室 (或者纸箱) 的黑暗程度没有特定要求,在不影响操作的情况下尽量黑暗即可,实际更为重要的是保持整个实验过程中黑暗环境的一致。野外通常条件不佳,可以只是拉上房间的窗帘、利用纸箱或者置于树荫下来创造黑暗环境。
  2. 理想情况下,积分时间的设定,应使整个光谱曲线的最大值约为满量程的80-90%。Avasoft 7.8软件可以根据当前的光源等情况自动设置合适的积分时间。但 (在野外) 测量活鸟时,不宜设置过长的积分时间,否则反射光谱曲线不容易稳定,且会增加测量时间而影响活鸟状态。
  3. 积分时间只能在测量停止时 (即按钮栏显示Start而不是Stop) 进行设定,改变积分时间后需要重新保存黑白平衡数据。一个完整实验中,应始终保持积分时间一致,可进行预实验来确定合适的积分时间。
  4. 方法一中的测量重复指的是:在同一个体同一部位选择若干不同位置,每个位置测量一个反射光谱数据,形成该个体该部位的若干测量重复。位置数量以3-5个为佳。
  5. 测量时保持手和待测部位干燥。测量活鸟 (且待测部位较多) 时,应在保证测量质量的情况下加快测量速度,以减少对活鸟的影响。

数据分析

一、数据预处理

  1. 反射率模式下,测量的每个数据会保存2个文件,这2个文件名除了扩展名不同外其他部分完全相同。其中扩展名为TRM的文件包含有反射光谱数据;而扩展名为TCM的文件则包含有注释信息,可以附加到对应的反射光谱图中。
  2. 每个数据的文件名并不是测量该数据时输入并保存的数据名称,而是由实验名称和由0001开始的序号组成。例如,如果前面的准备工作中指定的实验名称为flycatcher,则保存的第一个数据名称为flycatcher0001.TRM和flycatcher0001.TCM,序号会自动递增。测量该数据时保存的数据名称则保存在TRM文件中。
  3. 在菜单栏中选择File → Convert Graph → To ASCII,在弹出的窗口中选中所有待分析的TCM文件,点击Open,TCM文件将被转换成扩展名为ttt (或TTT) 的文件 (可用记事本打开)。若弹出的窗口中看不到待分析的文件,检查窗口的Look in (即当前文件夹) 和Objects of type (即测量模式) 是否正确。
  4. 将所有转换成的ttt文件转移到一个新的文件夹中,并根据每个ttt文件中包含的数据名称来修改ttt文件名。ttt文件名要有统一的命名规范 (详见后面的数据处理),以方便后续分析,不必与数据名称完全一致,能够互相对应上即可。

二、数据的可视化

数据处理与后面的视觉模型分析将以绿背姬鹟 (green-backed flycatcher Ficedula elisae) 雄鸟腰部羽色在不同年龄段间的差异为例。绿背姬鹟雄鸟按其所处的年龄段可以分为SY (second-year)和ASY (after-second-year) 雄鸟,它们的羽色明显不同 (即羽色延迟成熟现象,delayed plumage maturation;Chen et al., 2019),尤其在腰部羽色上,ASY雄鸟的黄色与SY雄鸟的绿色在人类视角看来非常容易区分 (图1)。那么这种腰部羽色的差异在鸟类视角看来又是如何的呢?本例选用了2017年于北京百花山国家级自然保护区小龙门管理站测量的8只ASY雄鸟和13只SY雄鸟的腰部羽毛反射光谱数据,每只个体有3个测量重复。


1. 绿背姬鹟ASYSY雄鸟的腰部羽色。 A:ASY雄鸟;B:SY雄鸟。

  1. 在运行于RStudio version 1.4.1106 (RStudio Team, 2021) 软件的R version 4.0.3 (R Core Team, 2020) 软件中,安装并加载pavo version 2.6.1 (Maia et al., 2019) 扩展包。更改工作目录至待分析的ttt文件所处的文件夹,导入ttt文件中包含的反射光谱数据。
    #以下所有文字,">"为R代码,绿色部分为R输出,“#”为注释
    > install.packages(“pavo”)#安装扩展包pavo
    > library(pavo)#加载扩展包pavo
    > setwd("C:/Users/Sami David/Desktop/flycatcher")#更改工作目录至待分析的ttt文件所处的文件夹。分析其他数据时应根据实际情况修改本行代码里的文件夹路径
    > flycatcher <- getspec(ext = "ttt", lim = c(300, 700))#导入ttt文件中包含的反射光谱数据并保存为变量flycatcher,选取波段为300-700 nm (即鸟类的全光谱)
    >head(flycatcher[, c(1:6)])#展示已导入数据的前6行与前6列。第一列wl表示反射光谱的波长,递增幅度为常用的1 nm,而光纤光谱仪在测量时的递增幅度可能不是1 nm,这种转换是由上一行代码执行getspec功能时默认自动完成的


    flycatcher的第一列wl表示反射光谱的波长,波段为300-700 nm,递增幅度为1 nm。从第二列开始,每一列都是一个测量重复,列名对应了相应的ttt文件名。以第二列的a.r.06.1为例,a指代ASY雄鸟 (SY雄鸟则用s来指代),r指代腰部 (即rump),06指代个体编号,1指代该个体的第1个测量重复。其后每一列名 (同时也是对应的ttt文件名) 都符合这个命名规范,且长度保持一致。其他的数据与分析可以设计自己的命名规范,内部统一、简洁明确、便于追溯即可。第二列的每一行数值表示该次测量在相应波长测得的反射率,其后的每一列同理。
  2. 对每个测量重复进行反射光谱曲线的可视化,同一只个体的3个重复放在同一张图中,利用曲线图检查异常值的存在与否以及测量的可重复性,及时剔除异常的数据。本例无异常数据。取每只个体的3个重复测量的均值作为这只个体的腰部羽毛反射光谱数据。选取合适的平滑参数值,对这些均值数据进行平滑处理,以减少电噪声 (electrical noise) 等带来的不必要的反射光谱曲线的波动。同时去除反射光谱曲线中的负值,方法为:对曲线中每个波长下的反射率值,加上整个曲线的最小反射率负值的绝对值。至此,数据处理基本完成,作图查看ASY和SY雄鸟的腰部羽毛反射光谱曲线的差异。
    >explorespec(flycatcher, by = 3, scale = "equal")#对反射光谱曲线进行可视化,同一只个体的3个重复测量放在同一张图中,对数据进行检查
    > fmean <- aggspec(flycatcher, by = 3, FUN = mean)#取每只个体的3个重复测量的均值作为这只个体的腰部羽毛反射光谱数据并保存为变量fmean
    > head(fmean[, c(1:6)])


    > plotsmooth(fmean, minsmooth = 0.06, maxsmooth = 0.16, curves = 6)#在0.06-0.16的区间内,等间隔取6个平滑参数值,对每只个体的反射光谱曲线进行6次平滑处理并作图,根据图中曲线的平滑程度选择合适的平滑参数值,选取原则是使平滑后的曲线没有噪声且保持原始曲线的基本形状的最小平滑参数值,本例选择0.12为平滑参数值 (图2) 。注意0.06-0.16这一区间是适合本例的区间,在分析其他数据时需要通过尝试来确定适合该数据的区间
    > fmsmooth <- procspec(fmean, opt = "smooth", fixneg = "addmin", span = 0.12)#以0.12为平滑参数对每只个体的腰部羽毛反射光谱曲线进行平滑处理;同时去除光谱曲线中的负值,方法为对曲线中每个波长下的反射率值加上整个曲线的最小反射率负值的绝对值 (即fixneg = “addmin”)
    > ages <- substr(names(fmsmooth), 1, 1)[-1]#创建一个列名首字符的向量,同时去除第一列名wl的首字符w,只保留a和s,作为后面的分组标准 (即分为ASY和SY雄鸟两组)
    > ages
    [1] "a" "a" "a" "a" "a" "a" "a" "a" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s" "s"
    > aggplot(fmsmooth, ages, FUN.center = mean, FUN.error = sd, lcol = c("yellow2", "green4"), shadecol = c("yellow2", "green4"), legend = TRUE, lwd = 4)#以ages为分组标准,作这两类鸟的腰部羽毛反射光谱曲线图 (图3) ,图中数据的表现形式为mean ± sd,ASY雄鸟以黄色表示,SY雄鸟以绿色表示


    2. 合适的平滑参数值的选取。本例选择0.12为平滑参数值,即每张子图 (代表不同个体) 中的紫色曲线 (自上而下第3条曲线)。


    3. 绿背姬鹟ASYSY雄鸟腰部羽毛反射光谱曲线图。黄色为ASY雄鸟,绿色为SY雄鸟。曲线为均值,阴影为标准差。

三、视觉模型分析

根据反射光谱曲线的形状,利用扩展包pavo可以得到与明度 (value or brightness)、饱和度 (saturation) 和色相 (hue) 相关的23个参数 (详见Montgomerie, 2006),如有需要可用于分析中。鸟类与人类的视觉系统存在明显差异,对本例来说更重要的是将反射光谱数据放入鸟类视觉模型中进行分析。扩展包pavo所包含的鸟类视觉模型中,有青山雀 (Cyanistes caeruleus)、紫翅椋鸟 (Sturnus vulgaris) 和蓝孔雀 (Pavo cristatus) 这3个物种模型,以及2种鸟类平均模型。本例选用与绿背姬鹟亲缘关系最近的青山雀的视觉模型。鸟类的视觉系统非常保守 (Hunt et al., 2009),选用青山雀视觉模型而不是创建绿背姬鹟视觉模型不会对本例结论造成定性影响。当然,最理想的是创建研究物种自己的视觉模型 (详见Govardovskii et al., 2000; Hart and Vorobyev, 2005)。
        鸟类具有4种视锥细胞,即紫外、短波、中波和长波敏感 (ultraviolet‐, short‐wave‐, middle‐wave‐, and long‐wave‐sensitive) 视锥细胞,它们对不同颜色光的光子捕获 (quantum catch) 量是不同的 (即不同颜色光对它们的激发程度是不同的)。因此,在一个鸟类视觉模型中,估算四种视锥细胞对某一颜色光的光子捕获量,就能在鸟类视角下对这一颜色进行数字上的表征,进而能通过这些数字估算出不同的颜色在这个视觉模型里的差异或区分程度 (Vorobyev et al., 1998)。在估算区分程度时,感受器噪声限制模型 (receptor-noise limited model) 提供了一种计算不同颜色在感知上的距离 (perceptual distance) 的方法,它假定对颜色的辨别能力主要受限于光感受器噪声 (photoreceptor noise),在计算颜色距离时,对视锥细胞对不同颜色光的光子捕获量差异,利用视锥细胞的信噪比的倒数 (即Weber fraction) 进行加权,计算加权后的光子捕获量的欧几里得距离 (noise-weighted Euclidean distance),即为所用的鸟类视觉模型中不同颜色的颜色距离 (Vorobyev and Osorio, 1998)。颜色距离可以分为彩色距离 (chromatic distance, ΔS) 和非彩色距离 (achromatic distance, ΔL),本例只计算彩色距离。
        颜色距离以最小可觉差 (just noticeable difference, JND) 为单位 (这一点存在争议,有看法认为JND只是一种对比度阈值而不是一种单位)。在鸟类视觉模型下,当两个颜色的距离小于1 JND时,这两个颜色被认为在生理上是不可能被鸟类区分的 (Vorobyev et al., 2001)。这一阈值是在最理想的视觉环境下的阈值,而实际情况下的光源和背景等视觉环境并不理想,因此在实证研究中,多使用更为宽松的阈值,如2 JND (Osorio et al., 2004; Schaefer et al., 2007)。
> summary(fmsmooth)#获得与明度、饱和度和色相相关的23个参数
> ?summary.rspec#查看这23个参数的详细说明,或者查阅Montgomerie (2006)
> fmsvismodel <- vismodel(fmsmooth, visual = "bluetit", illum = "forestshade", trans = "bluetit", bkg = "green", relative = FALSE)#将所有个体的腰部羽毛反射光谱数据放入青山雀视觉模型中进行处理 (即visual = “bluetit”),光源设置为林荫 (即illum = "forestshade"),背景设置为绿叶 (即bkg = "green"),注意参数relative一定要设置为FALSE。光源的可选项还包括:理想光源 (“ideal”, homogeneous illuminance of 1 across wavelengths)、蓝天 (“bluesky”) 以及标准日光 (“D65”);背景的可选项还包括理想背景 (“ideal”, homogeneous illuminance of 1 across all wavelengths)
> fmsvbootcoldist <- bootcoldist(fmsvismodel, ages, noise = "neural", weber = 0.1)#以ages为分组标准,Weber fraction设置为0.1 (默认值),计算ASY和SY雄鸟腰部羽色在青山雀视觉模型中的颜色距离。运用了自举法 (bootstrap),默认重复1000次,得到所计算的颜色距离的95%置信区间
> plot(fmsvbootcoldist[, 1], ylim = c(0, 7), pch = 16, cex = 2, xaxt = "n", xlab = "Comparison", ylab = "Chromatic Distances (dS)")
> axis(1, at = 1, labels = "ASY vs. SY Males")
> segments(1, fmsvbootcoldist[, 2], 1, fmsvbootcoldist[, 3], lwd = 2)
> abline(h = 1, lty = 2, lwd = 2, col = "red2")
> abline(h = 2, lty = 2, lwd = 2, col = "gold2")#从plot至此的5行代码是对所计算的颜色距离的95%置信区间 (即变量fmsvbootcoldist) 进行作图 (图4),可以看到95%置信区间完全在2 JND阈值之上,表明ASY和SY雄鸟腰部羽色是可以被鸟类自己区分开的



4. 绿背姬鹟ASYSY雄鸟腰部羽色的彩色距离。黑点为bootstrap 1000次的彩色距离均值,黑点上下的竖线为95%置信区间。红和黄虚线分别为1和2 JND阈值。

注:

  1. 本例对反射光谱曲线的平滑处理是利用扩展包pavo进行的,也可以在测量时就利用Avasoft 7.8软件进行平滑处理。更推荐前者,在测量时保存更原始的数据或许是更好的选择。
  2. 对反射光谱曲线中负值的处理,除了本例中选用的方法外,还可以直接把曲线中所有的负值都替换为0。
  3. 绿背姬鹟是日行性鸟类,故本例只计算了彩色距离。对于夜行性动物,计算非彩色距离或许更合适。
  4. 无论颜色距离的阈值设定为1还是2 JND甚至是更高,它们都不是一个绝对客观的标准,且往往是基于研究对象以外的物种得出的。因此在解释颜色距离的结果并下结论时需要谨慎一些,有行为学等实验的结果来辅助说明更好。
  5. 对同一部位的羽色进行比较时,过去的研究通常用每组的平均羽色 (对本例来说就是,将ASY雄鸟所有个体的腰部羽毛反射光谱数据进行平均来得到ASY雄鸟的平均羽色) 来进行比较,这样只能得到一个单一的颜色距离值,无法进行统计检验;或者得到所有组间两两比较的颜色距离值后再取均值和标准差,这样可以进行统计检验,但是混合了组内和组间变异。这两种方法实际上都不合适,且它们的结果往往有较大的差异。按照Maia and White (2018) 的建议,本例中的自举法更为合理可靠。
  6. 初次进行视觉模型分析时,建议将扩展包pavo的Vignettes通读一遍 (见https://cran.r-project.org/web/packages/pavo/index.html)。

方法二:基于鸟类图片的羽色提取与分析

实验步骤

一、准备工作

  1. 获取测量图片
    可通过Birds of the World (https://birdsoftheworld.org/bow/home) 等开放版权的在线鸟类图片数据库下载待测量的鸟类物种图片,以英文名保存,以便后续分析读入。待测量图片也可以从其他途径获得,但需要排除不同途径的系统差异的因素,如果是拍摄的照片,需要在拍摄时设定相同的拍摄条件,例如灯光、设备等,拍摄后的照片需要使用色卡进行颜色的校正。
  2. 安装软件包
    在运行于RStudio version 1.4.1106 (RStudio Team, 2021) 软件的R version 4.0.3 (R Core Team, 2020) 软件中,安装并加载colorZapper version 1.4.7 (Valcu et al., 2014) 扩展包,及其依赖的扩展包usethis version 2.0.0 (Wickham et al., 2019) 和devtools version 2.3.2 (Wickham et al., 2016)。
    > library(usethis)#加载扩展包usethis,若没有则输入install.packages(“usethis”) 下载
    > library(devtools)#加载扩展包devtools,若没有则输入install.packages(“devtools”) 下载
    > devtools::install_github("mpio-be/colorZapper")#1. 使用devtools下载colorZapper扩展包
    > install_github("mpio-be/colorZapper", force = TRUE)#2. 从github下载colorZapper扩展包 (需要网速较好),与上一行代码二选一即可
    > library(colorZapper)#加载colorZapper扩展包

二、提取RGB数据

导入待测量的图片文件,并同时创建临时文件夹作为colorZapper工作路径,关联colorZapper工作路径和待测量的图片文件,测量后所有标记了取色区域的图片将保存在colorZapper的工作路径中。
> dir <- "/Users/mac/Desktop/Project/Sexual\ dichromatism/HBW_Phasianidae"#导入待测量图片
> cz_file <- tempfile(fileext = ".sqlite")#创建临时文件夹,用于储存测量标记的文件
> CZopen(path = cz_file)#将colorZapper工作路径设置为该文件夹,路径正常则输出TRUE
[1] TRUE
> CZaddFiles(dir)#关联colorZapper文件和待测量图片文件,输出为文件夹中导入的图片数量
297 image files
> tempfile()#显示临时文件储存路径
[1] "/var/folders/k5/j7v679vn0dv5m0208gvb4rym0000gn/T//RtmpukTaxO/file39cf32efb5e7"
> CZshowStatus()#检查导入图片的状态,图片文件名对应的id用于后续提取RGB颜色。



        选取待测图片中感兴趣的部分作为后续提取RGB颜色的区域,使用colorZapper进行交互式的区域选取,运行代码后,待测量的图片显示在RStudio右下角的面板中,通过鼠标点击的方法可以进行测量区域的选取。选取区域的方式有两种:第一种方式使用多边形定义区域,按照首尾相接的顺序描点形成多边形区域,每完成一个多边形定义,按ESC键结束,继续进行下一个多边形的定义,直到完成参数输入的所有区域,程序自动结束;第二种方式使用点定义区域,通过点击选取区域,完成参数输入的区域时,程序自动结束。在示例中我们选取前额、头冠、颈背、喉咙、上胸部、下胸部、脸颊、眼周共八个斑块,对于前七个区域使用多边形定义区域,对于眼周使用点定义区域 (图5)。
> CZdefine(polygons = 1, marks = c("forehead", "crown", "nape", "throat", "upper_breast", "lower_breast", "face"), what = 10)#多边形定义区域,polygons为每个斑块选取的多边形数目,marks定义斑块的名字,what输入将要选取区域的图片id,每张图片选取区域完成后按ESC键退出
> CZdefine(points = 5, marks = c("lore") , what = 6)#点定义区域,points为每个斑块选取的点的数目,marks定义斑块的名字,what输入将要选取区域的图片id,每张图片选取区域完成后按ESC键退出



5. 待提取RGB的区域示意图

对于多边形定义的区域,colorZapper从选取的区域中随机提取像素点的RGB数值;对于点定义的区域,colorZapper提取选取点的RGB数值。
> CZextractROI()#提取RGB值
> b <- CZdata(what = "ROI")#提取数据,以数据框形式赋值给b
> scales::show_col(b$hexCol)#绘制RGB颜色图 (图6)



图6. RGB颜色图。每个方格代表一个像素点所提取的RGB颜色,#部分文字代表该颜色的RGB命名,自上而下,从左到右按照参数定义的区域顺序排列。

> CZcheck()#检查测量图片选取区域
最后,通过测量可以获得每个区域若干个像素点的RGB数据,作为csv表格读出,供后续分析使用。
> write.csv(b, file = "/Users/mac/Desktop/1_Xenoperdix_udzungwensis.csv")#读出数据表格

数据分析

一、RGB数据的可视化

  1. 安装并加载scatterplot3d (Ligges and Mächler, 2003) 和rgl (Adler et al., 2003) 扩展包
    > install.packages("scatterplot3d")
    > install.packages("rgl")
    > library(scatterplot3d)
    > library(rgl)
  2. 在上述的实验方法中我们已经对每个斑块获得了一组RGB数值,通过对每个斑块的RGB数据计算平均值,可以对于每个斑块获得一个RGB数值,接着更改工作目录至文件所在的文件夹,将计算后的文件读入RStudio。
    > setwd("/Users/mac/Desktop/Project/Sexual\ dichromatism/R_csv")#更改工作目录
    > plot_patch <- read.csv("/Users/mac/Desktop/Project/Sexual\dichromatism/R_csv/RGB_patch.c sv", header = TRUE)#读入计算后的文件
  3. 定义RGB色彩空间,将R,G,B分别赋值于x,y,z轴,同时以R,G,B的数值定义颜色,范围为 (0~255,0~255,0~255)。
    > attach(plot_patch)#将读入后的文件添加到搜索路径
    > x <- R <- plot_patch$R#将R,G,B分别赋值于色彩空间的x,y,z轴
    > y <- G <- plot_patch$G
    > z <- B <- plot_patch$B
    > colors <- plot_patch[, c(3, 4, 5)]#提取RGB3列数值用于颜色定义
    > colors_norm <- colors * (1/255)#修改读入的RGB数值为RGB颜色的格式
    > print(colors_norm)#显示修改后的RGB数值
    R                 G                  B
    1  0.2619722   0.2188636   0.1718048
    > colors_hex <- rgb(colors_norm)#以RGB数值定义色彩空间的颜色
    > print(colors_hex)#显示定义后的RGB颜色名
    [1] "#43382C" "#B07C46" "#2D291F" "#6C5542" "#615C53" "#4B3C2C" "#B57D43" "#6D655C" "#5E5342" "#42382C"
    [11] "#2D2520" "#D0A480" "#A6A5A5" "#6E5C44" "#DFA162" "#8D8883" "#B35C36" "#D07B41" "#CD7946" "#BB9062"
  4. 将RGB数值投影到3d的色彩空间并保存,保存3d色彩空间有两种方式,第一种可以使用图片的方式进行保存(图7),第二种可以通过gif的方式保存动图。
    > plot3d(x, y, z, size = 1, col = colors_hex, type = "s")#将RGB数值投影到3d的色彩空间
    > rgl.set(1)#设定保存的device窗口id,括号内为id编号
    > rgl.postscript("plot1.pdf", "pdf", drawText = TRUE)#以图片的形式保存plot3d
    > movie3d(spin3d(axis = c(0, 0, 1)),#以gif的形式保存plot3d
                   duration = 8,#gif播放持续的时间
                   dir = getwd(),#保存的文件夹
                   movie = "plot3d",#保存的名字
                   startTime = -0.5)#开始播放gif的时间



    7. RGB色彩空间示意图。 每个点代表一个颜色斑块,x:R;y:G;z:B。

二、RGB数据处理

  1. 通过colorzapper的颜色提取,我们可以得到带有RGB、以及hsv数据的csv表格。读入该表格,对每个斑块的RGB数据求均值可以得到每个个体8个斑块的数据表。
    > a <- read.csv("/Users/mac/Desktop/1_Xenoperdix_udzungwensis_f.csv")#读入数据表格
    > b <- aggregate(a[, 2:4], by = list(a[, 6]), FUN = mean)#提取表格中的RGB数据,并按斑块分类求均值
    > b#求均值后的表格如下:



  2. 类似于反射光谱数据,RGB数据同样可以进行颜色距离的计算,只是并不基于鸟类视觉模型。RGB数据求颜色距离相当于在三维空间中计算距离,因此我们使用欧几里得距离的计算公式,使用Excel完成计算。

致谢

感谢夏灿玮博士对本文羽毛反射光谱测量及鸟类视觉模型分析提供的帮助。感谢审稿人和编辑对本文提出的宝贵修改建议。

本文第一种方法已发表于:Chen, G., Xia, C., Dong, L., Lyu, N. and Zhang, Y. (2019). Delayed plumage maturation in green-backed flycatchers (Ficedula elisae): an evidence of female mimicry. Ethology 125(1): 64-72.

参考文献

  1. Adler, D., Nenadic, O. and Zucchini, W. (2003). RGL: a R-library for 3D visualization with OpenGL. Proceedings of the 35th Symposium of the Interface: Computing Science and Statistics.
  2. Anderson, W. (2011). Handbook of the birds of the world. Q Rev Biol 86.
  3. Bennett, A. T. D., Cuthill, I. C., Partridge, J. C. and Lunau, K. (1997). Ultraviolet plumage colors predict mate preferences in starlings. P Natl Acad Sci USA 94(16): 8618-8621.
  4. Burns, K. J. and Shultz, A. J. (2012). Widespread cryptic dichromatism and ultraviolet reflectance in the largest radiation of neotropical songbirds: implications of accounting for avian vision in the study of plumage evolution. Auk 129(2): 211-221.
  5. Chen, G., Xia, C., Dong, L., Lyu, N. and Zhang, Y. (2019). Delayed plumage maturation in green-backed flycatchers (Ficedula elisae): an evidence of female mimicry. Ethology 125(1): 64-72.
  6. Dale, J., Dey, C., Delhey, K., Kempenaers, B. and Valcu, M. (2015). The effects of life history and sexual selection on male and female plumage colouration. Nature 527(7578): 367-370.
  7. Endler, J. A. and Mielke, P. W. (2005). Comparing entire colour patterns as birds see them. Biol J Linn Soc 86(4):405-431.
  8. Facchinetti, C., Mahler, B., Di Giacomo, A. G. and Reboreda, J. C. (2011). Stages of plumage maturation of the tawny-bellied seedeater: evidence of delayed plumage maturation and cryptic differentiation between juveniles and females. Condor 113(4): 907-914.
  9. Govardovskii, V. I., Fyhrquist, N., Reuter, T., Kuzmi, D. G. and Donner, K. (2000). In search of the visual pigment template. Visual Neurosci 17(4): 509-528.
  10. Hart, N. S. and Vorobyev, M. (2005). Modelling oil droplet absorption spectra and spectral sensitivities of bird cone photoreceptors. J Comp Physiol A 191(4): 381-392.
  11. Hill, G. E. and McGraw, K. J. (2006). Bird coloration, volume I: mechanisms and measurements. Harvard University Press, Cambridge, Massachusetts.
  12. Hunt, D. M., Carvalho, L. S., Cowing, J. A. and Davies, W. L. (2009). Evolution and spectral tuning of visual pigments in birds and mammals. Philos T R Soc B 364(1531): 2941-2955.
  13. Ligges, U. and Mächler, M. (2002). Scatterplot3d - an R package for visualizing multivariate data.
  14. Maia, R., Gruson, H., Endler, J. A. and White, T. E. (2019). pavo 2: new tools for the spectral and spatial analysis of colour in R. Methods Ecol Evol 10(7): 1097-1107.
  15. Maia, R. and White, T. E. (2018). Comparing colors using visual models. Behavl Ecol 29(3): 649-59.
  16. Montgomerie, R. (2006). Analyzing colors. In: Hill, G. E. and McGraw, K. J. (Eds.). In: Bird coloration, volume 1: mechanisms and measurements. Harvard University Press, 90-147.
  17. Osorio, D, Smith, A. C., Vorobyev, M. and Buchanan-Smith, H. M. (2004). Detection of fruit and the selection of primate visual pigments for color vision. Am Nat 164(6): 696-708.
  18. R Core Team. (2020). R: a language and environment for statistical computing. Available from https://www.R-project.org/.
  19. RStudio Team. (2021). RStudio: integrated development environment for R. Available fromhttp://www.rstudio.com/.
  20. Schaefer, H. M., Schaefer, V. and Vorobyev, M. (2007). Are fruit colors adapted to consumer vision and birds equally efficient in detecting colorful signals? Am Nat 169(S1): S159-S169.
  21. Stoddard, M. C. and Prum, P. O. (2008). Evolution of avian plumage color in a tetrahedral color space: a phylogenetic analysis of New World buntings. Am Nat 171(6): 755-776.
  22. Valcu, M. and Dale, J. (2014). color Zapper: color extraction utilities. R package version 1.0. Available from https://github.com/valcu/colorZapper.
  23. Vorobyev, M., Brandt, R., Peitsch, D., Laughlin, S. B. and Menzel, R. (2001). Colour thresholds and receptor noise: behaviour and physiology compared. Vision Res 41(5): 639-653.
  24. Vorobyev, M. and Osorio, D. (1998). Receptor noise as a determinant of colour thresholds. Philos T R Soc B 265(1394): 351-358.
  25. Vorobyev, M., Osorio, D., Bennett, A. T. D., Marshall, N. and Cuthill, I. (1998). Tetrachromacy, oil droplets and bird plumage colours. J Comp Physiol A 183(5): 621-633.
  26. Wickham, H. and Bryan, J. (2019). usethis: automate package and project setup. Available fromhttps://github.com/r-lib/usethis.
  27. Wickham, H. and Chang, W. (2016). Devtools: tools to make developing r packages easier.
  28. Yang, C., Wang, L., Cheng, S., Hsu, Y., Stokke, B. G., Røskaft, E., Moksnes, A., Liang, W. and Møller, A. P. (2015). Deficiency in egg rejection in a host species as a response to the absence of brood parasitism. Behavl Ecol 26(2): 406-415.
Please login or register for free to view full text
Copyright: © 2021 The Authors; exclusive licensee Bio-protocol LLC.
引用格式:陈功, 李铮, 张雁云, 董路. (2021). 鸟类羽色的测量与分析. Bio-101: e1010659. DOI: 10.21769/BioProtoc.1010659.
How to cite: Chen, G., Li, Z., Zhang, Y.Y. and Dong, L. (2021). Measurement and Analyses of Avian Plumage Color. Bio-101: e1010659. DOI: 10.21769/BioProtoc.1010659.
Q&A
By submitting a question/comment you agree to abide by our Terms of Service. If you find something abusive or that does not comply with our terms please contact us at eb@bio-protocol.org.

If you have any questions/comments about this protocol, you are highly recommended to post here. We will invite the authors of this protocol as well as some of its users to address your questions/comments. To make it easier for them to help you, you are encouraged to post your data including images for the troubleshooting.

If you have any questions/comments about this protocol, you are highly recommended to post here. We will invite the authors of this protocol as well as some of its users to address your questions/comments. To make it easier for them to help you, you are encouraged to post your data including images for the troubleshooting.

We use cookies on this site to enhance your user experience. By using our website, you are agreeing to allow the storage of cookies on your computer.