如何在R中测量图像中两个特征的距离?

我目前正在努力进行一些图像分析。我有斑马鱼胚胎脉管系统的图像,我想测量某些特征之间的距离(最高点到最低点等)。
我已经使用EBImage将图像处理为更加可见(对比度更高)

如何在R中测量图像中两个特征的距离?

我将不胜感激。

xuan2901 回答:如何在R中测量图像中两个特征的距离?

由于您使用的是REBImage,因此我认为打算进行的分析不仅仅是从图像中提取测量值。如果您只打算使用 ,则其他软件(例如Fiji或更精简的前身软件ImageJ)可能更加用户友好。

要回答这个问题,请不要在此处显示的图像上使用display()。而是使用plot()方法,该方法使用选项method = raster作为默认值。在图形窗口中绘制图像后,您可以使用R的所有工具与绘图进行交互。您拥有的分辨率取决于图像和显示的大小。所有值均以像素为单位返回,显然需要适当缩放。

此示例在小型辅助函数中使用locator()来测量图像中血管连接点(?)之间的对角距离。

此简单的帮助程序功能标记了两个点并测量了点之间的距离。用鼠标右键单击Control-click或Escape键结束对locator()的呼叫。在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

  plot(img) # not 'display(img)'
  d <- p2p() # interact with the image,collecting distances

这是选择六对点后测得的图像,其中每对点之间测得的距离。

marked up fish

  round(d,1)
> [1] 113.4  99.2 109.4 110.8 120.6 122.7
  mean(d)
> 112.6736

玩得开心!

,

一点都不傻。是的,以像素为单位-EBImage和R为您提供小数像素。

本文链接:https://www.f2er.com/3142536.html

大家都在问