데이터분석/Vision Recognition

vlfeat 과 파이썬을 이용한 SIFT 구현

늘근이 2016. 1. 1. 19:53

C로 구현되어 있는 프로그램이다.

http://www.vlfeat.org/

 

다운로드를 받고 PATH를 설정후에, 작업한다.

 

이미지 파일은 pgm으로 끝나야 하기 때문에 numpy의 기능을 빌려서

 

im = Image.open('test01.jpg').convert('L')

im.save('something.pgm')

 

으로 재저장을 한 후, 커맨드프롬프트를 통해 다음과 같이 실행한다.

 

$ sift tmp.pgm --output test01.sift --edge-thresh 10 --peak-thresh 5

 

그리고 plot은 다음과 같이 그린다.

 

그리고 다음과 같이 읽는다. l1=location d1=description

 

    f = loadtxt('test01.sift')

    l1 =   f[:,:4] 
    d1 =  f[:,4:]

 

l1과 d1에 이제 모든 파일이 저장되어있으므로, plot을 그릴수 있다.

 

 

figure()

gray()

imshow(im1)

plot(locs[:,0],locs[:,1],'ob')

 

 

동그라미도 가능하다. 다음함수를 쓰고

 

     def draw_circle(c,r):
        t = arange(0,1.01,.01)*2*pi
        x = r*cos(t) + c[0]
        y = r*sin(t) + c[1]
        plot(x,y,'b',linewidth=2)

 

 

        for p in l1:
            draw_circle(p[:2],p[2])

 

위의 함수를 섞어쓰면 된다.

 

 

 

 

 

코드는 전적으로 Programming Computer Vision , Jan Erik Solem 의 책에서 안되는 부분 제거하고 구현해본 것입니다.