画像の特徴点

前準備

Python のインストール(Windows上)

注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.

winget(Windowsパッケージマネージャー)を使用してインストールを行う

  1. Windowsで,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する:
    winget --version
    
  3. Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
    winget install --scope machine Python.Launcher
    winget install --scope machine Python.Python.3.12
    
  4. 【関連する外部サイト】

    【サイト内の関連ページ】

    ImageMagick のインストール

    curl のインストール

    VLFeat のインストール

    ここで説明のためにサンプルとして使用する画像

    curl コマンドを用いてダウンロードできる.あるいは Web ブラウザでもダウンロードできる.

    curl -L https://github.com/opencv/opencv/blob/master/samples/data/fruits.jpg?raw=true -o fruits.jpg
    

    VLFeat のコマンド(sift コマンド, aib コマンド, mser コマンドなど)

    SIFT 実行と結果表示(VLFeat,Python を使用)

    1. SIFT の実行

      VLFeat の sift コマンド,ImageMagick の convert コマンドを使用. 次を実行することにより,ファイル fruits.sift ができる.

      curl -L https://github.com/opencv/opencv/blob/master/samples/data/fruits.jpg?raw=true -o fruits.jpg
      convert fruits.jpg fruits.pgm
      sift fruits.pgm
      
    2. 結果の表示

      Python プログラムの実行

      【サイト内の関連ページ】 Python のまとめ: 別ページ »

      Python プログラム

      import os
      import cv2
      import pandas as pd
      import numpy as np
      bgr = cv2.imread("fruits.jpg")
      a = pd.read_table("fruits.sift", sep=' ', header=None)
      for i, row in a.iterrows():
      #    print(i, row[0], row[1])
          c = cv2.circle(bgr, (int(row[0]), int(row[1])), 3, (0, 0, 255), -1)
      
      cv2.imshow("", bgr)
      cv2.waitKey(0)
      cv2.destroyAllWindows()
      

    SIFT の結果表示(Octave を使用)

    今度は fruits.jpg と fruits.sift を Octave を用いて表示.

    S = dlmread("fruits.sift", " ", 1, 0);
    [rgb, map, alpha] = imread("fruits.jpg");
    mono = rgb2gray( rgb );
    colormap( gray(256) );
    hold
    imshow(mono);
    plot(S(:,1), S(:,2), '@');
    

    MSER 実行と結果表示(VLFeat,Python を使用)

    1. MSER の実行

      VLFeat の sift コマンド,ImageMagick の convert コマンドを使用. 次を実行することにより,ファイル fruits.frame ができる.

      curl -L https://github.com/opencv/opencv/blob/master/samples/data/fruits.jpg?raw=true -o fruits.jpg
      convert fruits.jpg fruits.pgm
      mser fruits.pgm
      
    2. 結果の表示

      Python プログラムの実行

      【サイト内の関連ページ】 Python のまとめ: 別ページ »

      Python プログラム

      import os
      import cv2
      import pandas as pd
      import numpy as np
      bgr = cv2.imread("fruits.jpg")
      a = pd.read_table("fruits.frame", sep=' ', header=None)
      for i, row in a.iterrows():
      #    print(i, row[0], row[1])
          c = cv2.circle(bgr, (int(row[0]), int(row[1])), 3, (0, 0, 255), -1)
      
      cv2.imshow("", bgr)
      cv2.waitKey(0)
      cv2.destroyAllWindows()
      

    MSER の結果表示(Octave を使用)

    今度は fruits.jpg と fruits.frame を Octave を用いて表示.

    S = dlmread( "fruits.frame", " ", 1, 0 );
    [rgb, map, alpha] = imread("fruits.jpg");
    mono = rgb2gray( rgb );
    colormap( gray(256) );
    hold
    imshow(mono);
    plot(S(:,1), S(:,2), '@');