イメージ 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
円と線から方程式を導き出すことで数学的に確認できます。数千の線と穴を表す数百万の点がなければ、これは十分に高速です。