5

統計プラットフォームとして R を使用した経験はありますが、画像ベースの数学は経験がありません。穴と不規則な曲線のある一連の写真 (tiff 形式、px/µm が既知) があります。穴とその特定の穴に最も近い曲線との間の最短距離を測定したいと思います。写真の穴ごとにこれを行いたいと思います。穴も規則的ではないので、何が穴で何が曲線かをプログラムに伝える必要があるかもしれません (ImageJ には点と線分の関数があります)。

これを行う方法はありますか?R ではどのパッケージを使用する必要がありますか? この種のタスクに別のプログラムをお勧めしますか?

サンプル画像

4

2 に答える 2

2

編集:これは、sclero パッケージを使用して実行できるようになりました。パッケージは現在GitHubで入手でき、手順はチュートリアルで詳しく説明されています。説明のために、チュートリアルの例を使用します。

library(devtools)
install_github("MikkoVihtakari/sclero", dependencies = TRUE)
library(sclero)
path <- file.path(system.file("extdata", package = "sclero"), "shellspots.zip")
dat <- read.ijdata(path, scale = 0.7812, unit = "um") 
shell <- convert.ijdata(dat)
aligned <- spot.dist(shell)
plot(aligned)

ここに画像の説明を入力

また、sclero パッケージが提供する関数を使用して、サンプル スポット サイズを追加することもできます。チュートリアルのセクション 2.5 を参照してください。

于 2012-04-23T14:20:20.717 に答える
1

イメージ J 用に作成されたエッジ検出用のツールがあり、最初に穴と線を見つけてそれらを明確にするのに役立ちます。あなたはそれを見つける

http://imagejdocu.tudor.lu/doku.php?id=plugin:filter:edge_detection:start

しきい値とヒステリシスの設定をいじってみると、線と穴を見つけるのに役立ちます。実際の写真を見ずにこれが機能する可能性が高いかどうかを判断するのは困難ですが、私の同僚は FRAP 画像でこのツールを使用して良い結果を出しました。それらの画像に基づいて FRAP 分析で回収率を計算できる ImageJ ツールをプログラムしました。コードを見ると、いくつかのアイデアが得られるかもしれません ( http://imagejdocu.tudor.lu/doku.php?id=plugin:analysis:frap_normalization:startを参照) 。

画像を操作できる唯一の方法はEBImage、生体伝導体システムに含まれている画像を使用することです。パッケージRimageは孤立しているため、メンテナンスされていません。

最短距離を見つけるには: 線と穴の座標を取得したら、ショットガン アプローチを使用できます。すべての点と線の間の距離を計算し、最小値を取ります。R でのそれについての図:

x <- -100:100
x2 <- seq(-70,-50,length.out=length(x)/4)

a.line <- list(x = x,
               y = 4*x + 5) 

a.hole <- list(
  x = c(x2,rev(x2)),
  y = c(200 + sqrt(100-(x2+60)^2),
        rev(200 - sqrt(100-(x2+60)^2)))
  )

plot(a.line,type='l')
lines(a.hole,col='red')

calc.distance <- function(line,hole){

  mline <- matrix(unlist(line),ncol=2)
  mhole <- matrix(unlist(hole),ncol=2)

  id1 <- rep(1:nrow(mline),nrow(mhole))
  id2 <- rep(1:nrow(mhole), each=nrow(mline))

  min(
    sqrt(
      (mline[id1,1]-mhole[id2,1])^2 + 
      (mline[id1,2]-mhole[id2,2])^2
    )
  )
}

それで :

> calc.distance(a.line,a.hole)
[1] 95.51649

円と線から方程式を導き出すことで数学的に確認できます。数千の線と穴を表す数百万の点がなければ、これは十分に高速です。

于 2012-01-12T15:31:44.903 に答える