[scikit-image] 106. scikit-imageで作成する自然な印鑑画像

matplotlib

はじめに

本記事では、Pythonのscikit-imageライブラリを使用して、本物そっくりの印鑑画像を生成する方法を詳しく解説します。デジタル画像でありながら、手彫り印鑑のような自然な風合い、かすれ、にじみを再現する技術に焦点を当てています。

電子文書の普及に伴い、デジタル印鑑の需要が高まっています。しかし、多くのデジタル印鑑は機械的で不自然な見た目になりがちです。本記事で紹介する手法を使えば、自然な質感を持つ印鑑画像を簡単に作成できます。

解説

モジュールのインポートなど

バージョン

画像の読み込み

下記サイトから透過印鑑画像(PNG)を取得しました。

印鑑の画像データを無料で配布|電子印鑑素材
高品質・背景透過の印鑑データが全て無料。PDF・PNG・SVGなど豊富な形式、認印など各種サイズに対応。

読み込んだ画像を表示すると以下のようになります。

画像のアルファチャンネル(透過度像)は以下のようになっています。

大きいムラの導入

2次元データを0で初期化し、ランダムな位置に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’パラメータを設定することで、回転によって生じた余白を画像の端の要素で自然に埋めることができます。

処理順にまとめて表示

処理順にまとめて表示すると以下のようになります。

本物風電子印鑑作成関数

関数化した処理手順は次のようになります。元画像と同じ形式で保存するためにplt.imsave(“”+x+”.png”,img_as_ubyte(r_img),dpi=600)としています。

使用例

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

印鑑の画像データを無料で配布|電子印鑑素材
高品質・背景透過の印鑑データが全て無料。PDF・PNG・SVGなど豊富な形式、認印など各種サイズに対応。
skimage.filters — skimage 0.25.2 documentation
skimage.util — skimage 0.25.2 documentation
skimage.transform — skimage 0.25.2 documentation

コメント