OpenCVで明るさ(輝度),色相,彩度をグラフに描画・さらに明るさ調整

  • 2020年7月19日
  • 2021年10月16日
  • opencv, Python
  • 1669view
Kaggleのコンペで戦っている人
今、kaggle(AIコンペ)で画像処理系のコンペを戦っているんだ。極端に明るさがおかしい画像があるかもしれないから、何千枚もある画像から暗い画像だけ抽出して、補正したいだ。そんなことはできるかな?
問題解決娘
ありますよ。今回は、ポートレートモデルの翡翠さんにご協力を頂いて暗い画像の検出、暗い画像を明るくする例で解説します。

 

簡単な処理概要を説明

元画像を読み込む

まずは、元画像がどの様になっているか確認します。

全体的なコードは、最後の方で掲載します。

 

#元画像はこんな感じ(ここでは意味を理解しなくても大丈夫です)
img = cv2.imread('DSC_0948.jpg')
plt.figure(figsize=(10, 8))

#imageの形状確認
print(img.shape)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)

 

■元画像

HSV色座標系の情報をヒストグラム出してみる

 

明るさ(輝度)、色相、彩度の分布が分かる、HSV色座標系のヒストグラムを表示します。

処理の流れは以下の通り

・画像を読み込む

・OpenCVはBGR画像のためRGB画像に変換する

・hsv票色系に変換

hsv = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2HSV) # hsv票色系に変換

・輝度、色相、彩度ごとの色情報を取得する

・パーセントタイルを求める。

このプログの実装例として、パーセントタイルは5%、50%、95%で取得しています。

 

以下のヒストグラムとパーセントタイルを比較します。

{'h_per_5': 68.0,
 'h_per_50': 110.0,
 'h_per_95': 134.0,
 's_per_5': 68.0,
 's_per_50': 110.0,
 's_per_95': 134.0,
 'v_per_5': 42.0,
 'v_per_50': 172.0,
 'v_per_95': 221.0}

 

上図を見ると明るさ(Value)の値が全体的に分布しています。

明るさのパーセンタイル95パーセントの値(v_per_95)が221.0(明るさの最大は、255)なので明るめの画像と言える

 

もう一度、ヒストグラムの画像を表示します。

 

 

プログラムコードなど、詳細な情報が知りたい場合は、最後の方に掲載しています。

 

暗い画像でHSV色座標系のヒストグラムを検証する

「HSV色座標系の情報を出してみる」のところでは、以下の画像について

HSV色座標系のヒストグラムを表示しました。

 

今度は、暗めの画像を表示します。

 

あ!今度は輝度(Value)が、左側に寄ったね。
輝度のパーセントタイルの95%(v_per_95)を見ると、150.0になっているから、全体的に暗いといえるね

 

{'h_per_5': 0.0, 'h_per_50': 100.0, 'h_per_95': 175.0, 
's_per_5': 0.0, 's_per_50': 100.0, 's_per_95': 175.0, 
'v_per_5': 58.0, 'v_per_50': 113.0, 'v_per_95': 150.0}

 

明るさを検出するためのパラメータの調整は、パーセントタイルの値を変更します。

このようにして、プログラムで暗い画像なのか判定できるようになります。

 

暗い画像を明るくしてみる

暗いことがわかっただけでは、意味がありません。

暗かったら明るめに補正したと思うものです。

 

ここでは、暗い画像を明るくする方法を記載します。

ガンマ補正をして明るくしたり暗くしたりします。

くわしい実装方法は、このあと紹介するソースコードをみてください。

 

ガンマ値を1以上の数字にした結果、明るくすることができました。

■補正前の画像

 

■ガンマ値2.0で補正して明るくした画像

 

 

ガンマ値を上げるほど明るくなると言えます。

逆に暗くしたい場合は、ガンマ値を1未満の値を設定して調整します。

 

>>Udemy・Pythonで学ぶOpenCVでの画像処理入門

全体的な実装例

これまで解説してきたことを実装します。

 

ぶっちゃけ、いままでの解説必要なくねぇ?
この章だけあればよかったんじゃねぇ?(笑)

 

それ言われてしまうと元も子もないないですが・・・

独学で挫折した人向け・AI(機械学習)を短期間で学ぶ方法

