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. 平均化/ガウシアンフィルタとソーベルフィルタの併用

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

RGB からグレースケールへの変換

scikit-image の rgb2gray 関数

ここでは scikit-image.color で提供される rgb2gray 関数を使ってカラー画像をグレースケールに変換します.なお,rgb2gray の内部では Contemporary CRT phosphors (Rec 709) のアルゴリズムが使用されています.詳細なドキュメントやソースコードはここで確認できます.なお,あらかじめ「表示関数の定義」ページを参照し,ライブラリのインポートと関数の定義を実行しておいてください.

実際に rgb2gray 関数を利用しますが,元の画像が RGBA データの場合は予め RGB に変換しておく必要があることに注意してください.

ink_img = plt.imread('ink.png')
img = color.rgba2rgb(ink_img)
gray_img = color.rgb2gray(img)
show(gray_img)
filters_07_gray1

徐々に拡大して表示します.

show_zoom_with_color(gray_img,
    xlim=(50,100), ylim=(100, 50),
    show_color=False
)
filters_07_gray2
show_zoom_with_color(gray_img,
    xlim=(40,70), ylim=(100, 70),
    show_color=False
)
filters_07_gray3
show_zoom_with_color(gray_img,
    xlim=(50.5,59.5), ylim=(89.5, 80.5),
    show_color=False,
    figsize=(6,6)
)
filters_07_gray4

色の情報も表示してみます.

show_zoom_with_color(gray_img,
    xlim=(50.5,59.5), ylim=(89.5, 80.5),
    figsize=(6,6),
#   show_color=False,
    fontsize=6
)
filters_07_gray5

上の結果は Contemporary CRT phosphors (Rec 709) で示した結果(下図)と同じになるはずです.

filters_06_gray2

目次に戻る