R Language
Analisi raster e di immagine
Ricerca…
introduzione
Vedi anche I / O per immagini raster
Calcolo della struttura GLCM
Matrice di Co-occorrenze di livello grigio (Haralick et al., 1973) è una potente funzione di immagine per l'analisi delle immagini. Il pacchetto glcm
fornisce una funzione facile da usare per calcolare tali caratteristiche di RasterLayer
per RasterLayer
oggetti RasterLayer
in R.
library(glcm)
library(raster)
r <- raster("C:/Program Files/R/R-3.2.3/doc/html/logo.jpg")
plot(r)
Calcolo delle texture GLCM in una direzione
rglcm <- glcm(r,
window = c(9,9),
shift = c(1,1),
statistics = c("mean", "variance", "homogeneity", "contrast",
"dissimilarity", "entropy", "second_moment")
)
plot(rglcm)
Calcolo delle caratteristiche di trama invarianti di rotazione
Le caratteristiche strutturali possono anche essere calcolate in tutte e 4 le direzioni (0 °, 45 °, 90 ° e 135 °) e quindi combinate con una trama invariante alla rotazione. La chiave per questo è il parametro shift
:
rglcm1 <- glcm(r,
window = c(9,9),
shift=list(c(0,1), c(1,1), c(1,0), c(1,-1)),
statistics = c("mean", "variance", "homogeneity", "contrast",
"dissimilarity", "entropy", "second_moment")
)
plot(rglcm1)
Morfologie matematiche
Il pacchetto mmand
fornisce funzioni per il calcolo delle morfologie matematiche per matrici n-dimensionali. Con un po 'di soluzione, questi possono anche essere calcolati per le immagini raster.
library(raster)
library(mmand)
r <- raster("C:/Program Files/R/R-3.2.3/doc/html/logo.jpg")
plot(r)
All'inizio, un kernel (finestra mobile) deve essere impostato con una dimensione (ad es. 9x9) e un tipo di forma (ad es. disc
, box
o diamond
)
sk <- shapeKernel(c(9,9), type="disc")
Successivamente, lo strato raster deve essere convertito in una matrice che viene utilizzata come input per la funzione erode()
.
rArr <- as.array(r, transpose = TRUE)
rErode <- erode(rArr, sk)
rErode <- setValues(r, as.vector(aperm(rErode)))
Oltre a erode()
, anche le funzioni morfologiche dilate()
, opening()
e closing()
possono essere applicate in questo modo.
plot(rErode)