問題タブ [watershed]

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.

0 投票する
3 に答える
1251 参照

matlab - 流域 - グレースケール イメージの極小値

極小値を見つける必要があるグレースケール画像のセットがあります。私は Matlab でコードを書いており、アルゴリズムを構築する方法についての提案を探しています: 勾配を計算する必要がありますか、watershedそれとも関数を使用できますか?

これは、最初の分析に使用したコードです (下の画像)。

ここに画像の説明を入力

直感的に、矢印が指すピクセルで局所的な最小値を見つけることが期待されます。
ここに画像の説明を入力

0 投票する
1 に答える
521 参照

image - この顕微鏡画像の BW マスクを効率的に作成するにはどうすればよいですか?

だからいくつかの背景。私は、可視光顕微鏡画像内の酵母細胞の数をカウントするための matlab プログラムを作成することを任されました。そのためには、最初のステップが細胞のセグメンテーションになると思います。実際の実験画像セットを入手する前に、流域を利用したテスト画像セットを使用するアルゴリズムを開発しました。次のようになります。

元の画像

流域の最初のステップは、セルの BW マスクを生成することです。次に、BW マスクから生成された局所最小値を適用して bwdist 画像を生成します。これで、流域を簡単に生成できます。

白黒マスク BW マスクから生成された極小マスク ここに画像の説明を入力

ご覧のとおり、私のアルゴリズムは BW マスクの生成の成功に依存しています。そこから bwdist イメージとマーカーを生成する必要があるためです。もともと、次の手順に従って BW マスクを生成します。

  1. 画像のローカル標準偏差を生成しますsdImage = stdfilt(grayImage, ones(9))

標準フィルター

  1. BW しきい値を使用して、初期 BW マスクを生成します。 binaryImage = sdImage < 8;

初期帯域幅フィルタ

  1. 背景をクリアするにはimclearborderを使用します。他のコードを使用して、境界線にセルを追加します。

最終的な BW マスク


背景完成。これが私の問題です


しかし、今日、新しい実際のデータ セットを受け取りました。画像の解像度ははるかに小さく、光の状態はテスト画像セットとは異なります。色深度もはるかに小さいです。これらは私のアルゴリズムを役に立たなくします。はい、これ:

新しい画像セット

stdfiltを使用しても、きれいなイメージを生成できませんでした。代わりに、次のようなものを生成します (注: stdfilt関数と BW しきい値のパラメーターを調整しました。以下が得られる最良の結果です)。

新しい stdfilt 結果

ご覧のとおり、細胞の中心に明るいピクセルがあり、膜よりも暗い必要はありません。bw のしきい値処理が次のようなものを生成する原因は次のとおりです。

新しい帯域幅のしきい値

bw しきい値処理後の新しい bw 画像には、不完全な膜またはセグメント化された細胞中心があり、他のステップには適していません。

画像処理を最近始めたばかりで、どのように進めたらよいかわかりません。アイデアがあれば、私を助けてください!ありがとう!

ご参考までに、画像のサブセットへのドロップボックスからのリンクを添付しました

0 投票する
2 に答える
2884 参照

c++ - OpenCV Watershed セグメンテーションで一部のオブジェクトが欠落している

私のコードはこのチュートリアルと同じです。を使用した結果の画像を見ると、cv::watershed()探したいオブジェクト(右上)があるのですが、それがありません。使用後の画像には確かに6つのマークがありますcv::drawContours()。流域アルゴリズムの不正確さが存在するため、これは正常ですか?

ここに私のコードの一部があります:

元の画像:

ここに画像の説明を入力

後の結果watershed:

ここに画像の説明を入力

元の画像、中間画像、結果画像は次の場所にあります。

特定のプロセス後の結果イメージ

0 投票する
1 に答える
765 参照

c++ - ウォーターシェッド アルゴリズム後のバウンディング ボックスと円が多すぎる

流域を使用した後、境界ボックスと円を見つけるのに問題があります。流域アルゴリズムにはOpencv 2 Computer Vision Application Programming Cookbookを使用し、境界ボックスと円を作成するにはopencv.orgの例を使用しました。

私の問題は、オブジェクトのボックスとサークルが多すぎることです。また、なぜ画像に境界線を追加するのですか?

OpenCV 2.4.11 と Visual Studio Express 2013 を使用しています。

これは私のコードです:

これは header.h ファイルです。

おもちゃ.png: おもちゃ.png

流域.png: 流域.png

輪郭.png: 輪郭.png

ありがとうございました。

0 投票する
2 に答える
2307 参照

python - OpenCV で道路セグメンテーション プログラムを改善しようとしています

シーン内の道路を識別できるプログラムを作成しようとしており、形態学的フィルタリングと流域アルゴリズムの使用に進みました。ただし、プログラムは平凡または悪い結果を生成します。道路がシーンの大部分を占めていれば、問題ないようです (通り抜けるには十分ではありません)。ただし、他の写真では、代わりに空が分割されていることがわかります (雲のある流域)。

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

結果を改善するためにさらに画像処理を実行できるかどうかを確認しようとしましたが、これはこれまでで最高であり、プログラムを改善するために先に進む方法がわかりません.

プログラムを改善するにはどうすればよいですか?

コード:

0 投票する
1 に答える
430 参照

c++ - OpenCVで流域セグメンテーションのラベルを分割するには?

OpenCV で流域セグメンテーションを実行しましたが、セグメントを分割したいと考えています。各セグメントのRGB値に基づいて分割することを考えました.異なるセグメントのRGB値は異なるため. しかし、私はそれを行う方法を見つけることができないようです。RGB値に基づいてこの分割を行う方法を知っている人はいますか? または流域セグメントを分割する他の方法はありますか?

私が望むのは、2 つの異なるカラー ゾーン (この写真では茶色とピンク) を 2 つの画像またはウィンドウに分離することです。

0 投票する
1 に答える
170 参照

c - cvWatershed サポートされていない形式または形式の組み合わせ

私は Code::Blocks で C の OpenCV 2.4.11 を使用しています。特に、O'Reilly の本 Learning OpenCV を使用しています。流域アルゴリズムのセクションは少し短かったので、少し遊んで、正確にどのように機能するかを確認してみようと思いました。ただし、関数を呼び出すたびに、次のエラーが発生します。

OpenCV エラー: cvWatershed でサポートされていない形式または形式の組み合わせ (32 ビット、1 チャネルの出力画像のみがサポートされています)

これまでの私のプログラムは非常に単純です。

cvWatershed の 2 番目の引数として、マーキングとマークマットの両方、および他のいくつかのもの (特に、マーキングステンプの輪郭が描かれたマーキング) を入れようとしましたが、毎回同じエラーが発生します。誰が私が間違っているのか教えてもらえますか?