はじめに
skimage.segmentation.slic, graph. rag_mean_color, filters. unsharp_maskを使って、写真画像をイラスト風に変換する例について説明する。
解説
モジュールのインポートなど
バージョン
画像の読み込み
サボテン ノトカクタス すみれ丸の写真を用いる。なお、このサボテンは関西では「シャクヤク丸」、関東では「スミレ丸」と呼び名が違う。

segmentation.slicによるセグメント化
RGB画像でk-meansクラスタリングを使用して画像をセグメント化する。n_segmentsでセグメント化するラベルのおおよその数を設定できる。ここではその数を[200,400,800,1600]としてセグメント化した。
n_segmentsを変化させた場合の結果
結果を表示すると以下のようになる。次のステップには右下のn_segments =1600の画像を用いる。

グラフカットによる領域の結合
各領域の平均色を用いて領域隣接グラフを作成し、似ている色の領域を結合する。どのくらいの近似度かを設定するパラメータとしてthreshを用いる。ここでは、threshを[.02,.04,.06,.08]として領域を結合した。print(labels2.max())でラベル画像の最大値を表示することでthreshの増加で領域数が低下していることがわかる。
threshを変化させた場合の結果

unsharp_maskによる画像の鮮明化
処理の増幅度を調整するパラメータであるamountを変化させてunsharp_mask処理を行う。unsharp_maskについては下記記事で解説した。

[scikit-image] 36. アンシャープマスク処理による画像の鮮明化(skimage.filters unsharp_mask)
ここでは、skimage filters unsharp_maskにより画像を鮮明化する例について説明する。
amountを変化させた場合の結果

イラスト化処理前後を比較

イラスト化処理の関数
結果に影響するパラメータとしてn_segments,thresh,amountを変数として関数化した。
画像に関数を適用

参考
skimage.segmentation — skimage 0.25.2rc0.dev0 documentation
Page not found · GitHub Pages
Page not found · GitHub Pages
skimage.filters — skimage 0.25.1 documentation
コメント