はじめに
ここでは、skimage.transformのpyramid_gaussianによる一定倍率で縮小された連続画像の生成方法について説明する。
コード
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)解説
モジュールのインポート
画像データの読み込み
パロディア属(旧ノトカクタス属)獅子王丸(Parodia submammulosus)の画像をplt.imread()で読み込む。
画像ピラミッドの構築
rows, cols, dim = image.shapeでimageの行数、列数、次元数を取得する。ここでは、順に512, 512, 3となっている。
pyramid_gaussian()で画像ピラミッドを構築する。tuple()で囲むことでタプル形式の画像の集合としてデータを取得する。
ピラミッド画像を複合化した画像をcomposite_imageとして、
np.zeros((rows, cols + cols // 2, 3), dtype=np.double)で作成する。これですべて0の要素のimageよりも横方向にcols // 2だけ長い画像が生成される。
この複合化画像の左にpyramid[0]を表示するため、composite_image[:rows, :cols, :] = pyramid[0]とする。
n_rows, n_cols = p.shape[:2]でピラミッド化した画像のサイズを取得し、
composite_image[i_row:i_row + n_rows, cols:cols + n_cols,:] = pで画像を表示していく。
i_row += n_rowsとしているので、次の画像がn_rowsの分だけ下に表示されるので、重ならないようになっている。
結果の表示
画像の大きさを揃えて表示
画像ピラミッドにすると、小さいサイズの画像が小さすぎてわかりづらい。そこでsubplotsでそれぞれの画像を表示した。
16×16あたりで、何かわからない状態となることがわかる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)
コメント
[…] [scikit-image] 25. 一定倍率で縮小された連続画像を生成(transform.pyramid_gaussian)ここでは、skimage.transformのpyramid_gaussianによる一定倍率で縮小された連続画像の生成方法について説明する。sabopy.c […]