[scikit-image] 106. skimageで本物風印鑑画像を作成する(filters. gaussian, transform.rotateなど)

matplotlib

はじめに

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.24.0 documentation
skimage.util — skimage 0.24.0 documentation
skimage.transform — skimage 0.24.0 documentation

コメント