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

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

ただいまの
回答率

90.75%

  • Python

    6878questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • OpenCV

    970questions

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

  • Windows 10

    848questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

OpenCVから得られた色相分布の意味に関して。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 237

daisuke_factex

score 26

いつもお世話になっております。

前回、色相分布を求める質問や、CSVデータをまとめたい質問をしていた者です。

今回、やっとopenCVを用いて画像の色相分布を行列に変換することができました。
しかしこの分布をみていると、期待していた分布と違うのではないか?と思い質問したいと思いました。

疑問点

まずもとの画像と色相分布の行列を見てください。(入力画像は54枚あるのですが内一枚を抜粋)
入力画像

#データを読み込み、HSV表色系に変換後、ヒストグラムに変換。
#これをCSVデータとして保存する。
for i in range(1, 55):
    img = cv2.imread("/Users/hogehoge/piyopiyo/fugafuga({0:d}).png".format(i))
    img =  cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    hist = cv2.calcHist([img], [0], None, [180], [0, 180])
    np.savetxt('hogepiyo({0:d}).csv'.format(i), hist, delimiter=',')

そして保存された分布行列が以下のようになります。

13622.00   ←注目してください。(後述)
8.00 
15.00 
17.00 
11.00 
68.00 
89.00 
69.00 
202.00 
195.00 
243.00 
620.00 
656.00 
1420.00 
2166.00 
6649.00 
3224.00 
5430.00 
1722.00 
989.00 
654.00 
540.00 
294.00 
163.00 
239.00 
140.00 
82.00 
2.00 
4.00 
2.00 
552.00 
0.00 
15.00 
3.00 
12.00 
35.00 
146.00 
0.00 
8.00 
2.00 
8.00 
1.00 
32.00 
14.00 
0.00 
9.00 
0.00 
0.00 
5.00 
0.00 
94.00 
1.00 
2.00 
1.00 
0.00 
17.00 
1.00 
2.00 
0.00 
0.00 
35.00 
0.00 
0.00 
3.00 
0.00 
1.00 
43.00 
0.00 
0.00 
0.00 
8.00 
0.00 
0.00 
4.00 
3.00 
757.00 
0.00 
3.00 
2.00 
2.00 
44.00 
1.00 
0.00 
96.00 
1.00 
2.00 
1.00 
17.00 
1.00 
0.00 
37.00 
1.00 
2.00 
12.00 
0.00 
20.00 
92.00 
4.00 
33.00 
14.00 
21.00 
96.00 
57.00 
175.00 
89.00 
117.00 
110.00 
124.00 
71.00 
150.00 
178.00 
47.00 
13.00 
13.00 
23.00 
16.00 
14.00 
1.00 
0.00 
1.00 
195.00 
0.00 
2.00 
1.00 
10.00 
16.00 
32.00 
0.00 
3.00 
0.00 
2.00 
0.00 
22.00 
4.00 
0.00 
2.00 
1.00 
0.00 
4.00 
0.00 
53.00 
5.00 
0.00 
1.00 
2.00 
9.00 
2.00 
0.00 
0.00 
0.00 
6.00 
0.00 
0.00 
1.00 
0.00 
1.00 
18.00 
1.00 
0.00 
2.00 
7.00 
1.00 
1.00 
8.00 
5.00 
218.00 
0.00 
0.00 
1.00 
1.00 
19.00 
2.00 
0.00 
42.00 
1.00 
5.00 
1.00 
17.00 
2.00 
0.00 

パッと見では、何も問題がないのでは、と思うのですが、
色相H:0、つまり赤色分布である部分の画素数が異常に多いことが気になります。

質問がうまくまとまらないのですが、H:0の部分が多いのは正常なのでしょうか。
ご教授お願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

+2

一行目には、色相:0の画素とαチャンネルの画素の2つが合計されているようです。

実験として、αチャンネルのみの画像を読み込み、色相分布がどうなるかの検証をしてみます。

import cv2
import numpy as np

img = cv2.imread("alpha_test.png")  #100*5pixelの画像を入力
img =  cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([img], [0], None, [180], [0, 180]) 
np.savetxt('alpha_test.csv', hist, delimiter=',')
print(hist)

結果としては、```[[ 500.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]]

となります。  

同様に、250pixelを色相値0の色で塗りつぶし、残りはαチャンネルのままの画像を入力します。  

python import cv2 import numpy as np

img = cv2.imread("alpha_test2.png")  img =  cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hist = cv2.calcHist([img], [0], None, [180], [0, 180])  np.savetxt('alpha_test2.csv', hist, delimiter=',') print(hist)

結果が、  

[[ 500.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]  [   0.]] ```

となり、まったく同じ結果になることがわかりました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-1

1行目は全画素数らしいです。 お騒がせしました。

少し考えなおします。度々お騒がせしております。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    6878questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • OpenCV

    970questions

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

  • Windows 10

    848questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。