0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ピクセルごとの色相をEXCELで計算

Last updated at Posted at 2022-01-27

ピクセルごとの色相をEXCELで計算し出力する

発端

何かそんなツールがありそうなのですが、見つけられなかったのでやってみました。画像で使われている色の偏りを調べたかったからです。今回はあくまでも色相だけを見ています。

RGB値の取得

RGB値を1ピクセル毎に保存するツールを探したのですが、GIMPを使って.ppm形式だとよさそうでした。

GIMPについて

ppmファイルについて

画像をエクスポート>PPM形式で出力
image.png

ppmファイルをテキストファイルに変換する

ppmのファイルを選択し、拡張子を.txtにします(拡張子を表示していない場合はOSの設定で変更してください)
txtに変換したファイルを開き、最初の3行ないし4行程度を削除します。空き行が無い方がいいかと思います。
image.png
画像は削除した部分をハイライトしています。
削除後、保存します。
GIMPの場合は上から4行を削除しました。

内容を整形する

正規表現で検索置換できるツールをつかってさきほど保存したファイルをひらきます。
MacですのでCotEditorを使っています。
このデータは219がR、233がGと3つの数字で1ピクセルとなっています。
まず、改行をカンマに変更します。
検索ワードに \n(改行)を入力、置換ワードに , (カンマ)を入力し置換します。
(変換前)
image.png

(変換後)
image.png
R,G,B,R,G,B......とデータが並んでいます。

これではエクセルで一気に変換できませんので、
R,G,B,
R,G,B,
R,G,B,
と3つ区切りにします。

検索置換で、検索ワードに (.+?,)(.+?,)(.+?,) を、置換ワードに
$1$2$3\n
を入れて置換します。
(変換前)
image.png

(変換後)
image.png

これで、左からR,G,B,(改行)のデータになりました。
ここでファイルを保存します。
ホソンしたファイルの拡張子を.csvに変換します。これでEXCELで読み込む準備ができました。

EXCELで開く

保存したCSVファイルをEXCELで開きます。
1行目に行を追加し、A1セルにR、B1セルにG、C1セルにBと入力しておきます。
image.png

RGBからHSBなどへの変換公式は検索してみてください。
まず最大値を取り出します。 =MAX(A2:C2)
次に最小値を取り出します。 =MIN(A2:C2)
image.png

次にRGBのうち、最大となったセルがRかGかBかを判定します。 EXCELのINDEXやMATCH関数を使います。
=INDEX($A$1:$C$1,0,MATCH(MAX($A2:$C2),$A2:$C2,0))
image.png

最大の値がRかGかBかで変わりますので、IFを使ってHの値を計算します。
=IF(AND(EXACT(A2:C2,C2)),0,IF(COUNTIF(F2,"R"),60*(B2-C2)/(D2-E2),IF(COUNTIF(F2,"G"),60*(C2-A2)/(D2-E2)+120,IF(COUNTIF(F2,"B"),60*(A2-B2)/(D2-E2)+240,))))
image.png

負の値の場合を計算します。
=IF(G2<0,(G2+360),G2)
image.png

今回はおおかまな割合を見たいので、30度ずつに分割します。
=IF(OR(H2>344,H2<15),0,IF(AND(H2>14,H2<45),30,IF(AND(H2>44,H2<75),60,IF(AND(H2>74,H2<105),90,IF(AND(H2>104,H2<135),120,IF(AND(H2>134,H2<165),150,IF(AND(H2>164,H2<195),180,IF(AND(H2>194,H2<225),210,IF(AND(H2>224,H2<255),240,IF(AND(H2>254,H2<285),270,IF(AND(H2>284,H2<315),300,IF(AND(H2>314,H2<345),330))))))))))))
image.png

30度ずつに分けたピクセル数をカウントします。
image.png

円グラフにします。
image.png
210度(195〜224度)が56%と多いですね。

元画像(職場なのでぼかしてます)はこちらです。

image.png

おつかれさまでした。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?