はじめに
skimage、scipy, numpy, matplotlibでムラ、かすれのある本物風印鑑画像を作成する方法について説明する。
解説
モジュールのインポートなど
バージョン
画像の読み込み
下記サイトから透過印鑑画像(PNG)を取得した。
印鑑の画像データを無料で配布|電子印鑑素材
高品質・背景透過の印鑑データが全て無料。PDF・PNG・SVGなど豊富な形式、認印など各種サイズに対応。
読み込んだ画像を表示すると以下のようになる。
画像のアルファチャンネル(透過度像)は以下のようになる。
大きいムラの導入
0で構成された2次元データにランダムな位置に400の値を設定する。それにsigma=20のgaussian_filterをかけて、最大値が1より小さい画像を作成する。
作製した画像をinvertで反転して表示すると以下のようになる。
初期画像のアルファチャンネル(img[:,:,-1])と上画像を掛け合わせると以下の画像が生成できる。
を元画像(RGB画像)と上のアルファチャンネル画像をdstackで結合させることで、ムラのある印鑑画像が生成できる。
かすれの導入
先ほど作製したアルファチャンネル画像(img_mura[:,:,-1])をコピーして、この画像のランダムな位置を0とする。その画像は以下のようになる。
新しく作製したアルファチャンネル像を元画像(RGB画像)とdstackで結合させることで下の画像が生成できる。
ぼかしの導入
skimage.filtersのgaussianフィルターをかけて印鑑画像をぼかす。
角度の調整
skimage.transformのrotateで印鑑の角度を調整する。mode=’edge’とすることで回転することでできた余白を画像のedgeの要素で埋める。
処理順にまとめて表示
処理順にまとめて表示すると以下のようになる。
本物風電子印鑑作成関数
処理順を関数化すると以下のようになる。元画像と同じ形式で保存するためにplt.imsave(""+x+".png",img_as_ubyte(r_img),dpi=600)
としている。
使用例
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
参考
印鑑の画像データを無料で配布|電子印鑑素材
高品質・背景透過の印鑑データが全て無料。PDF・PNG・SVGなど豊富な形式、認印など各種サイズに対応。
skimage.filters — skimage 0.25.0 documentation
skimage.util — skimage 0.25.0 documentation
skimage.transform — skimage 0.25.0 documentation
コメント