Используете R для простой задачи распознавания изображений / образов? - PullRequest
4 голосов
/ 29 июня 2010

У меня есть изображение с множеством точек, и я хотел бы извлечь из него, каково положение x-y каждой точки.

Я уже знаю, как это сделать вручную (для этого есть пакет).

Однако, есть ли способ сделать это автоматически?

(Мой следующий вопрос будет - есть ли способ, при наличии изображения из нескольких линий, определить, где линии пересекаются / «касаются друг друга»)

Из-за запросов в комментариях приведен пример для «решения» изображения (т. Е. Извлечения для него местоположения точек данных)

#riddle 1 (find dots):
plot(cars, pch = 19)
#riddle 2 (find empty center circles):
plot(cars, pch = 1)
#riddle 2 (fine intersection points):
plot(cars, pch = 3)
#riddle 3 (find intersections between lines):
plot(cars, pch = 1, col = "white")
lines(stats::lowess(cars))
abline(v = c(5,10,15,20,25))

Спасибо, Тал

(p.s: поскольку я не знаком с этим полем, мне жаль, если я использую неправильную терминологию или спрашиваю что-то слишком простое или сложное. Это OMR ?)

Ответы [ 3 ]

4 голосов
/ 29 июня 2010

Вслед за Дирком, да, проверьте представление задачи медицинской визуализации. Также посмотрите на Rforge, У Ромена Франсуа есть пакет RJImage, и недавно был зарегистрирован другой пакет обработки изображений. То, что вы ищете, это алгоритмы сегментации. Ваша проблема с точками намного проще, чем проблема с линией. Первое можно сделать с помощью фильтра RGB или градаций серого, просто выполняя поиск по радиусу. Обнаружение линейных особенностей сложнее. Получив извлеченные объекты, вы можете использовать алгоритм линии поворота для обнаружения пересечений. EBIimage может иметь пример для обнаружения клеток в виньетке.

Николай

4 голосов
/ 29 июня 2010

Medical Imaging Task View охватывает общее подтверждение изображения, это может быть началом.

2 голосов
/ 02 июля 2010

Я думаю, вы могли бы использовать пакет raster для извлечения координат xy из изображения с конкретными значениями. Посмотрите на виньетки пакета.

EDIT

Можете ли вы попробовать это и сказать мне, находится ли он в парке мячей того, что вы ищете? Я надеюсь, что код с комментариями достаточно понятен. Ждем Вашего ответа!

library(raster)
rst <- raster(nrows = 100, ncols = 100) #create a 100x100 raster
rst[] <- round(runif(ncell(rst))) #populate raster with values, for simplicity we round them to 0 and 1
par(mfrow=c(1,2))
plot(rst) #see what you've got so far
rst.vals <- getValues(rst) #extract values from rst object
rst.cell.vals <- which(rst.vals == 1) #see which cells are 1
coords <- xyFromCell(rst, rst.cell.vals) #get coordinates of ones
rst[rst.cell.vals] <- NA #set those raster cells that are 1 to NA (you can play with rst[!rst.cell.vals] <- NA to exclude all others)
plot(rst) #a diag plot, should have only one color
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...