PythonとOCRで数字を振り分け - 2
はじめに
前回(こちら)の続きです。結果を見ていると、どうも7のフォルダに7と空白(真っ白)の画像が多く分類されてしまうことがわかりました。これでは、学習データとして使用するにも不便です。
どうするの?
そもそも、画像データというのは、(pngやjpgなどは圧縮されバイナリ化されてますが、考え方としては、各場所、各色の明るさを示す)数値の集まりです。配列があり、座標に該当する場所に色コードが格納されている...といえば良いのでしょうか?
大きさが10*10の画像が在るとすれば、一番左上の画素はpic[0][0]、右下の画素は[9][9]のようになり、それぞれに値としてRGB(255,255,255)のように格納されています。今回はこれを活用します。
今回の画像は白黒ですので、グレースケールとして読み込み、それぞれの値をRGB(255,255,255)ではなく、明るさのみの(0)から(255)のデータにします。
そして、これらデータが格納されている配列の最小値が230(任意の値)より多きければその画像は真っ白である。と考えることにしましょう。ここまでくれば簡単です。上記に一致する際にファイルを移動するだけ。
実際のコード
これを実際にコーディングしてみました。
処理には主にopenCVとnumpyを利用しています。
コードはGitHubに掲載します。
結果
結果としては、まずまず良い出来でした。
2-3枚の取りこぼしはありましたが、ほぼほぼ移動することに成功しました。
その数なんと約2000枚。これを手動でやったら大変です。
まとめ
今回の空白画像の振り分けはうまくいったと思います。
特に、同じようなデータが大量にある際は、プログラムを書いたほうが楽で速いということを改めて実感しました。
またこのような問題があれば記事にしたいと思います。
それでは
ばいち
コメント