Goal: Assess the effect of different illuminators on
radiance and reflectance readings of the White Reference (WR).
require(ggplot2)
require(plotly)
library(RColorBrewer)
require(prospectr)
library(soilspec)
#NOTE: there is also asdreader::get_spectra() (see EspCrater_FS3_nb.Rmd)
# > getwd()
# [1] "/media/alobo/DecepNTFS2/HSI_Lab/Testllum_20230706/Rtestllum_20230706"
dirdat <- ".."
1. Reading data
#Done in datadoc_log.R:
# f <- list.files(dirdat, patt=glob2rx("*.asd"))
# f2 <- substring(f,9)
# f2 <- unlist(strsplit(f2,".asd"))
# f3 <- data.frame(file=f, type=f2, time=file.mtime(file.path(dirdat,f)))
# f3 <- f3[order(f3$time),]
# #write.csv(f3, file="testllum_20230706_samples.csv", row.names = FALSE)
# #edited to become "testllum_20230706_samples_v2.csv"
f <- read.csv("testllum_20230706_samples_v2.csv", stringsAsFactors = FALSE)
f$ID <- paste0(f$type,"_",f$replicate)
f <- na.omit(f)
f <- f[f$type!="X",]
3. White reference spectra with each illumination type
3.1 Radiance
g1 <- ggplot(data=d.lf) +
geom_line(aes(x=w, y=r, color=type, group=file), linewidth=0.3) +
xlab("Wavelength") + ylab("Radiance (DN)") +
scale_color_brewer(palette = "Set1")
ggplotly(g1+ggtitle("All readings"))
g2 <- ggplot(data=d.lf[d.lf$self_opt=="Y",]) +
geom_line(aes(x=w, y=r, color=type, group=file), linewidth=0.3) +
xlab("Wavelength") + ylab("Radiance (DN)") +
scale_color_brewer(palette = "Set1")
#ggplotly(g2 + ggtitle("Readings with self-optimization only"))
ggplotly(g2 + facet_wrap(~grade, nrow=2) + ggtitle("Readings with self-optimization only"))
3.2 Reflectance
g4 <- ggplot(data=d.lf[d.lf$self_opt=="Y",]) +
[WARNING] Deprecated: --self-contained. use --embed-resources --standalone
geom_line(aes(x=w, y=s, color=type, group=file), linewidth=0.3) +
#geom_point(aes(x=Wavelength, y=Reflectance,color=site, group=file)) +
xlab("Wavelength") + ylab("Reflectance") +
scale_color_brewer(palette = "Set1")
ggplotly(g4 + facet_wrap(~grade, nrow=2) + ggtitle("Readings with self-optimization only"))
The behavior of the first 2 spectra with the ASD illuminator might be
consequence of not having waited for warm-up.
4. Comparison of consumer grade bulbs
4.1 Radiance
dK <- d.lf[d.lf$self_opt=="Y" & d.lf$type=="KAISER", c(9,10,12)]
[WARNING] Deprecated: --self-contained. use --embed-resources --standalone
dV <- d.lf[d.lf$self_opt=="Y" & d.lf$type=="VILALTA_2",c(9,10,12)]
#head(dK)
#head(dV)
dKV <- cbind(dK,rV=dV$r, sV=dV$s)
#head(dKV)
names(dKV)[2:3] <- c("rK", "sK")
dKV$detector <- "1"
dKV$detector[dKV$w>1000 & dKV$w<=1800] <- "2"
dKV$detector[dKV$w>1800] <- "3"
g3 <- ggplot(data=dKV) +
geom_point(aes(x=rK,y=rV, color=detector),size=0.5,alpha=0.5)+
xlab("Kaiser") + ylab("Vilalta") +
theme(aspect.ratio = 1) +
ggtitle("Radiance (DN) Vilalta vs Kaiser bulbs")
#print(g3 + facet_wrap(~detector, ncol=2, scales="free"))
ggplotly(g3)
g3b <- ggplot(data=dKV) +
geom_point(aes(x=sK,y=sV, color=detector),shape=21, size=0.5)+
xlab("Kaiser") + ylab("Vilalta") +
theme(aspect.ratio = 1) +
ggtitle("Reflectance: Vilalta vs Kaiser bulbs")
#print(g3 + facet_wrap(~detector, ncol=2, scales="free"))
ggplotly(g3b)
This makes sense, as we have a uniform white target, thus the
observed variability of the reflectance readings is not related to that
of the target and the 2 spectra are independent.
#d.lfsel <- d.lf[d.lf$self_opt=="Y" & d.lf$grade == "consumer",]
d.lfsel <- d.lf[d.lf$self_opt=="Y" & d.lf$ID!="ASD_1_1" & d.lf$ID!="ASD_1_2",]
g3c <- ggplot(data=d.lfsel) +
geom_boxplot(aes(x=type,y=s, color=type),notch = TRUE) +
xlab("Illuminator") + ylab("Reflectance") +
facet_wrap(~grade, scales="free_x") +
ggtitle("WR Reflectance by illuminators")
ggplotly(g3c)
NA
Note: The 2 weird initial ASD_1 spectra have not
been taken into consideration for this boxplot.
6. Conclusions
- Pattern of performance is different for each detector.
- Consumer-grade bulbs are less powerful, in particular < 1000 nm
(detector 1).
- The sinusoidal variability observed in the lab with the
consumer-grade bulbs is clearly visible in the reflectance spectra >
1000 nm
- Consumer-grade bulbs seem ok < 1000 nm (thus for the IQ), but
cannot be used > 1000 nm
- Consumer-grade bulbs VILALTA and KAISER are not dignificantly
different.
- The best illuminator appears to be PROLAMP.
- We should assess the actual effect of the different
illuminators on the reflectance of the standard reference, as this is
what is the most interesting from a user’s perspective.
LS0tCnRpdGxlOiAnUmFkaWFuY2UgYW5kIFJlZmxlY3RhbmNlIHNwZWN0cmEgdW5kZXIgZGlmZmVyZW50IGxhYiBpbGx1bWluYXRvcnMnCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICB0b2M6IG5vCiAgICB0b2NfZmxvYXQ6IG5vCi0tLQoKKiBBZ3VzdGluLkxvYm9AZ2VvM2Jjbi5jc2ljLmVzCiogMjAyMzA3MDYKCioqR29hbCoqOiBBc3Nlc3MgdGhlIGVmZmVjdCBvZiBkaWZmZXJlbnQgaWxsdW1pbmF0b3JzIG9uIHJhZGlhbmNlIGFuZCByZWZsZWN0YW5jZSByZWFkaW5ncyBvZiB0aGUgV2hpdGUgUmVmZXJlbmNlIChXUikuCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpyZXF1aXJlKGdncGxvdDIpCnJlcXVpcmUocGxvdGx5KQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKcmVxdWlyZShwcm9zcGVjdHIpCmxpYnJhcnkoc29pbHNwZWMpCiNOT1RFOiB0aGVyZSBpcyBhbHNvIGFzZHJlYWRlcjo6Z2V0X3NwZWN0cmEoKSAoc2VlIEVzcENyYXRlcl9GUzNfbmIuUm1kKQoKIyA+IGdldHdkKCkKIyBbMV0gIi9tZWRpYS9hbG9iby9EZWNlcE5URlMyL0hTSV9MYWIvVGVzdGxsdW1fMjAyMzA3MDYvUnRlc3RsbHVtXzIwMjMwNzA2IgoKZGlyZGF0IDwtICIuLiIKYGBgCgojIyAxLiBSZWFkaW5nIGRhdGEKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KI0RvbmUgaW4gZGF0YWRvY19sb2cuUjoKIyBmIDwtIGxpc3QuZmlsZXMoZGlyZGF0LCBwYXR0PWdsb2IycngoIiouYXNkIikpCiMgZjIgPC0gc3Vic3RyaW5nKGYsOSkKIyBmMiA8LSB1bmxpc3Qoc3Ryc3BsaXQoZjIsIi5hc2QiKSkKIyBmMyA8LSBkYXRhLmZyYW1lKGZpbGU9ZiwgdHlwZT1mMiwgdGltZT1maWxlLm10aW1lKGZpbGUucGF0aChkaXJkYXQsZikpKQojIGYzIDwtIGYzW29yZGVyKGYzJHRpbWUpLF0KIyAjd3JpdGUuY3N2KGYzLCBmaWxlPSJ0ZXN0bGx1bV8yMDIzMDcwNl9zYW1wbGVzLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQojICNlZGl0ZWQgdG8gYmVjb21lICJ0ZXN0bGx1bV8yMDIzMDcwNl9zYW1wbGVzX3YyLmNzdiIKCmYgPC0gcmVhZC5jc3YoInRlc3RsbHVtXzIwMjMwNzA2X3NhbXBsZXNfdjIuY3N2Iiwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQpmJElEIDwtIHBhc3RlMChmJHR5cGUsIl8iLGYkcmVwbGljYXRlKQpmIDwtIG5hLm9taXQoZikKZiA8LSBmW2YkdHlwZSE9IlgiLF0KYGBgCgojIyAyLiBCdWlsZCBkYXRhIGZyYW1lIChsb25nIGZvcm1hdCkKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KZC5sZiA8LSAgTlVMTApmb3IgKGkgaW4gMTpucm93KGYpKSB7CiAgciA8LSByZWFkQVNEKGZpbGUucGF0aChkaXJkYXQsZiRmaWxlW2ldKSwgb3V0X2Zvcm1hdCA9ICdsaXN0JylbWzFdXSRyYWRpYW5jZQogIHJmIDwtIHJlYWRBU0QoZmlsZS5wYXRoKGRpcmRhdCxmJGZpbGVbaV0pLCBvdXRfZm9ybWF0ID0gJ2xpc3QnKVtbMV1dJHJlZmVyZW5jZQogIHMgPC0gcmVhZEFTRChmaWxlLnBhdGgoZGlyZGF0LGYkZmlsZVtpXSksIG91dF9mb3JtYXQgPSAnbGlzdCcpW1sxXV0kcmVmbGVjdGFuY2UKICB3IDwtIHJlYWRBU0QoZmlsZS5wYXRoKGRpcmRhdCxmJGZpbGVbaV0pLCBvdXRfZm9ybWF0ID0gJ2xpc3QnKVtbMV1dJHdhdmVsZW5ndGgKICAjc2MgPC0gc3BsaWNlQ29ycmVjdGlvbihzLHdhdj13LCBzcGxpY2UgPSBjKDEwMDAsIDE4MDApKQogIGQubGYgPC0gcmJpbmQoZC5sZixkYXRhLmZyYW1lKGZbaSxdLHcscixyZixzKSkKICAjZCA8LSBjYmluZChkLCkKfQpoZWFkKGQubGYsMykKYGBgCiMjIDMuIFdoaXRlIHJlZmVyZW5jZSBzcGVjdHJhIHdpdGggZWFjaCAgIGlsbHVtaW5hdGlvbiB0eXBlCiMjIyAzLjEgUmFkaWFuY2UKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CmcxIDwtIGdncGxvdChkYXRhPWQubGYpICsKICBnZW9tX2xpbmUoYWVzKHg9dywgeT1yLCBjb2xvcj10eXBlLCBncm91cD1maWxlKSwgbGluZXdpZHRoPTAuMykgKwogIHhsYWIoIldhdmVsZW5ndGgiKSArIHlsYWIoIlJhZGlhbmNlIChETikiKSArIAogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKQpnZ3Bsb3RseShnMStnZ3RpdGxlKCJBbGwgcmVhZGluZ3MiKSkKCmcyIDwtIGdncGxvdChkYXRhPWQubGZbZC5sZiRzZWxmX29wdD09IlkiLF0pICsKICBnZW9tX2xpbmUoYWVzKHg9dywgeT1yLCBjb2xvcj10eXBlLCBncm91cD1maWxlKSwgbGluZXdpZHRoPTAuMykgKwogIHhsYWIoIldhdmVsZW5ndGgiKSArIHlsYWIoIlJhZGlhbmNlIChETikiKSArIAogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKQojZ2dwbG90bHkoZzIgKyBnZ3RpdGxlKCJSZWFkaW5ncyB3aXRoIHNlbGYtb3B0aW1pemF0aW9uIG9ubHkiKSkKZ2dwbG90bHkoZzIgKyBmYWNldF93cmFwKH5ncmFkZSwgbnJvdz0yKSArIGdndGl0bGUoIlJlYWRpbmdzIHdpdGggc2VsZi1vcHRpbWl6YXRpb24gb25seSIpKQpgYGAKCiMjIDMuMiBSZWZsZWN0YW5jZQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xMH0KZzQgPC0gZ2dwbG90KGRhdGE9ZC5sZltkLmxmJHNlbGZfb3B0PT0iWSIsXSkgKwogIGdlb21fbGluZShhZXMoeD13LCB5PXMsIGNvbG9yPXR5cGUsIGdyb3VwPWZpbGUpLCBsaW5ld2lkdGg9MC4zKSArCiAgI2dlb21fcG9pbnQoYWVzKHg9V2F2ZWxlbmd0aCwgeT1SZWZsZWN0YW5jZSxjb2xvcj1zaXRlLCBncm91cD1maWxlKSkgKwogIHhsYWIoIldhdmVsZW5ndGgiKSArIHlsYWIoIlJlZmxlY3RhbmNlIikgKyAKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIikKZ2dwbG90bHkoZzQgKyBmYWNldF93cmFwKH5ncmFkZSwgbnJvdz0yKSArIGdndGl0bGUoIlJlYWRpbmdzIHdpdGggc2VsZi1vcHRpbWl6YXRpb24gb25seSIpKQpgYGAKVGhlIGJlaGF2aW9yIG9mIHRoZSBmaXJzdCAyIHNwZWN0cmEgd2l0aCB0aGUgQVNEIGlsbHVtaW5hdG9yIG1pZ2h0IGJlIGNvbnNlcXVlbmNlIG9mIG5vdCBoYXZpbmcgd2FpdGVkIGZvciB3YXJtLXVwLgoKIyMgNC4gQ29tcGFyaXNvbiBvZiBjb25zdW1lciBncmFkZSBidWxicwojIyMgNC4xIFJhZGlhbmNlCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTh9CmRLIDwtIGQubGZbZC5sZiRzZWxmX29wdD09IlkiICYgZC5sZiR0eXBlPT0iS0FJU0VSIiwgYyg5LDEwLDEyKV0KZFYgPC0gZC5sZltkLmxmJHNlbGZfb3B0PT0iWSIgJiBkLmxmJHR5cGU9PSJWSUxBTFRBXzIiLGMoOSwxMCwxMildCiNoZWFkKGRLKQojaGVhZChkVikKCmRLViA8LSBjYmluZChkSyxyVj1kViRyLCBzVj1kViRzKQojaGVhZChkS1YpCm5hbWVzKGRLVilbMjozXSA8LSBjKCJySyIsICJzSyIpCmRLViRkZXRlY3RvciA8LSAiMSIKZEtWJGRldGVjdG9yW2RLViR3PjEwMDAgJiBkS1Ykdzw9MTgwMF0gPC0gIjIiCmRLViRkZXRlY3RvcltkS1Ykdz4xODAwXSA8LSAiMyIKCmczIDwtIGdncGxvdChkYXRhPWRLVikgKwogIGdlb21fcG9pbnQoYWVzKHg9cksseT1yViwgY29sb3I9ZGV0ZWN0b3IpLHNpemU9MC41LGFscGhhPTAuNSkrCiAgeGxhYigiS2Fpc2VyIikgKyB5bGFiKCJWaWxhbHRhIikgKwogIHRoZW1lKGFzcGVjdC5yYXRpbyA9IDEpICsKICBnZ3RpdGxlKCJSYWRpYW5jZSAoRE4pIFZpbGFsdGEgdnMgS2Fpc2VyIGJ1bGJzIikKI3ByaW50KGczICsgZmFjZXRfd3JhcCh+ZGV0ZWN0b3IsIG5jb2w9Miwgc2NhbGVzPSJmcmVlIikpCmdncGxvdGx5KGczKQoKZzNiIDwtIGdncGxvdChkYXRhPWRLVikgKwogIGdlb21fcG9pbnQoYWVzKHg9c0sseT1zViwgY29sb3I9ZGV0ZWN0b3IpLHNoYXBlPTIxLCBzaXplPTAuNSkrCiAgeGxhYigiS2Fpc2VyIikgKyB5bGFiKCJWaWxhbHRhIikgKwogIHRoZW1lKGFzcGVjdC5yYXRpbyA9IDEpICsKICBnZ3RpdGxlKCJSZWZsZWN0YW5jZTogVmlsYWx0YSB2cyBLYWlzZXIgYnVsYnMiKQojcHJpbnQoZzMgKyBmYWNldF93cmFwKH5kZXRlY3RvciwgbmNvbD0yLCBzY2FsZXM9ImZyZWUiKSkKZ2dwbG90bHkoZzNiKQpgYGAKVGhpcyBtYWtlcyBzZW5zZSwgYXMgd2UgaGF2ZSBhIHVuaWZvcm0gd2hpdGUgdGFyZ2V0LCB0aHVzIHRoZSBvYnNlcnZlZCB2YXJpYWJpbGl0eSBvZiB0aGUgcmVmbGVjdGFuY2UgcmVhZGluZ3MgaXMgbm90IHJlbGF0ZWQgdG8gdGhhdCBvZiB0aGUgdGFyZ2V0CmFuZCB0aGUgMiBzcGVjdHJhIGFyZSBpbmRlcGVuZGVudC4gCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD04fQojZC5sZnNlbCA8LSBkLmxmW2QubGYkc2VsZl9vcHQ9PSJZIiAmIGQubGYkZ3JhZGUgPT0gImNvbnN1bWVyIixdCmQubGZzZWwgPC0gZC5sZltkLmxmJHNlbGZfb3B0PT0iWSIgJiBkLmxmJElEIT0iQVNEXzFfMSIgJiBkLmxmJElEIT0iQVNEXzFfMiIsXQpnM2MgPC0gZ2dwbG90KGRhdGE9ZC5sZnNlbCkgKwogIGdlb21fYm94cGxvdChhZXMoeD10eXBlLHk9cywgY29sb3I9dHlwZSksbm90Y2ggPSBUUlVFKSArCiAgeGxhYigiSWxsdW1pbmF0b3IiKSArIHlsYWIoIlJlZmxlY3RhbmNlIikgKwogIGZhY2V0X3dyYXAofmdyYWRlLCBzY2FsZXM9ImZyZWVfeCIpICsKICBnZ3RpdGxlKCJXUiBSZWZsZWN0YW5jZSBieSBpbGx1bWluYXRvcnMiKQpnZ3Bsb3RseShnM2MpCgpgYGAKCioqTm90ZSoqOiBUaGUgMiB3ZWlyZCBpbml0aWFsIEFTRF8xIHNwZWN0cmEgaGF2ZSBub3QgYmVlbiB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24gZm9yIHRoaXMgYm94cGxvdC4KCgoKIyMgNi4gQ29uY2x1c2lvbnMKCjEuIFBhdHRlcm4gb2YgcGVyZm9ybWFuY2UgaXMgZGlmZmVyZW50IGZvciBlYWNoIGRldGVjdG9yLgoyLiBDb25zdW1lci1ncmFkZSBidWxicyBhcmUgbGVzcyBwb3dlcmZ1bCwgaW4gcGFydGljdWxhciA8IDEwMDAgbm0gKGRldGVjdG9yIDEpLgozLiBUaGUgc2ludXNvaWRhbCB2YXJpYWJpbGl0eSBvYnNlcnZlZCBpbiB0aGUgbGFiIHdpdGggdGhlIGNvbnN1bWVyLWdyYWRlIGJ1bGJzIGlzIGNsZWFybHkgdmlzaWJsZSBpbiB0aGUgcmVmbGVjdGFuY2Ugc3BlY3RyYSA+IDEwMDAgbm0KNC4gQ29uc3VtZXItZ3JhZGUgYnVsYnMgc2VlbSBvayA8IDEwMDAgbm0gKHRodXMgZm9yIHRoZSBJUSksIGJ1dCBjYW5ub3QgYmUgdXNlZCA+IDEwMDAgbm0KNS4gQ29uc3VtZXItZ3JhZGUgYnVsYnMgVklMQUxUQSBhbmQgS0FJU0VSIGFyZSBub3QgZGlnbmlmaWNhbnRseSBkaWZmZXJlbnQuCjYuIFRoZSBiZXN0IGlsbHVtaW5hdG9yIGFwcGVhcnMgdG8gYmUgUFJPTEFNUC4KNy4gKipXZSBzaG91bGQgYXNzZXNzIHRoZSBhY3R1YWwgZWZmZWN0IG9mIHRoZSBkaWZmZXJlbnQgaWxsdW1pbmF0b3JzIG9uIHRoZSByZWZsZWN0YW5jZSBvZiB0aGUgc3RhbmRhcmQgcmVmZXJlbmNlLCBhcyB0aGlzIGlzIHdoYXQgaXMgdGhlIG1vc3QgaW50ZXJlc3RpbmcgZnJvbSBhIHVzZXIncyBwZXJzcGVjdGl2ZS4qKgogCg==