![]() |
OpenCV 4.13.0
Open Source Computer Vision
|
では、ヒストグラムとは何だろうか。ヒストグラムは、画像の輝度分布の全体像を示すグラフまたはプロットと考えることができる。これは、X軸にピクセル値 (常にではないが0から255の範囲) を、Y軸に画像内の対応するピクセル数をとったプロットである。
これは画像を理解するための別の方法に過ぎない。画像のヒストグラムを見ることで、その画像のコントラスト、明るさ、輝度分布などについての直観が得られる。今日のほぼすべての画像処理ツールは、ヒストグラムに関する機能を備えている。以下は Cambridge in Colorのウェブサイト から引用した画像である。詳細についてはぜひそのサイトを訪れてほしい。
画像とそのヒストグラムが確認できる。(このヒストグラムはカラー画像ではなくグレースケール画像に対して描かれていることに注意。) ヒストグラムの左側の領域は画像内の暗いピクセルの量を、右側の領域は明るいピクセルの量を示す。ヒストグラムから、暗い領域が明るい領域より多く、中間調 (中間の範囲、たとえば127付近のピクセル値) の量が非常に少ないことが分かる。
次の関数を使用する: cv.calcHist (image, channels, mask, hist, histSize, ranges, accumulate = false)
| image | 入力配列。すべて同じビット深度 cv.CV_8U、cv.CV_16U または cv.CV_32F を持ち、同じサイズでなければならない。それぞれは任意の数のチャンネルを持つことができる。 |
| channels | ヒストグラムの計算に使用する dims 個のチャンネルのリスト。 |
| mask | 省略可能なマスク。行列が空でない場合、images[i] と同じサイズの8ビット配列でなければならない。マスクの非ゼロ要素は、ヒストグラムにカウントされる配列要素を示す。 |
| hist | 出力ヒストグラム(cv.CV_32F 型)。密または疎の dims 次元配列となる。 |
| histSize | 各次元のヒストグラムサイズの配列。 |
| ranges | 各次元のヒストグラムビン境界からなる dims 個の配列の配列。 |
| accumulate | 累積フラグ。設定されている場合、ヒストグラムは確保された直後にクリアされない。この機能により、複数の配列セットから単一のヒストグラムを計算したり、時間経過に伴ってヒストグラムを更新したりできる。 |