Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Required packages to parallelize
- library(parallel)
- library(foreach)
- library(doParallel)
- # Number of cores
- n.core<-detectCores()-1
- # Starting parallel
- cl <- makeCluster(n.core, output = "")
- registerDoParallel(cl)
- #Declaring variables
- treatments<-c("T1","T2","T3")
- graphColorMax<-c("blue", "red", "green", "violet", "orange", "black", "brown", "dark blue")
- #Choosing folders
- folder_input<-choose.dir(default = "D:/", caption = "Select INPUT folder")
- folder_output<-choose.dir(default = folder_input, caption = "Select OUTPUT folder")
- foreach (i=1:length(treatments), .combine = "c", .inorder=FALSE, .packages=c("raster", "rasterVis","lattice", "ThermStats", "Thermimage", "readxl","tiff", "openxlsx", "stringr","moments", "viridis", "viridisLite" )) %dopar% {
- #Importing file list and adjusting
- flir_file_list2 <- read_excel(paste0(folder_output,"\\",treatments[i],"FLIR_file.xlsx"))
- flir_file_list2$photo_name<-paste0(substr(flir_file_list2$photo_name,1,9))
- flir_file_list2<-as.data.frame(flir_file_list2)
- flir_file_list2$photo_name<-as.numeric(flir_file_list2$photo_name)
- flir_file_list2$photo_name<-as.integer(flir_file_list2$photo_name)
- #Batch extraction from images and saving results
- flir_rawPICS<-batch_extract(in_dir=paste0(folder_input,"\\",treatments[i]),
- write_results=TRUE,
- file_name = paste0(treatments[i],"_flir_batch_converted_",Sys.Date()),
- inc=flir_file_list,
- out_dir=folder_output,
- exiftoolpath="D:/AgriSearchInnovations/Comuni/termocamera/Exiftools/")
- PIC_index <-match(
- names(flir_rawPICS$raw_dat),
- flir_file_list2$photo_name)
- #onversion from avalues to temperatures
- flir_converted<-batch_convert(flir_rawPICS$raw_dat,
- E = 0.98,
- OD = flir_file_list2$object_distance[PIC_index],
- RTemp = flir_file_list2$ambient_temp[PIC_index],
- ATemp = flir_file_list2$ambient_temp[PIC_index],
- IRWTemp = flir_file_list2$ambient_temp[PIC_index],
- IRT = 1,
- RH = flir_file_list2$ambient_humidity[PIC_index],
- PR1 = flir_rawPICS$camera_params$PlanckR1,
- PB = flir_rawPICS$camera_params$PlanckB,
- PF = flir_rawPICS$camera_params$PlanckF,
- PO = flir_rawPICS$camera_params$PlanckO,
- PR2 = flir_rawPICS$camera_params$PlanckR2,
- write_results = TRUE,
- out_dir = folder_output,
- file_name = paste0(treatments[i],"_flir_batch_converted_raw2temp_",Sys.Date())
- )
- # Average matrices in list
- averageFLIR<-average_by_group(metadata = flir_file_list2,
- img_list =flir_converted,
- id = "photo_name",
- grouping_var = "spatial_rep")
- # Coerce matrix list to raster stack
- stackFLIR<-stack_imgs(flir_converted)
- saveRDS(stackFLIR, file = paste0(folder_output,"\\",treatments[i],"_stackFLIR"))
- # Average in raster stack
- averageFLIRstack<-average_by_group(metadata = flir_file_list2,
- img_list =stackFLIR,
- id = "photo_name",
- grouping_var = "spatial_rep")
- saveRDS(averageFLIRstack, file = paste0(folder_output,"\\",treatments[i],"_averageFLIRstack.rds"))
- # Export stack image (average of N picture by grouping var
- tiff( paste0(folder_output,"\\",treatments[i],"_stack_",Sys.Date(),".tiff"),
- width = 1080, height = 1440, units = "px", compression ="lzw", res=300)
- raster::plot(averageFLIRstack, col=heat.colors(round(max(averageFLIRstack[])-min(averageFLIRstack[]))*5))
- dev.off()
- #Export histogram density picture
- tiff( paste0(folder_output,"\\",treatments[i],"_histogram_density_",Sys.Date(),".tiff"),
- width = 1440, height = 1080, units = "px", compression ="lzw", res=300)
- averageFLIRstackhist<-raster::hist(averageFLIRstack,
- freq=FALSE,
- breaks=seq(from=round(min(averageFLIRstack[]), digits=1)-0.1,to=round(max(averageFLIRstack[]), digits=1)+0.1,by=0.1),
- ylim=c(0,1.0),
- xlab="average temperature bin in °C",
- ylab="bin density",
- main=paste0(treatments[i]," temperature density distribution"),
- col=inferno(length(seq(from=round(min(averageFLIRstack[]), digits=1)-0.1,to=round(max(averageFLIRstack[]), digits=1)+0.1,by=0.1))))
- dev.off()
- #Export histogram table
- averageFLIRstackhist<-raster::hist(averageFLIRstack,
- freq=FALSE,
- breaks=seq(from=0,to=100,by=0.1))
- write.xlsx(
- data.frame(Mids=averageFLIRstackhist$mids, Density=averageFLIRstackhist$density,Counts=averageFLIRstackhist$counts),
- file=paste0(folder_output,"\\",treatments[i],"_histogram_density_",Sys.Date(),".xlsx"),
- sheetName=treatments[i], asTable = TRUE )
- }
- stopCluster(cl)
Add Comment
Please, Sign In to add comment