В spatstat
преобразование между классами обычно выполняется функцией с именем, начинающимся с "as"
. Чтобы преобразовать ppp
в im
, вы можете использовать as.im
. Родовой c as.im
отправляет метод as.im.ppp
, который вызывает pixellate
. Пример:
X <- cells # or any point pattern
Z <- as.im(X)
plot(Z)
plot(X, add=TRUE)
В полученном изображении Z значение в каждом пикселе является количеством точек данных, попадающих в пиксель. Точные координаты точек данных теряются.
Для преобразования im
в ppp
не существует метода as.ppp.im
, поскольку эта операция обычно не имеет смысла. Но если предположить, что изображение Z
было получено путем пикселизации точечного шаблона, вы можете сделать
P <- where.max(Z > 0, first=FALSE)
Тогда P
является точечным шаблоном. Операция Z > 0
возвращает двоичное пиксельное изображение с записью TRUE
для пикселей, содержащих хотя бы одну точку данных. Функция where.max
находит центры пикселей, где изображение достигает своего максимума, и в этом случае это означает все TRUE
пикселей. Чтобы увидеть эффект дискретизации:
plot(X)
plot(P, add=TRUE, pch=3)
P
аналогично X
, за исключением того, что точные местоположения точек данных были заменены местоположениями ближайших центров пикселей. Несколько точек данных, попадающих в один пиксель, заменяются одной точкой в центре пикселя.
Для более сложных манипуляций вы можете использовать as.data.frame
, чтобы преобразовать объект im
во фрейм данных, с одна строка для каждого пикселя, со столбцами x
, y
, value
. Затем манипулируйте этим фреймом данных и, наконец, используйте as.ppp
, чтобы создать точечный шаблон из результирующего фрейма данных.