質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

解決済

1回答

2434閲覧

色検出時のノイズ除去

nakanori773

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

0クリップ

投稿2020/09/03 06:09

前提

C#、OpenCV(OpenCVSharp)にて赤色検出を行っています。

<フィルタをかけた後のイメージ>
フィルタをかけた後のイメージ

検出する直前の画像をみると、微小なノイズ?らしきものが散見されます。
<ノイズ>
イメージ説明
イメージ説明

目的の赤色は検出できるのですが、同時にノイズも検出されるため、
検出時のフィルタ(検出されたエリアの大きさ)で回避しています。

発生している問題

そもそも何故ノイズが発生するのかもわからないのですが、
検出時のフィルタより発生するノイズが大きい場合、また、対応が必要になるため、
何かもう少しノイズが除去できる方法が無いか模索しております。

よろしくお願いいたします。

該当のソースコード

特に現在エラー等は発生しておりませんが、検出までの一連の流れです。

流れ(抜粋)

C#

1Cv2.CvtColor(_srcImage, hsvImage, ColorConversionCodes.BGR2HSV); 2Cv2.LUT(hsvImage, _colorFilter.LookupTable, hsvImage); 3Cv2.BitwiseAnd(channelImage2[0], channelImage[1], _filterdImage); 4Cv2.BitwiseAnd(_filterdImage, channelImage[2], _filterdImage); 5Cv2.CvtColor(_filterdImage, grayImage, ColorConversionCodes.BGR2GRAY); 6Cv2.Threshold(grayImage, grayImage, 1, 255, ThresholdTypes.Binary); 7blobs.Label(grayImage); 8blobs.FilterByArea(filterSize, int.MaxValue); 9

HSV設定値

H:315 ~ 20
S:30 ~ 255
V:30 ~ 255

試したこと

色範囲の変更、抽出時のパラメータ変更

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2020/09/03 06:33

blobs.FilterByArea で「面積が小さいものを削除」としていると思いますが、その閾値を調整することで誤検出を除けませんか?
nakanori773

2020/09/03 06:47

titol さん ご返答頂きありがとうございます。 御推察の通り、blobs.FilterByArea で調整しております。  ・テスト等などを重ねると指定した閾値より大きなノイズが発生→閾値調整を繰り返す。  ・運用で赤点をある程度のサイズを担保したいが、小さな点を記入される場合があるので、あまり閾値を大きくできない。 などの理由で、「ノイズそのものを減らす」方法が無いかな?と思った次第です。 また、別の視点で検出した内容が「赤色」かどうか?で判断できても良いかもしれません。。。
tiitoi

2020/09/03 06:52

> 「赤色」かどうか?で判断できても良いかもしれません。。。 検出したいものとノイズを区別するのが色なのだとしたら、赤色かどうかで判定するのがよいと思います。
nakanori773

2020/09/03 06:59

tiitoi さん ご返答いただき、ありがとうございます。 検出したエリア内の画素を調べて赤色かどうか判断する。。。。 一度調べて実施してみます。
guest

回答1

0

自己解決

tiitoiさんとの会話の中のOpenCvのヒストグラムを利用した色分析を用いました。

この質問は解決済みとさせていただきます。

投稿2020/09/28 08:04

nakanori773

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問