問題タブ [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 に答える
71844 参照

opencv - OpenCVでWatershedのマーカーを定義するにはどうすればよいですか?

私はOpenCVでAndroid用に書いています。ユーザーが手動で画像にマークを付けることなく、マーカー制御の流域を使用して、以下のような画像をセグメント化しています。地域の最大値をマーカーとして使用することを計画しています。

minMaxLoc()私に価値を与えるだろうが、どうすれば私が興味を持っているブロブにそれを制限することができますか?またはcvBlobブロブからの結果を利用しfindContours()てROIを制限し、各ブロブに最大値を適用できますか?

入力画像

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

c++ - 流域セグメンテーションopencv xcode

私は現在、opencv コードブック ( OpenCV 2 Computer Vision Application Programming Cookbook ) からコードを学習しています: Chapter 5, Segmenting images using watersheds, page 131.

ここに私のメインコードがあります:

しかし、うまくいきません。バイナリ イメージを初期化するにはどうすればよいですか? このセグメンテーション コードを機能させるにはどうすればよいでしょうか。

本書のこの部分についてはよくわかりません。前もって感謝します!

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

matlab - 流域の画像セグメンテーションで Kinect 深度データを使用する方法

Kinect の RGB 画像と深度画像の両方を png 形式で持っています。流域セグメンテーションで深度データを使用しようとしていますが、両方のデータを組み合わせてより正確な結果を得る方法がわかりません。いくつかの論文をチェックしましたが、結果を理解できなかったか、流域アルゴリズム専用に書かれた解決策を見つけることができませんでした。セグメンテーション プロセスの基準点として深度データを含めるにはどうすればよいですか?

MatLab の Image Processing Toolbox を使用しています。

画像は Nathan Silberman et. Silberman の Web サイトにある al. のデータベース

RGB 画像とそれに対応する深度ファイルの例を以下に示します (元はバイナリ画像であった深度画像が uint8 に変換されることに注意してください)。 RGB画像 深度画像 (uint8 に変換)

更新:各チャネル (赤、緑、青、深さ) を取得し、それらの重みを計算することにより、深さデータと共に RGB ソースから加重グレースケール イメージを作成しようとしました。次に、対応するすべてのピクセルの重みを掛けた値を含めます。しかし、結果として得られるグレースケール イメージでは、結果が大幅に改善されるわけではありません。RGB ベースのセグメンテーションよりも優れているわけではありません。このアプローチに従えば、他に何ができるでしょうか? または、深度データの効果を確認するにはどうすればよいですか?

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

opencv - OpenCV での色分析のための画像セグメンテーション

私は次のことを必要とするプロジェクトに取り組んでいます。

比較的明確に定義されたオブジェクトを含む画像を見てください。

ここに画像の説明を入力

そして、いくつかの空間(RGB、HSVなど)で最もn番目(一般的で、1、2、3など)の顕著なオブジェクトの色を選択して返します。

このような画像を独立したオブジェクトに分割する方法を検討しています。それが完了すると、セグメントの輪郭を見つけて平均色や重心色などを分析することは特に難しくないという印象を受けます...

私は Watershed アルゴリズムを簡単に調べましたが、うまくいくように見えましたが、不確定な数のブロブのマーカー イメージを生成する方法がわかりませんでした。

そのような画像をセグメント化する最良の方法は何ですか?また、Watershed を使用している場合、対応する整数のマーカー画像を生成する最良の方法は何ですか?

0 投票する
4 に答える
3981 参照

c++ - OpenCV : C++ で CV_8UC3 イメージを CV_32S1 イメージに変換する

3 チャンネルの CV_8U 画像を、単一チャンネル CV_32S でなければならない画像に変換する必要があります。しかし、そうしようとすると、得られる画像はすべて黒です。コードが機能しない理由がわかりません。

私はグレースケール画像を扱っています。これが、3 チャンネル画像を単一チャンネル画像のベクトルに分割し、最初のチャンネルのみを処理する理由です。

前もって感謝します。

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

c++ - Watershed を使用した C++ での OpenCV 画像セグメンテーション

こんにちは、私は現在、OpenCV ライブラリを使用して基本的な C++ アプリケーションを作成して、画像の主題を背景からセグメント化しています。アプリケーションは画像ファイルを読み取り、ウォーターシェッド アルゴリズムを使用して、エッジ周辺で検出したデータと画像の中心で検出したデータに基づいてマスクを生成します。

(最初に、全体の値が -1 の画像オブジェクトを作成しました。次に、値が 1 の空の画像の周囲に境界線を作成しました。次に、画像のほぼ中央に、値が の長方形を作成しました。 2. 境界線と長方形は接触していません。)

元の画像と自動生成されたマスクの間のビットごとの AND を使用して、生成されたマスクを使用して画像からデータを削除しようとしました。

私はこれを C++ で書いています。誰かが私のコードを簡単に見てくれたらとてもありがたいです。私が見つけた唯一の同様の例は、Python のネイティブ OpenCV バインディングを使用したものでした。

サンプルマスク: http://i.imgur.com/a0SUwy3.png

サンプル画像: http://i.imgur.com/FQywu6P.png

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

ios - cvWatershed でサポートされていない形式または形式の組み合わせ (8 ビット、3 チャネルの入力画像のみがサポートされています)

こんにちは、画像セグメンテーションは初めてです。指定されたコードを使用して前景オブジェクトを取得しようとしていますが、「cvWatershed でサポートされていない形式または形式の組み合わせ (8 ビット、3 チャネルの入力画像のみがサポートされています)」のようなエラーが発生しました。

// cv::namedWindow("マーカー"); // cv::imshow("マーカー", マーカー);

// cv::Mat 結果 1; result1.convertTo(result1,CV_8U);

そして、デバッグを試みたところ、エラーが発生しました

前もって感謝します

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

opencv - (OpenCV) 流域からの高速隣接行列計算

流域画像から領域隣接行列を計算するために、以下で行った方法よりも高速な方法があるかどうかを知りたいです。

入力: 1 から N までのラベルが付いた N 領域を含む流域画像。

出力: これらの N 領域の隣接行列。

1. 各領域について、対応するマスクを計算し、すべてのマスクをベクトルに入れます。

2. 2 つの領域が隣接しているかどうかをチェックする関数を定義します。

3. 隣接行列 M を計算します。i 番目の領域と j 番目の領域が隣接している場合、M[i][j] = M[j][i] =1、そうでない場合は 0 です。

0 投票する
0 に答える
625 参照

android - アンドロイドopenCV流域

このコードを使用して画像から中央のセグメントを抽出しますが、私のコードは正常に機能せず、入力マットを出力として返します