2016-11-16 11 views
1

Я не эксперт R, но я использую его для всех видов обработки изображений. Теперь я пытаюсь применить сглаживание Gaussian blur (пакет spartstat) на моем спутниковом изображении S-2. Оригинальным типом моего изображения является Raster (Raster layer) tiff, фактически вычитание изображения из двух полос Sentinel-2 (зеленый и синий). Чтобы применить размытие изображения такого типа, я должен сначала преобразовать его в пиксельное изображение. Я попытался сделать это после нескольких других вопросов (например, этот Converting a raster object to an im object in R), но я не добился успеха. Я попробовал несколько возможностей, таких как преобразование растрового изображения в матрицу и изображение в пиксель, но это не работает, потому что изображение слишком велико (хотя я использую небольшую обрезанную область всего изображения Sentinel-2).Преобразование растрового (tiff) изображения в пиксельное изображение в R - проблемы при преобразовании пространственного многоугольника в класс объектов owin

Итак, моя функция вкратце выглядит так:

blue <- raster("S2A_OPER_MSI_T33TWH_B02.tif") 
green <- raster("S2A_OPER_MSI_T33TWH_B03.tif") 

subt <- function(r1, r2) { 
return(r2-r1) 
} 

out_sub1 <- (blue, green, fun = subt) 

Я пытался применить размытие непосредственно на растровом изображении, но я вскоре понял, он не работает на растровых данных:

gauss_sub1 <- blur(out_sub1, sigma = 5) 
#Error: is.im(x) is not TRUE 

Таким образом, я пытаюсь преобразовать мое изображение в пиксель один

out_sub11 <- as.im(X = "out_sub1") 
Error in as.im.function(X, W, ..., dimyx = dimyx, na.replace = na.replace): A window W is required 

Поэтому я стараюсь Defi Определим окно после моего растр степени

e <- [email protected] 
sp_w <- as(e, "SpatialPolygons") 
W <- as(sp_w, "owin") 
Error in as(SP.win, "owin") : no method or default for coercing “SpatialPolygons” to “owin” 

Может кто-нибудь сказать мне, что я делаю неправильно или как я могу преобразовать пространственный полигон в Owin класса объектов, так что я могу дальше команду процесса размывания?

И может ли кто-нибудь объяснить мне, какая разница между растровым изображением и пиксельным изображением в R?

ответ

0

Вы можете применить фильтр, используя raster библиотеку:

library(raster) 
r <- blue - green 

# 3 by 3 mean filter 
r_mf <- focal(r, w=matrix(1/9,nrow=3,ncol=3)) 

# gaussian filter 
gf <- focalWeight(r, 2, "Gauss") 
r_gf <- focal(r, w=gf) 
+0

Спасибо за ваш ответ @ Geo-зр. Я забыл упомянуть ранее, что уже использовал этот подход для сглаживания (но используя функцию по умолчанию вместо Gaussean), и он отлично работает. Я все же хотел бы понять вышеизложенный вопрос. –