데이터분석/Vision Recognition 36

SIFT 이용해서 Local Descriptor 이용하기

SIFT 파일로 변환시킨 백악관의 이미지여기서 할건 SIFT를 이용해 각기 비슷하거나 다른 이미지간 같은 점을 비교하고자 하는 로직이다. SIFT파일로의 변환은 꽤나 귀찮기 때문에 아래와같이 벌써 변형시켜놓은 아래와 같이 만들어놨다. 결국에는 자기자신빼고는 그다지 일치하는것이 보이지가 않는다. pydot을 이용하면 훌륭한 시각화가 된다. 다만, pip install pydot2를 통해 최신버전을 설치하고, graphviz라는 시각화 툴도 설치하면 되는데 귀찮으니까 하지 않는다.

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

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[:,..

이미지 배열 슬라이싱 및 몇가지 기능

배열 슬라이싱 im[i,:] = im[j,:] # set the values of row i with values from row j im[:,i] = 100 # set all values in column i to 100 im[:100,:50].sum() # the sum of the values of the first 100 rows and 50 columns im[50:100,50:100] # rows 50-100, columns 50-100 (100th not included) im[i].mean() # average of row i im[:,-1] # last column im[-2,:] (or im[-2]) # second to last row 심플 반전 im2 = 255 - im #inver..

openCV에서 제공하는 몇가지 유용한 기능

Salt 직접구현해야함 Color Reduce 색깔 줄이기 openCV - 직접구현해야함 Arithmetic Function cv.add / cv.scaleAdd / cv.divide 등등 사진 영상 더하기 빼기. Split cv.split 영상채널 분리 영상 재매핑 cv.remap 컬러공간 바꾸기 cv.cvtColor(image, cv.어쩌고) 채도명도등을 표현하고 싶을 수 있다. Luv / XYZ /HSV / HLS 등으로. split을 이용해 명도를 최대한 끌어올리고 싶으면 위와같은 함수를 이용할수있다. 히스토그램 cv.calcHist / cv.compareHist 히스토그램을 구한후, threshold를 설정할수도 있고 히스토그램을 늘려서 평준화할수도 있다. 또는 관심점(ROI)의 히스토그램을 구..

이미지 프로세싱 관련 라이브러리 모음

Numpy 대량의 행렬 계산을 처리하는데 간편하게 쓰임. Scipy 여러 과학 / 기초 수학영역에서 많이 쓰이는 계산 라이브러리. PIL 간단한 이미지의 변형을 할수 있는 라이브러리 OpenCV / SimpleCV 이미지 프로세싱의 원조격인 라이브러리. SimpleCV는 이에대한 접근을 쉽게 하기위해 만들어짐. Mahotas 몇가지 openCV가 제공하지 않는 최신의 알고리즘을 제공하는 라이브러리. 그밖에.. Scikit-learn / Scikit-image / ilastik / pprocess / h5py

[Python/openCV 2] 기본

간단하게 다음의 명령어로 이미지를 로딩 import cv2 import numpy as np image = cv2.imread('test01.jpg',0) x = 100 / y = 100 픽셀값은 BGR (RGB가 아님) 세값을 가지고 있어야 한다. image[100,100] 이렇게 치면 해당하는 픽셀정보가 나온다. Blue / Green / Blue 값이다. 8비트 값인데 8비트는 0~255 값을 가지고 있다. 생각해보면 (255,255,255) 흰색임. 이미지 정보는 다음과 같이 볼수있다. image.shape Out[4]: (650L, 1200L, 3L) image.size / image.dtype 등으로 이미지를 확인가능하다. ROI(Region of Interest)설정도 가능한데, 다음과 같이..

openCV를 이용한 간단한 이미지 조작

openCV를 이용하고 설치하는것은 굉장히 까다롭다. 이에대해 한페이지 무더기로 글을 쌌으므로 확인하도록 한다. 일단 이미지 로딩은 다음과 같다. 원본이미지는 다음과 같다. 그레이스케일로 이미지 불러오기 import cv2 import numpy as np image = cv2.imread('test01.jpg',0) 이렇게 하면 그레이스케일로 잘 로딩할수 있다. 다만 openCV에서는 괴상하게도 X를 누르면 잘 꺼지지가 않는다. 다음처럼 코딩해서 뭔가 그림이 꺼지게끔 해야한다. 실제 이미지 띄우기 cv2.imshow('image',image) cv2.waitKey(0) cv2.destroyAllWindows() 파이썬 코드는 단순한 C++의 코드의 wrapper클래스이기 때문에, 실제 C++ 구현방식을..

scikit-image를 이용한 간단한 이미지 불러오기

Scikit-Image 를 이용한 간단한 이미지 머신러닝. Scikit-image.org는 다음의 링크에서 참조를 한다. (mahotas라는 것도 있지만, 아예 컴파일도 안되고 불편하다.) http://scikit-image.org/ 이외에 ndimage 혹은 opencv를 이용하면 된다. 이미지는 다음과 같이 불러온다. 이미지는 인터넷에서 가져온 뭔 3d프린터 캐릭터 사진이다. 그냥 퍼오기 미안하니 삼디프린터는 저 사진에 나온 사이트로 문의 해라. from skimage import data, io, filters image = io.imread("test01.png") 이미지를 한번 출력해보면 matplotlib.pyplot으로 쉽게 출력 가능하다. import matplotlib.pyplot as ..