Upjohnを讃えよ

一晩中音を止めないで

5日目

画像の色相をRGBで分けて表示することを課題に出されたので自分なりに調べた所、

HSVに変換した方が良いという情報に踊らされHSVに変換した後赤青緑を数値指定してマスクを作り表示するという物が完成した。

openCVHSVの円が180度であるので注意)

赤色が0度、180度であり、閾値を決めるのに手間取った。(min、maxを指定して二値化する)

180度を超えて210度と設定してみたりなどしたが青色が入ってしまい綺麗に分けられず、試行錯誤している最中に赤色でない部分を取ってから反転させる方法を思いつきそちらにシフト。自分で求める物に近い結果になったがやはり青が入ってしまう。

f:id:koneko4660:20180301001137p:plain

と、かなり悩んでいたが、求められていたのはRGBでの三分割方法で、

何の進捗もなかった。

 

色はRGB、赤緑青で構成されており、画像データは縦軸、横軸、チャンネル数(カラーなら3チャンネル)を持っている。

画像は行列で表され、RGB各色に分ける際チャンネル数が大事になる。

 

メモ

print(type(img)) 大事。今後特に大事。

imageArray = np.zeros*1 3は3チャンネル。0(黒)で構成された画像を作成。尚、白で埋める場合は別の。numpyのリファレンス熟読すること。

imageArray[:,:,0] = img[:,:,1]/255 今日一番求められていたこと。黒い画像を作り、そこに赤緑青どっかのチャンネルの値をぶちこむ。そうすると、ぶちこんだチャンネル以外が0であるので色調はぶちこんだチャンネルのみになる。そうする為に0の画像を作った。255で割るのは数値が何か多分でかいから。割らないとほぼ一色になる。

この記述が出来なくて1時間かかった。正直=で結ぶことに疑問を感じる。違和感がある。あと行列について完全に忘れたので何もかも分からない。数学の知識を消去した。復習が必要。

numpyのリファレンスは良く分からないので英語の本家サイトを見ること。

openCVは2までしか日本語化されていないので2で出なかったら英語の本家を参照。

 

明日は上述した物に加え色を代入した後さらに別の色にぶちこんだりなどして様子を見る。

 

トータルとしてみた時の第一段階目標として、画像中の類似色の変化をより分かりやすくするためRGBの三次元軸ではなく新たに軸を設置して検証することと、その際のレンジ調節を行い、色の単調化をこなせる様にすることがあげられる。

 

python自体の勉強もやろうね。

 

www.youtube.com

 

*1:縦, 横, 3