C# - Emgu GetAverage 画像の黒色の色

okwaves2024-01-25  12

私は Emgu の新人です。CV.私の目標は、同じ写真ですが明るさがわずかに異なる 2 枚の写真を比較し、ROI の暗い色または暗いスポットの割合を取得することです。

GetAverageメソッドを見ましたが、色を指定して画像の色の割合を取得するにはどうすればよいですか。たとえば、黒は 80%、白は 20% です。

GetAverage メソッドのマスク パラメータとは何ですか?

ドキュメントを読みましたが、理解できません。

私のアイデアは、両方の写真をグレースケールに変更し、ROI を設定してから平均値を取得するというものです。ターゲットを取得する正しい方法がわかりません。

それでは、どうすればよいでしょうか?

更新

以下はグレースケールの ROI 画像です。

左の写真の平均強度: 37.4879 右の写真の平均強度: 40.9773

右側のフォーにスクラッチを追加します

左の写真の平均強度: 37.4879 右の写真の平均強度: 40.7638

スクラッチ フォトの強度が、スクラッチ フォトを使用しない場合よりも低いのはなぜですか。当然、もっと大きいはずですよね?グレーが多いからですよね?なぜですか?

または

スクラッチを追加しました。つまり、より黒くなります。つまり、グレーの色が減りますか?



------------------------

GetAverage メソッドのマスク パラメータとは何ですか?

オーバーロードされた GetAverage(mask) のマスク パラメーターを使用すると、公式ドキュメントに従ってのみマスクされた領域の平均色を見つけることができます。

マスクの概念について(概念に関連するもの)ROI の) を使用すると、マスクがゼロ以外の画像の位置のみを分析または詳細に (コンテキストに応じて) 行うことができます。ここでこれについてさらに深めていただければ幸いです。ドキュメントが十分に明確ではないと思われる場合は、Photoshop でマスクがどのように機能するかを理解してください。概念は同じであり、より多くの説明があり、より直感的に理解できるはずです。

スクラッチ フォトの強度が、スクラッチ フォトを使用しない場合よりも低いのはなぜですか。による そう、もっと大きいはずですよね?グレーが多いので 右?なぜですか?

いいえ、それ以上ではありません。ここで、ドキュメントに示されているように、GetAverage() は、元の画像の構造 (TColor)、この場合は Gray (グレースケール) で平均色を返します。 ここでわかるように、暗い色のテントのグレースケール値が 0 に設定されています。逆に、白は 255 に対応します。 したがって、スクラッチを追加すると、画像が暗くなります。 異なる色のタイプ (Bgr、Bgra、Hsv、Hls など) の画像に GetAverage() を適用しようとすると、そのタイプの色として平均が返されます。 最後に、

GetAverage メソッドを見ましたが、画像の色の割合を取得するにはどうすればよいですか? 色を指定します。たとえば、黒は 80%、白は 20% です。

このアプローチではそれはできません。上で述べたように、GetAverage() は灰色を返します。私が提案できる唯一のことは、次のような方法で、得られた結果を色の割合に手動で変換することです。

private double ConvertToPercentage(double valueToConvert, int rangeStartAt, int rangeEndAt) {
    return valueToConvert/(rangeEndAt - rangeStartAt) * 100;
}

明らかに、このコードは単一値の色でのみ機能します (たとえば、3 つの値を持つ rgb では機能しません)。必要に応じて、このようなものを非常に簡単に再実装できます。それ。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。