Python入門トップページ


目次

  1. scikit-image のインストール
  2. Matplotlib による画像の表示
  3. 表示関数の定義
  4. RGBA から RGB への変換
  5. グレースケールをイメージする
  6. RGB からグレースケールへの変換
    1. RGB 平均
    2. ITU-R Rec BT.602
    3. Contemporary CRT phosphors (Rec 709)
    4. 3種類の比較
    5. scikit-image の rgb2gray 関数
  7. 平均化フィルタ
    1. 平均化フィルタの自作
    2. 平均化フィルタの一般化
    3. scikit-image の平均化フィルタ関数
  8. ガウシアンフィルタ
  9. バイラテラルフィルタ
  10. ランダムノイズとフィルタ
  11. ソーベルフィルタ
    1. ソーベルフィルタの自作
    2. scikit-image の sobel 関数
    3. 平均化/ガウシアンフィルタとソーベルフィルタの併用

画像フィルタの作成と利用

平均化フィルタ

scikit-image の平均化フィルタ関数

前のページでは平均化フィルタを自作しましたが,scikit-image では様々なフィルタ関数が提供されています.ここでは,scikit-image の filters.threshold_local 関数による平均化フィルタを使用してみます.なお,filters.threshold_local 関数の詳細やソースコードはここを参照してください.

まず,「表示関数の定義」ページを参照し,ライブラリのインポートと関数の定義を実行したあと,画像ファイルをグレースケールに変換して表示します.

ink_img = plt.imread('ink.png')
img = color.rgba2rgb(ink_img)
gray_img = color.rgb2gray(img)
show(gray_img)
オリジナル
filters_20_gray.png

次に平均化フィルタの処理を行います.関数 filters.threshold_local の引数で,method='mean' を指定することで平均化フィルタを指定できます.また,block_size=7 とすることで,7x7画素の近傍領域を使用することになります.

mean_img = filters.threshold_local(gray_img, method='mean', block_size=7)
show(mean_img)
平均化フィルタ (7x7画素)
filters_23_mean7

拡大図も作成します.これは前のページの結果と同じであるはずです.

show_zoom_with_color(
    mean_img, xlim=(50.5,59.5), ylim=(89.5, 80.5),
    figsize=(6,6), fontsize=10, show_color=True
)
平均化フィルタ (7x7画素)
filters_23_mean7_zoom

ここでは,scikit-image で提供される filters.threshold_local 関数を使って平均化フィルタ処理を行いました.次のページではscikit-image のガウシアンフィルタを利用してみます.

目次に戻る