Выборка изображения для получения точечного рисунка

Вот пример, когда авторы сделали это изображение:

введите описание изображения здесь

и проанализированы с помощью spatstat. Для этого они извлекли координаты, как их можно было увидеть здесь. Я хотел бы сделать то же самое, и мне интересно, как можно получить образец точки образца из такого изображения. Непосредственное преобразование изображения в объект ppp создает множество артефактов.

Руководства в их R-пакете BioC2015Oles, похоже, не существует. Спасибо.


person user2167741    schedule 05.09.2018    source источник
comment
Ваш вопрос слишком расплывчатый, чтобы его можно было понять. Не могли бы вы предоставить пример кода / изображений, чтобы точно объяснить, что у вас есть сейчас и чего вы хотите достичь?   -  person Ege Rubak    schedule 05.09.2018
comment
Спасибо! Я добавил изображение с более подробной информацией.   -  person user2167741    schedule 05.09.2018
comment
На сколько очков вы рассчитываете сократить пример? Не могли бы вы нарисовать соответствующие области, наложенные на график (можно просто нарисовать с помощью мыши)?   -  person Ege Rubak    schedule 05.09.2018
comment
Я отредактировал весь пост, чтобы отразить большую проблему, с которой я столкнулся. Я подумал, что если я сделаю выборку в маленьком окне, я могу получить образец точки выборки для изображения, перемещая окно, но могут быть более разумные решения для более крупного вопроса, который у меня есть. Спасибо, что продумали.   -  person user2167741    schedule 06.09.2018


Ответы (2)


Пакет spatstat предполагает, что вы уже обработали свое изображение и получили список координат и, возможно, некоторые атрибуты (метки), связанные с каждой парой (x, y). В идеале у вас также должно быть окно наблюдения, указывающее, где потенциально могут возникнуть точки. В spatstat есть форматы растра / изображения, называемые im, которые могут хранить изображение / растр, но многие из них используются для хранения вспомогательной информации из эксперимента, которая может использоваться для объяснения появления или отсутствия точек в областях окна наблюдения. и не заниматься обработкой изображений как таковой.

Чтобы преобразовать зашумленное изображение микроскопа в, например, список клеточных центров люди обычно используют различные инструменты и методы обработки изображений (водораздел, морфологическое открытие и закрытие и т. д.). Представление, о котором вы говорите, похоже, построено на пакете R EBimage (который находится на BioConductor и имеет руководство), и вы можете попытаться извлечь ячейки, используя его. В качестве альтернативы есть другие пакеты в R или совершенно другие системы с открытым исходным кодом, ориентированные на анализ изображений, такие как QuPath, ImageJ и многие другие. Я не могу посоветовать вам, какой из них лучше всего подходит для вашей задачи.

person Ege Rubak    schedule 06.09.2018
comment
Да, я это понял. Я попробовал EBImage и использовал методы обработки изображений, чтобы извлечь точечный узор. Большое спасибо. Думаю, теперь я могу начать использовать spatstat - person user2167741; 06.09.2018

Ты можешь сделать

library(raster)
x <- brick('tLh2E.jpg')
#plotRGB(x)

Все ячейки с координатами:

xyz = rasterToPoints(x)
head(xyz)
#       x      y tLh2E.1 tLh2E.2 tLh2E.3
#[1,] 0.5 1103.5     222     222     224
#[2,] 1.5 1103.5     214     214     216
#[3,] 2.5 1103.5     223     223     225
#[4,] 3.5 1103.5     220     220     222
#[5,] 4.5 1103.5     197     197     199
#[6,] 5.5 1103.5     198     198     200

Или образец:

s1 <- sampleRandom(x, 100, xy=TRUE)
s2 <- sampleRegular(x, 100, xy=TRUE)

Посмотреть расположение образцов

plotRGB(x)
points(s1[, 1:2])
points(s2[, 1:2], col='red', pch=20)

Создать образ из обычного образца

r <- sampleRegular(x, 1000, asRaster=TRUE)
plotRGB(r)

Для стратифицированной выборки вам нужно будет определить регионы. Вы можете нарисовать их с помощью raster::drawPoly(), за которым следует rasterize, или смоделировать их, см. raster::predict. Здесь очень простой и, возможно, не очень хороший подход, основанный на зрелище. Оказывается, второй, «зеленый», слой (из красно-зелено-синего изображения) содержит большую часть информации. Это приближает вас:

r <- reclassify(x[[2]], rbind(c(0,100,1), c(100,175,2), c(175,255,3)))
plot(r, col=c('red', 'blue','gray'))

Теперь вы можете сделать следующее, чтобы узнать, какой цвет имеет каждая точка:

extract(r, s1[,1:2])
person Robert Hijmans    schedule 06.09.2018
comment
Спасибо! Есть ли шанс, что я могу просмотреть образцы данных в виде изображения? - person user2167741; 06.09.2018
comment
Случайная выборка не имеет графической структуры. Но я добавил код для отображения и для обычного образца, который может быть представлен как изображение (растр). - person Robert Hijmans; 07.09.2018
comment
Но я полагаю, что случайная выборка единообразна, верно? Как отобрать пробу только из красной или синей области? - person user2167741; 07.09.2018
comment
Да униформа. См. Развернутый ответ для стратифицированной выборки - person Robert Hijmans; 07.09.2018