独学で挫折してしまった
本買ったり、YoutubeでAIを勉強していたんだけど、結局から何を勉強してよいかわからず挫折してしまったんだ。どうしたら解消できる?

PythonをAI(機械学習)について、短期間で効率的に学ぶ方法を紹介します。

それは、以下のようなサービス、プログラミングスクールを利用することです。

プログラミングスキルを習得している人でも機械学習の習得は、難しいため、独学で迷うよりは、プロに教えてもらったほうが遥かに最短経路で身につけることができます。

\AI(機械学習)を学べるプログラミングスクール5選/

イメージ スクール名 学べる内容 受講形式 特徴 料金めやす オススメする人
.Pro(ドットプロ) WEB開発
機械学習(AI)
教室授業 ✔教室による対面授業
✔WEB開発と同時にAIも学べる

AI×Django コース
24週間
¥517,800円

✔仲間と一緒に学びたい
✔AIありのWEBシステムを作りたい
Aidemy Premium Plan WEB開発
機械学習(AI)
オンライン ✔申し込んだ講座以外のカリキュラムも学べる
✔給付金制度を利用して最大70%支給あり

AIアプリ開発講座
12週間
¥528,000円

✔AI(機械学習)について広く学びたい
✔給付金を利用して実質70%引きで学びたい

AIジョブカレ 機械学習(AI)
数学、統計学
教室授業、オンライン ✔10万円台から受講可能
✔数学や統計学を学びたい人向けの講座あり

機械学習講座
16週間
¥132,000円

✔Python,数学、統計学など基礎から学びたい
✔授業形式で講師から学びたい
✔受講料を抑えたい
テックアカデミー WEB開発
機械学習(AI)
Unityでゲーム開発
オンライン ✔AI以外にPHP,Unity,C言語など、主要な言語を学べる
✔料金が10万円代から

Python+AIコース
8週間
¥316,800円

✔AI(機械学習)以外にも学びたいものがある
✔できる限り安い金額で学びたい
✔マイペースで学びたい
侍エンジニア 機械学習(AI)
ブロックチェーン
オンライン ✔現役エンジニアが入学から最後まで寄り添ってサポート
✔ブロックチェーンも学べる
AIコース
12週間〜
¥698,000〜
✔マンツーマンで教えてほしい
✔ポートフォリオのサポートが欲しい
✔ブロックチェーンにも興味がある

>>より詳しく5つのスクールについて知りたい方は、以下をクリック!

 

まとめ

以上、OpenCVを使って暗い画像の検出、明るさの調整、さらに、輝度、色相、彩度のヒストグラムに表示する方法まで解説しました。

 

→VAE、GAN、DCGANも学べるAIジョブカレ!ジュブカレの紹介で転職成功で授業料無料!

付録:kaggleってなに?

冒頭に「kaggle」という言葉が出てきました。

kaggleとは、AI技術者のためコミュニティサイトです。

世界中のAIの技術者が交流をしています。

kaggleでは、コンペがあり、AI技術を競い合っています。コンペで入賞すると100万円くらいの賞金がもらえるため世界中の人達が挑戦しています。

入賞できなくても、上位に入るとメダルという称号を得ることができるため、転職、AI関連の仕事を受注するのに有効です。

 

AIの知識なんてまったくないよ?

そんな人は、初心者向けにkaggleのチュートリアルがあるのでそれを学んでも良いです。

 

しかし

・英語を読むのが億劫だ

・pythonの基礎から勉強したい

・AIの基礎の基礎から入りたい

そんな人は、以下の記事がおすすめです。

 

機械学習の入門!どこから学ぶと良いの?プログラミングスクールやセミナーは効果的?

 

WEBプログラマが、なぜAIジョブカレの機械学習講座を受講中なのか解説します

 

>>サイバーエージェントが運営! 小学生向けプログラミング教室【テックキッズスクール】

AI(機械学習)が学べるスクールを講座ごとに一覧表示!

さらに、比較表を活用することにより、細かい特徴が違いが一発でわかります。

AIスキルを身に付けて、市場価値が高いエンジニアを目指しましょう!

 

AIスクールの検索、比較ができるペン太ブル本家

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG