[python]画像の明るさを判定する


概要


画像認識をしていて、画像の明るさを判定して分類したくなりました。

具体的には、室内で撮影しているのですが、電気が消えている(=人がいない)ときはアプリケーション的に判定しても無駄なので、そもそも判定する処理に入らないようにしたかったんです。

とうことで、撮影した画像の明るさを判定する手法を考えました。



方法


手順は以下の通りです。

  1. 画像をグレイスケールに変換し、2値にする

  2. 画像内の全成分を足し合わせる

  3. 画像サイズで規格化する

画像をグレイスケールにした場合、明るいところは値が大きくなり、暗いところは値が小さくなります。これを利用して、画像内の全成分を足して規格化したものをその画像の「明るさ」として判定に利用できます。


コードは以下の通りです。


def judgeLight(file):

    img=cv2.imread(file, cv2.IMREAD_GRAYSCALE) #1 グレイスケールで読み込み
    img=img.astype('float')
    img/=255

    sumGray=img.sum()  #2 全成分を足し合わせ
    meanGray=sumGray/(img.shape[0]*img.shape[1])  #3 規格化
    
    return meanGray

試しにいくつかの画像で試してみます。


imgNames=glob.glob('*.png')

for imgName in imgNames:
    
    m=judgeLight(imgName)
    
    print(meanGray)
    
    plt.figure()
    plt.gray()
    plt.imshow(img)
    plt.show()

暗い画像の方が値が小さく出ていることがわかります。

あとは適当に閾値を決めて、暗い画像を弾けばOKです。



最後に


いろいろググっても出てこなかったので自分なりに考えましたが、もしかしたらもっとちゃんとした方法があるのかもしれません。



靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

テーマ日記:テーマを決めてジャンルごとに記録

訂正①2040×1152.jpg

ジャンルごとにテーマ、サブテーマをつけて投稿、記録できる日記アプリです。

google-play-badge.png