Поскольку вы используете R
и EBImage
, я бы предположил, что для анализа требуется больше, чем просто извлечение измерений из изображения. Если является всем, что вы намереваетесь, другое программное обеспечение, такое как Фиджи или более рациональный предшественник, ImageJ , может быть более удобным для пользователя.
Чтобы ответить на вопрос, не используйте display()
для изображения, показанного здесь. Вместо этого используйте метод plot()
, который по умолчанию использует опцию method = raster
. С изображением, нанесенным в графическом окне, вы можете использовать все инструменты R
для взаимодействия с графиком. Разрешение у вас определяется размером вашего изображения и дисплея. Все значения возвращаются в пикселях и, очевидно, должны быть соответствующим образом масштабированы.
В этом примере locator()
используется в небольшой вспомогательной функции для измерения диагональных расстояний между сосудистыми соединениями (?) На изображении.
Эта простая вспомогательная функция отмечает две точки и измеряет расстояние между точками. Завершите вызов на locator()
щелчком правой кнопки мыши или клавишей ESC. В RStudio вам, возможно, придется явно нажимать другую кнопку в окне, и точки / линии могут не отображаться, пока все вызовы locator()
не будут завершены.
p2p <- function(n = 512) # end with ctrl-click or Esc
{
ans <- numeric()
while (n > 0) {
# this call to locator places 2 points as crosses
# and connects them with a line
p <- locator(2, type = "o", pch = 3, col = "magenta")
if (is.null(p)) break
ans <- c(ans, sqrt(sum(sapply(p, diff)^2)))
n <- n - 1
}
return(ans) # return the vector of point-to-point distances
}
Теперь заново разместите изображение в вопросе (без элементов из дисплея браузера) и затем взаимодействуйте с изображением.
![original image](https://i.stack.imgur.com/INmQu.jpg)
plot(img) # not 'display(img)'
d <- p2p() # interact with the image, collecting distances
Вот изображение после выбора шести пар точек с расстояниями, измеренными между каждой парой точек.
![marked up fish](https://i.stack.imgur.com/EgV1M.jpg)
round(d, 1)
> [1] 113.4 99.2 109.4 110.8 120.6 122.7
mean(d)
> 112.6736
Естьвесело!