質問: 楕円内の任意の点から楕円周までの最短距離 長半径がaで、短半径がbである楕円内に、ランダムに点(座標x0,y0)をプロットし、その点から楕円周までの最短距離をperlを使って計算したいと思っています。 最終的には、最短距離の分布がどのようになっているのかを求めたいと思っています。 この計算の結果は、細胞の形を楕円に近似したときに、特定の組織の位置がランダムな場所にあるのか、細胞の表面近くに存在する傾向があるのかを調べるためのコントロールデータとして使う予定でいます。 しかし、座標x0,y0から、楕円周までの最短距離をどのようにして計算したらよいのか見当もつきません。計算過程は省いていただいても構いませんので、最終的にどのような式を使えば計算できるのか、教えていただけないでしょうか。 よろしくお願いします。
回答: ご質問そのものに対する適切な回答が既に出ていますんで,以下は蛇足ってか,よけいなオセワですが: 本来3次元的構造である細胞を楕円で近似しようとおっしゃるのは,つまり,「p:『細胞は厚み一定であると仮定し,上下の平らな面は表面とはみなさないものとする』という近似をする.目的のモノ(オルガネラ?)の位置(x,y)が細胞内に一様に分布すると仮定したとき,(x,y)が細胞の縁近くで見いだされる確率が,実際の細胞の形を仮定した場合に比べてこの近似では過大に見積もられることになる.それに比べてすらなお高い確率で(x,y)が細胞の縁近くで見いだされることが実測されたのであれば,これは間違いなく,(x,y)は細胞の縁近くに偏って分布していると言える」というロジックをお考えなのではなかろうか. だとすると,pの仮定のもとで,細胞の画像の輪郭内の領域aの面積をsとし,輪郭からt以内の距離にある部分a(t)の面積をs(t)とすれば,細胞内に一様に分布に分布する点(x,y)が輪郭からt以内の距離にある部分に含まれる確率は,もちろん s(t)/sとなる.そこでtとして適当な値を決めて,これをtとします.で,測定されたオルガネラの位置n個のうち,a(t)に入っているものの個数n(t)を数える. そして,帰無仮説h(t):「s(t)/s=n(t)/n」を検定し(あわよくば)h(t)を棄却する. というストーリーなのだろうと思います. もしそうなら,aを個別の細胞ごとに設定する必要はなくて,「点が測定できたすべての細胞の領域を合併したもの(つまり細胞がいっぱい写っている像)」そしてa(t)は「aにおいて,縁から厚みtだけの部分を取り出したもの」とすれば良い訳ですから,画像処理ソフト(imageなど)があれば,楕円による近似よりももうちょっとうまくやれそうです. aの二値画像p(細胞内なら1,細胞外なら0)を用意し,半径t/2の円盤状のフィルタを作用させ,さらにその画素値が1でない部分を全部0にして二値化した画像qを作ると,これはaにおいて縁からtまでの部分を削り取った画像になりますね.そして, 画像 r = qが0でpが1であるなら1,さもなくば0 という二値画像を作る.そうすると,aはpにおける値1の画素の数,a(t)はqにおける値1の画素の数,ということになります.aの二値画像pは,なにも1枚の写真である必要はなくて,倍率さえ同じなら何枚もあっても構わない.それらをくっつけて1つの画像にしたもので良いのです. 測定したオルガネラの位置を画素値1で表した画像lを作って, 画像m = lが1でqも1であるなら1,さもなくば0 とすれば,nはlにおける値1の画素の数, n(t)は画像mにおける値1の画素の数.というわけで,同じ画像ベースで処理できそうに思います.