問題タブ [mathematical-morphology]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - トカゲの鱗を数える
生物学者の友人から、トカゲの鱗片を数えるプログラムを作るのを手伝ってもらえないかと尋ねられました(これは正しい訳ですか?)。
彼は私にいくつかの画像を送ってくれて、私はMatlabでいくつかのことを試しました. 一部の画像では、他の画像よりもはるかに困難です。たとえば、暗い (黒い) 領域がある場合などです。少なくとも私の方法では。ここで役に立つ助けが得られると確信しています。これをどのように改善すればよいですか?私は正しいアプローチを取りましたか?
これらは画像の一部です。
MATLAB を使用して Image Processing and Countingに従うことで、最良の結果が得られました。基本的に、画像を白黒に変換してから、しきい値を設定します。しかし、私は少し侵食を加えました。
コードは次のとおりです。
そして、これらは結果の一部です。左上隅に、カウントされた数が表示されます。
また、カウントされた要素を緑色でマークすると、少なくともユーザーが手動でカウントする必要があるものを知ることができると便利だと思います。
image-processing - 同じカーネルで複数のオープニング/クロージングが効果がないのはなぜですか?
閉鎖と開放については知っていますが、まだ質問が 1 つあります。ゴンザレスによる「デジタル画像処理、第 3 版」によると、開閉の複数回の適用は、最初に適用した後は何の効果もありません。私はそれを理解できませんでしたか?誰でも助けることができますか?
python - Python を使用して、画像内のオブジェクトのさまざまな部分の形態を選択する
画像解析/形態学に関する質問があり、python ベースのソリューションが必要です。私は天文学者で、画像から宇宙線の軌跡 (長さ 1 ~ 100 ピクセルの筋) をマスクしようとしています。しきい値を使用したフィルタリング手法を使用してトラックを選択します。トラックがオブジェクト (星または銀河) にぶつかる場合を除いて、これは非常にうまく機能します。以下に示すように、トラックに沿ってブロブ (左の画像のような) とリング (右の画像のような) ができます。
これらの画像では、波線は無視できます。「X」の黒いボックスは、マスクされたピクセルです。私がやりたいことは、トラック (長いストリーク) をブロブとリングから分離することです (参考までに、フィルタリングによってオブジェクトのエッジの重要性が高まるため、リングが表示されます)。したがって、私の質問は、マスクの特定の部分の形態を分類し、トラックからブロブ/リングを分離するにはどうすればよいかということです。
これにより質問への回答が容易になる場合、左側の画像のマスクを次に示します。
理想的には、トラックをマスクしたいと思います。右の画像のように、トラックがオブジェクトと完全に交差する場合は、影響を受けていないオブジェクトの部分をマスクせずに、オブジェクトを介してトラック全体をマスクしたいと考えています。トラックによって。したがって、マスクされた最終的な結果は、ここに示す白いトラックのようになります。
ありがとう!-アダム
image-processing - バイナリおよびグレースケール イメージの浸食/膨張
バイナリ イメージとグレースケール イメージの浸食と膨張の違いを理解しようとしています。
私の知る限り、これはバイナリ イメージの浸食/膨張です...
浸食: 1 を持つ SE インデックスに対応するすべてのピクセルが 1 の場合、1 を出力します。それ以外の場合は 0 を出力します。
拡張: 1 を持つ SE インデックスに対応する少なくとも 1 つのピクセルが 1 の場合、1 を出力します。それ以外の場合は 0 を出力します。
私の質問は、これが 16 ビット (0, 65535) グレースケール イメージでどのように機能するかということです。
computer-vision - 画像から石を抽出する
このような画像から石を抽出するアルゴリズムについて何か考えはありますか?
石 http://www.highdesertlapidary.com/media/5/a2079181363c96d4d9c754_s.JPG
石はすべて異なる色です。背景と存在する可能性のある定規の両方からそれらを分離する必要があります。
ありがとうございました。
image-processing - バイナリ侵食クエリ
このリンクを見ました: http://en.wikipedia.org/wiki/Erosion_(morphology)#Grayscale_erosion
その構造要素を使用してピクセルを見ると、問題のピクセルが 1 になるためには、原点周辺のすべてのピクセル値が 1 である必要があることがわかります。
ただし、構造化要素が次の場合、このバイナリ侵食はどのように機能しますか。
質問を言い換えます。問題の元のピクセルを 1 にするためには、クロス上にあるすべてのピクセルを 1 にする必要がありますか?
image-processing - Matlab、2 つの任意領域の交点を見つける
A と B の 2 つのバイナリ イメージがあります ( A と B は同じサイズですが、オブジェクトが異なります)。各画像には多くの領域があります。今、私は A の任意の領域の隣人を見つけたいと思っています。私は imdilate - matlab の拡張機能を使用しています。拡張後、A の領域が増加するため、これは B の領域に接続される可能性があります。B の領域を A に追加し、それを続けます。B の領域を A に追加できない場合は停止します。
これをコーディングする方法がわかりませんか?手伝って頂けますか。どうもありがとうございます ?計算に時間がかかりますか?
python - Scipy ndimage モルフォロジー オペレータがコンピュータのメモリ RAM (8GB) を飽和させます
半径 17 以上の 3D 構造要素を使用して、形状 (400,401,401)、サイズ 64320400 バイトの 3D 配列の形態的開口部を計算する必要があります。構造体要素 ndarray のサイズは 42875 バイトです。を使用するscipy.ndimage.morphology.binary_opening
と、プロセス全体で 8 GB の RAM が消費されます。
私は GitHub で読んだことがありますscipy/ndimage/morphology.py
が、私が知る限り、モルフォロジー侵食演算子は純粋な C で実装されています。ni_morphology.c
ソースを理解するのは非常に難しいため、このコードのどの部分も見つけられませんでした。莫大なメモリ使用量。構造要素の半径に応じてメモリ使用量が指数関数的に増加する可能性があるため、RAM を追加することは有効な解決策ではありません。
問題を再現するには:
これには約 7GB の RAM が必要です。
上記の例で形態を計算する方法について誰か提案がありますか?
matlab - Matlab を使用したモルフォロジー操作
問題は次のとおりです。
カメラはI
、1 セント硬貨、10 セント硬貨、および 1/4 セント硬貨が白い背景に横たわっている画像を撮影しますが、硬貨は重なっていません。しきい値処理によりB
、コイン領域が 1、背景が 0 のバイナリ イメージが正常に作成されたとします。
d_p
コイン、d_d
、およびピクセル単位の既知の直径が与えられますd_q
( に注意してくださいd_d < d_p < d_q
)。モルフォロジー演算 (膨張、浸食、オープニング、クロージング) と論理演算と集合演算 (AND、OR、NOT、集合差) を使用して、3 つのバイナリ出力画像P
、D
、およびQ
を生成するにはどうすればよいP
ですか? D
10 セント硬貨だけをQ
含める必要があり、四半期のみを含める必要がありますか?
誰でもコードやヒントを教えてもらえますか? 前もって感謝します!