Я работаю с определенными изображениями, которые могут иметь несколько полос/каналов (см. мультиспектральные и гиперспектральные изображения дистанционного зондирования).
Предположим, что мы заранее не знаем, сколько полос существует в данном изображении. Все каналы именуются как "band1", "band2"... и так далее. Для чтения изображения мы используем
library(sp)
library(rgdal)
image <- readGDAL("image.tif')
Сначала мы принимаем это в data.frame
:
imdata <- image@data
Могут быть определенные ситуации, когда содержимое всех полос для конкретного «пикселя» равно нулю. Следовательно, если это четырехканальное изображение, мы можем удалить эти строки из data.frame
, используя:
imData <- imData[!((imData$band1==0) & (imData$band2==0) & (imData$band3 == 0) & (imData$band4 == 0)),]
Но предположим, что в моем изображении 256 каналов. Как удалить такие строки из набора данных?
imData[!Reduce('&' , imData==0),]
и, возможно, также!!rowSums(imData!=0)
- person akrun   schedule 06.01.2015imData[!Reduce(
&,as.data.frame(imData==0))),]
- person akrun   schedule 06.01.2015