2017-10-12 40 views
0

Je travaille avec une image .tif capturée à partir d'un capteur Sequoia Parrot. Je veux effectuer un calibrage radiométrique et exporter l'image résultante dans le même format (.tif).Importer, traiter, éditer et exporter des fichiers .tif dans R

J'importe l'image en tant que raster, puis je traite avec quelques algorithmes et j'essaie enfin d'exporter en tant que fichier .tif mais il est impossible de l'ouvrir. Le fichier résultant est de 7 Mo mais l'image ne peut pas être visualisée.

Voici mon script:

setwd("/where the images are/") 
rlist=list.files(getwd(), pattern="TIF$", full.names=F) 
options(digits=20) 

for(i in rlist){ 
    data <- raster(i) 

meta <- exifr(i, recursive = FALSE, quiet = TRUE, exiftoolargs = NULL) 
SM <- meta$SensorModel 
SM <- strsplit(SM, ",")[[1]] 
A <- as.numeric(SM[1]) 
B <- as.numeric(SM[2]) 
C <- as.numeric(gsub("[^0-9\\.]", "", SM[3])) 

Ep <- meta$ExposureTime ## Epsilon 
f <- meta$FNumber ## Focus Number 
ys <- meta$ISO ##ISO 

I <- f^2*(data-B)/(A*Ep*ys+C) 
I <- flip(I,"x") 
I <- flip(I,"y") 
+0

Je 'utiliser calc()' en premier calcul 'de I'. Sans un exemple d'image, je ne peux pas vous aider à identifier le problème. –

Répondre

0

Est-script original bien échancré? Avec votre image d'exemple, tout fonctionne bien.

J'ai fait des petits changements pour une meilleure compréhension:

library(raster) 
library(exifr) 

setwd("/where the images are/") 
rlist=list.files(getwd(), pattern="TIF$", full.names=F) 
options(digits=20) 

for(i in seq_along(rlist)){ # small change 

    data <- raster(rlist[i]) # small change 

    meta <- exifr(rlist[i], recursive = FALSE, quiet = TRUE, exiftoolargs = NULL) # small change 
    SM <- meta$SensorModel 
    SM <- strsplit(SM, ",")[[1]] 
    A <- as.numeric(SM[1]) 
    B <- as.numeric(SM[2]) 
    C <- as.numeric(gsub("[^0-9\\.]", "", SM[3])) 

    Ep <- meta$ExposureTime ## Epsilon 
    f <- meta$FNumber ## Focus Number 
    ys <- meta$ISO ##ISO 

    I <- calc(data,fun = function(x){f^2*(x-B)/(A*Ep*ys+C)}) # small change 
    I <- flip(I,"x") 
    I <- flip(I,"y") 
    print(plot(I)) 
} 

image