私は細胞骨格の画像を持っています。内部にはたくさんの小さなオブジェクトがあり、すべての軸でそれらの間の長さを計算し、このすべてのデータを含む行列を取得したいと考えています。私はmatlabでこれをやろうとしています。多くの要素の間の長さを見つける
最後の目的は、オブジェクト間に一定の距離のある軸があるかどうかを調べることです。 私はbwdist
を試して、接続されたコンポーネントを運のない状態で使用しました。 他にもアイデアはありますか?
私は細胞骨格の画像を持っています。内部にはたくさんの小さなオブジェクトがあり、すべての軸でそれらの間の長さを計算し、このすべてのデータを含む行列を取得したいと考えています。私はmatlabでこれをやろうとしています。多くの要素の間の長さを見つける
最後の目的は、オブジェクト間に一定の距離のある軸があるかどうかを調べることです。 私はbwdist
を試して、接続されたコンポーネントを運のない状態で使用しました。 他にもアイデアはありますか?
ので、最終目標は、あなたが特定の方向(直線的に)最も近いペアの間の距離が一緒に最も近い終わるように、できれば同じにストレッチにこの画像をグローバルにしたいということでしょうか?あるいはもっと複雑なストレッチをしてもいいですか? (任意の複雑なものを使うといつでもそれを働かせることができます:))
x 'とy'の距離はxとyの古い距離の単純な乗算になりますポイントのすべてのペア。最終的なユークリッド距離はsqrt((SX*x)^2 + (SY*y)^2)
になり、SXはxで伸び、SYはyで伸びる。 XとYは一対の点の間のXとYの距離です。
あなただけの「同じ」の部分に興味がある場合は、解決策はそれほど難しいことではありません。
関心のあるすべてのオブジェクトを検索し、そのXを入れて、YはN * 2行列の座標。
XとYのオブジェクトのすべてのペアの間の距離を計算します.2つの行列N * N(対角に0、対称で実数で、そのタイプの行列の名前がわからない)になります。
最小距離を見つけます(これはAとBの間です)。
あなたはすでにこれを持っています。 Now:
Take C N-1変換を行うと、すべてが
C->nearestToC = A->B
になります。それは方程式の簡単なシステムです、あなたはX1^2*SX^2+Y1^2*SY^2 = X2^2*SX^2+Y2*SY^2
を持っています。
まず、A->B = C->A
と答えて、次に、次にA->B = C->D
などなど変換が正規化=>SX^2 + SY^2 = 1
であることを確認します。見つからない場合は、SX = SY = 0
という唯一の有効な変換があります。これは、ここで解決策がないことを意味します。明らかに、SXとSYは真である必要があります。
X1 = X2
とY1 = Y2
の場合を除いて、このソリューションはユニークであることに注意してください。この場合、この変換を見つけるためにC以外のいくつかの点をつかみます。
各変換について、残りの点をチェックし、それらのすべての最近傍を見つける。距離が常にこれらの2と同じであるならば、あなたはあなたの変容を見つけました。そうでない場合、この変換は機能せず、次の変換を続行する必要があります。
距離のばらつきを最小限に抑える変換が必要な場合(しかし、それらがほぼ同じである必要はありません)、最適化の方法をいくつか行い、最小値を検索します。そうでなければ正確な解決法。私は線形またはグローバルストレッチがない場合にもこれを選択します。
私があなたの質問を正しく理解している場合、最初のステップは、(x、y)座標としてイメージ内のすべてのオブジェクト中心点を取得することです。次に、すべての点間の距離をすべて簡単に計算できます。距離分布の性質に関する情報を提供する可能性のある距離のヒストグラムを見てみることをお勧めします(たとえば、一様にランダムな場合や、表示されるパターンがある場合など)。
質点の中心を得ることはバイナリ1、又はブロブ検出及び/又はエッジ検出器を備えたバックグラウンド減算のある種に画像を変換検討し、簡単な作業ではありません。あなたがhistogramを使用することができますヒストグラムを構築するための
。
各軸の意味は? XとYの軸、ユークリッド距離か他の何か? – m7913d
"一定距離"で何を求めているのか分かりませんが、 "pdist"関数が答えかもしれません。 – Ozcan