scikit image について

scikit image とは

scikit-learn系列の画像処理、機械学習ライブラリ

基本的な使い方

ライブラリ / 画像 のロード

  • ライブラリのロード

    import skimage
    
  • 画像の読み込み

    import skimage.io
    inpFile = "input.jpg"
    image   = skimage.io.imread( inpFile )
    
  • 画像の表示

    from skimage import io
    from matplotlib import pyplot as plt
    io.imshow( image )
    plt.show()
    

openCVとの交換

  • 基本的には、

    1. 関数を読み込んで使用することと.

    2. BGR <-> RGB の変換を忘れないこと.

OpenCV -> skimage

  • OpenCVは整数 np.uint8 ( 0-255 )型でBGR順、 skimage は小数を用いておりRGB順

    import skimage.util
    image_sk = ( skimage.util.img_as_float( image_cv ) )[:,:,::-1]
    

skimage -> OpenCV

  • skimage は小数を用いておりRGB順, OpenCVは整数 np.uint8 ( 0-255 )型でBGR順

    import skimage
    image_cv = ( skimage.img_as_ubyte( image_sk ) )[:,:,::-1]
    

scikit-imageにある楕円検出について

  • 楕円Hough変換 等、試行錯誤の備忘録

skimage.transform.hough_ellipse() について

  • 関数自体は使用可能.

  • ちゃんと絞った狙いの楕円に対して(大きさがだいたいわかってて、無駄なパラメータを探索せず、そもそも画像サイズも落としたデータ)、問題なく動作することを確認.

  • 一方、計算量が膨大.とてもではないが、どこにあるかわからない楕円を検出させるのはかなり計算過多.

skimage.measure.EllipseModel()について

  • 楕円検出で検索にかかるが、これは、画像ではなく、データ点群に対して使用する.

  • データ点群を楕円にフィットしたら、どういうパラメータ ( xc, yc, a1, a2, angle ) になるかを返却する関数なので、直接、楕円検出には使用できない.