2016-07-30 8 views
0

グレースケールの画像があるとしましょう。黒以外のピクセルがどのように分布するか、すなわちそれらが1つまたは複数の場所にグループ化されているか、画像全体に均一に分布しているかを計算する方法はありますか?OpenCVで画像全体の色の分布を計算する

答えて

0

画像のヒストグラムを探しているような感じです。これは画像処理の基本操作です。

ヒストグラムは、事前に定義されたビンのセットに編成されたデータの数を集めている。

のOpenCVを使用して、ヒストグラム計算の文書がthis link

0

であるあなたが探しているように聞こえるですラスタライズされたイメージの空間的なモーメント。あなたができる空間の瞬間の物理的なアナロジーを希望した場合 http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=moments#moments

http://docs.opencv.org/2.4/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#threshold

あなたはその後、画像モーメントを計算することができます。

まず、あなたはそれをバイナリにするために、しきい値に自分の画像を必要とします各白画素が単位点質量であると仮定すると、第2の瞬間は画像の回転慣性となる。白いピクセル(点の質量)が密集している場合、2番目の瞬間は低くなります(画像は簡単に回転します)。

0

私が使用した別のアプローチを共有したいと思います。

Mat img = imread(argv[1], CV_LOAD_IMAGE_COLOR); 
cvtColor(img, img, CV_RGB2GRAY); 
threshold(img, img, 35, 255, THRESH_BINARY); 

Mat distance; 
distanceTransform(img, distance, CV_DIST_L2, 3); 
distance = min(distance, 1); 
Scalar distribution = mean(dist); 

cout << "The distribution is: " << distribution << std::endl; 

トリッキーな部分は、distanceTransformmin関数の組み合わせです。分布が良好な画像では、min関数の効果は小さくなり、平均値は大きくなります。

関連する問題