前回の続きです。

(2)学習用画像を変換・加工するツール

1.概要
CNNでは学習用のデータを学習に都合の良いように加工することが多くあります。
以前Kerasで作成したときにはプログラム中で ImageDataGenerator を使用して画像を水増ししましたが、実行時間などを考慮するとあらかじめ画像を作成した方が良い場合があります。
このツールでは、画像形式の形式変換や、モノクロ変換、ノイズ不可、回転・縮小拡大などの幾何学的な変換などを行います。
 
【動作確認環境】
Windows 10, Python 3.11.0, OpenCV 4.6.0
Ubuntu 20.04, Python 3.8.8, OpenCV 4.5.5
 
2.ダウンロード
 
学習用画像を変換・加工するツール(Zipファイル)
imagetransform.zip
 
3.起動方法

【windows】
バッチファイルで起動
imagetransform.bat

仮想環境で実行する場合は、以下のようにバッチファイルを環境に合わせて変更します。
{Pythonホーム}\Scripts\activate.bat &python imagetransform.py

【Ubuntu】
ターミナルから起動シェルで実行
./imagetransform.sh

または、Ubuntu の desktop ファイルを編集してデスクトップから起動する方法などがあります。詳しくは同梱のreadme.txtをご覧ください。

 
 

4.操作方法概要

①起動するとメインウィンドウが開きます。必要に応じてオプションを選択してください。

imagetransform01

メインウィンドウのオプション

・画像形式
変換後の出力画像形式を選択します。 選択しない場合は基本的には元画像と同じ形式です。
ただし、元の画像がモノクロ(グレー)の場合は画像形式はカラーと同じ24bit画像になります。またカラー32bit画像も24bit画像に変換されます。
モノクロ8bitで出力する場合は「効果」オプションで”Gray”を選択してください。
・背景色
回転オプションや縮小オプションなどの幾何学的な変換で生じる余白を埋める色を指定します。デフォルトは”Random”でランダムノイズになります。
・効果
元の画像に効果を加えます。 ぼかし(Blur)、ノイズ(Noise)、グレースケール(Gray)が選択できます。
ぼかしとノイズは強度値の設定ができます。
・回転
指定した角度範囲で元画像を段階的に回転した結果を出力します。
オプションを選択すると回転範囲が入力できます。左周りで右開始角度(°)~左終了角度(°)が入力できます。
右横の欄はステップ(段階的に出力する画像の数)を入力します。(以下のオプションも同様。)
・傾斜(スキュー)
指定した角度範囲で元画像を段階的に傾斜させた結果を出力します。。
オプションを選択すると範囲が入力できます。右開始角度(°)~左終了角度(°)が入力できます。
・左右シフト
指定した範囲(画像の幅の%)で元画像を段階的に左右にずらした結果を出力します。。
オプションを選択すると範囲が入力できます。左シフト(%)~右シフト(%)が入力できます。
・上下シフト
指定した範囲(画像の高さの%)で元画像を段階的に上下にずらた結果を出力します。。
オプションを選択すると範囲が入力できます。上シフト(%)~下シフト(%)が入力できます。
・拡大縮小
指定した範囲(縦横の%、縦横比は変更なし)で元画像を段階的に縮小・拡大した結果を出力します。
オプションを選択すると範囲が入力できます。最小値(%)~最大値(%)が入力できます。
・左右縮小引き伸ばし
指定した範囲(横の%、縦は変更なし)で元画像を段階的に縮小・伸張した結果を出力します。
オプションを選択すると範囲が入力できます。最小値(%)~最大値(%)が入力できます。
・上下縮小引き伸ばし
指定した範囲(縦の%、横は変更なし)で元画像を段階的に縮小・伸張した結果を出力します。
オプションを選択すると範囲が入力できます。最小値(%)~最大値(%)が入力できます。

②「元画像フォルダ選択」ボタンを押して画像ファイルのあるフォルダを選択してください。
フォルダにあるJPG,PNG,BMP形式の画像ファイルが対象になります。サブフォルダは無視されます。
③出力フォルダを選択してください。選択すると出力フォルダにフォルダ名日時14桁のサブフォルダが生成されます。
④処理中の画像はウィンドウに表示されます。

実行結果010

⑤処理が終了するとウィンドウが閉じてメインメニューに戻ります。

実行結果の例

実行結果020

(2023/08/28 Shin Onda)