160919_Installing-Ubuntu-alongside-other-pre-installed-OS.pdf


Windows와 Mac OS X에서 듀얼 부팅으로 Ubuntu를 설치하는 가이드입니다.



Posted by 헬벨

Windows 사용자는 여기로: http://hellbell.tistory.com/entry/Sublime-Text-3-Latex-Plugin-설치-in-Windows-7

OS X El Capitan을 사용함.


가정: MacTex은 이미 설치됨

MacTex: https://tug.org/mactex/ 에서 다운로드


1. Sublime text 3 를 설치한다. (http://www.sublimetext.com/3)

2. Sublime text 3 를 켜고, Package Control 을 설치한다. (패키지 컨트롤은 plugin들을 쉽게 설치할 수 있게 도와주는 애드온임)

설치 방법 : ctrl + ` 눌러서 console 창 띄우고 아래 링크에 있는 내용 복사하여 붙여넣고 엔터.

(https://packagecontrol.io/installation)

3. 이제 command+shift+p 를 누르고 “install ” 입력하고 엔터 -> latextools 입력하고 선택하여 설치.

4. 메뉴의 preferences -> package settings -> latextools -> reconfigure latextools and migrate settings. 으로 설정 완료.

5. 메뉴의 tools -> build system -> LaTex 선택하여 빌드 세팅 완료. 시험삼아 아무 tex파일이나 켜서 command + b (빌드 단축키)로 빌드해보자.

(여기까지는 Windows의 방법과 똑같다.)

6. Skim PDF viewer 설치 (http://skim-app.sourceforge.net)

6-1. 다운로드된 파일이라고 Skim이 열리지 않을 경우, finder에서 skim앱을 control + click하여 drop down 메뉴를 띄우고, 열기를 눌러 실행한다.

7. Skim을 실행하고, Preference -> sync tab으로 이동.

  • Check for file changes을 체크해제
  • Preset type은 Custom을 선택
  • Command에 /Applications/Sublime Text.app/Contents/SharedSupport/bin/subl 를 입력
  • Arguments에  "%file":%line 를 입력
8. 끝.
9. Forward search는 Sublime text에서 command+b 명령으로 빌드하면, skim viewer가 뜨면서 자동으로 현재 line이 강조 표시된다.
Inverse search는 skim앱에서 되돌아가 가고픈 부분을 command+shift+click하면 Sublime text로 돌아간다. 


Posted by 헬벨

OpenCV를 Visual studio 환경에서 debugging할 때는 ImageWatch라는 tool을 사용하면 편리하다.

파이썬에는 ImageWatch가 없어 아쉽지만,,

프로그램 중간 중간의 결과물을 logging해서 볼 수 있는 visual-logging 이라는 툴이 있어 설치해보았다.


예제 코드

from logging import FileHandler

from vlogging import VisualRecord


import cv2

import logging


cv_image = cv2.imread('lenna.jpg')

logger = logging.getLogger("demo")

fh = FileHandler('test.html', mode="w")


logger.setLevel(logging.DEBUG)

logger.addHandler(fh)


logger.debug(VisualRecord(

    "Hello from OpenCV", cv_image, "This is openCV image", fmt="png"))


lenna.jpg를 읽어온 후, logger에 글과 image를 추가하면 html 형식으로 저장이 된다.




Posted by 헬벨

요즘 개발 언어로 주로 MATLAB과 C++(OpenCV)를 사용하는데 

아무래도 MATLAB의 편의성때문에 MATLAB을 이용한 개발을 더 선호한다. 

하지만 MATLAB은 성능 한계가 있고 강력한 OpenCV 라이브러리를 사용할 수 없다는 아쉬움이 있다.

그러던 중 Python은 스크립트 언어로 컴파일의 애로사항이 적으며 OpenCV 라이브러리가 제공된다고 하여 이 기회에 설치하고 익혀보려고한다.


파이썬과 OpenCV 라이브러리를 사용하는 방법은 여러가지가 있다. 

여기서는 Windows 환경과 Visual studio를 IDE로 사용하는 방법을 정리해보겠다. (Python + Sublime Text 의 조합도 좋다고 한다.)

(내 환경: Windows 8.1 64bit, Visual studio 2013)

(OpenCV를 사용해야하므로 Python은 2.7버전을 사용함) 




(이하 설치 방법에 대한 설명. 설치 과정에서 삽질을 좀 하는 바람에 기억이 정확하지 않을 수 있음..)


파이썬 설치방법은 두 가지가 있는 듯 하다.


첫째로, python (https://www.python.org/download/releases/2.7/)에서 설치 파일을 다운 받아 설치하는 방법이 있다.

이 방법은 python의 필수 패키지 (여기서는 pip, numpy, opencv 등)을 직접 설치해줘야 한다.

처음엔 나도 이 방법으로 시도했는데 numpy 를 설치할 때 build 에러가 나서 포기하고 두번째 방법으로 넘어갔다.



두번째 방법은 python + pre-built packages의 통합팩인 python distribution을 설치하는 것이다.

이러한 distribution은 WinPython, Anaconda, Enthought Canopy 등이 있는데, 주변에서 canopy (1.5.2 버전)를 추천받아 설치하였다. 

Enthought Canopy는 매우 쉽고 편리하다는 장점이 있는데, 무료 버전과 유료 버전이 존재한다.

Numpy나 SciPy 같은 기본 package(100+개)는 무료 버전에서도 이용할 수 있으나

OpenCV 같은 package들은 유료 버전(200+개 패키지 제공)에서만 사용할 수 있다.

하지만 잘 읽어보니 학생 계정(@*.ac.kr과 같은)으로 로그인하면 유료 버전을 사용할 수 있는 licence를 제공한다.!

따라서 회원 가입을 학교 메일 계정으로 한 후 설치를 진행하였다.

다른 distribution들은 설치를 안해봐서 모르겠는데, Canopy는 GUI로 패키지를 설치할 수 있어 편리했다. 

NumPy와 OpenCV를 설치하였다. (OpenCV는 2.4.9 버전)



이제 파이썬 설치가 끝났으니 Visual Studio를 켜보자.

Visual Studio에서 Python을 사용할 수 있게 해주는 PTVS에 대한 설명은 https://pytools.codeplex.com/ 에서 참고하도록 하자.

File -> New project -> Python Application 을 선택하여 Python 프로젝트를 생성한다.

Tool -> Option -> Python tools -> Environment options 을 열고, Enthought Canopy 2.7이 default environment로 되어있음을 확인한다.

Tool -> Python Tools -> Python Environment 를 선택하여 Refresh DB를 눌러준다. 



Refreshing DB가 끝나면 설치도 대강 마무리되었다고 할 수 있다.



OpenCV 예제를 돌려보자.


import cv2

from matplotlib import pyplot as plt


img = cv2.imread('img.jpg')


plt.imshow(img)

plt.title('Image')

plt.show()






Posted by 헬벨

MATLAB code: 

toy_example_intersection_area.m


Object detection과 같은 과제를 수행할 때 algorithm의 성능을 평가하기 위해 IOU (intersection over union)이라는 지표를 사용한다.

일반적으로 2D image에서 사용되는 IOU는 다음과 같이 구한다.


붉은색 상자(A1): 실제 물체의 bounding box (ground truth) 

파란색 상자(A2): object detection 결과 bounding box

노란색 점선: overlapped area


A1 = [x1  y1  x2  y2] % [xmin, ymin, xmax, ymax]

A2 = [x1' y1' x2' y2']

S(A1) = area of red box = (x2-x1) * (y2-y1)

S(A2) = area of blue box = (x2'-x1') * (y2'-y1')

A_Inter = intersection area of two boxes = ( min(x2,x2') - max(x1,x1') ) * ( min(y2,y2') - max(y1,y1') ) 

A_Union = union area of two boxes = A1 + A2 - A_inter


IOU = (A_Inter) / (A_Union)


PASCAL VOC 기준으로 IOU > 0.5 인 경우에 detection이 성공했다고 할 수 있다.

% 사족으로 IOU > 0.5 라는 것은 두 박스의 크기가 동일하다고 할 때, intersection area가 2/3 이상이 겹쳐야 한다는 뜻으로, 꽤 엄격한 기준이다.



위 방법은 사각형의 rotation을 고려하지 않는다. 

좀 더 일반적인 경우로, 사각형의 rotation이 존재할 때 겹치는 영역의 면적을 구하는 방법을 알아보자.


ㅇㅇ            

(A) Two overlapping boxes                                                 (B) Intersecting Edge Points


            

(C)  Inside Box points                                                            (D) Intersection Polygon


(B) Intersecting Edge Points 구하기 (marker: o)

두 사각형의 변(edge)들의 intersecting point를 구한다.

[xi, zi] = polyxpoly(gt_x, gt_z, this_x, this_z);


(C) Inside Box Points 구하기 (marker: *)

in_gt   = inpolygon(gt_x(1:4),gt_z(1:4), this_x,this_z);

in_this = inpolygon(this_x(1:4),this_z(1:4), gt_x,gt_z);

xi = [xi; gt_x(in_gt)'; this_x(in_this)'];

zi = [zi; gt_z(in_gt)'; this_z(in_this)'];


(D) (B)~(C)에서 구한 points 의 convex hull을 구하고, 내부 area를 구한다. (intersection area: inside green lines)

cv = convhull(double(xi), double(zi));

xi = xi(cv);

zi = zi(cv);

xz_area = polyarea(xi, zi);



Posted by 헬벨

VS 2013 project

kinect_pcl_test.zip


목적: Kinect v2 SDK로 Kinect device로부터 RGBD frame 입력을 받아온 후, PCL을 이용하여 point cloud를 생성하고 (.pcd) file로 저장.


준비물: 

Visual Studio 2013

Kinect v2 SDK

PCL 1.7.2

OpenCV 2.4.10



첨부한 VS 2013 project는 속성 파일 (KinectSDK2.props, PCL.props) 을 포함하고 있다. 

Include directory와 library directory의 path를 세팅해줘야 한다.

시스템 환경 변수 설정


 PCL_ROOT (생성)

 C:\Program Files\PCL 1.7.2

 Path (추가)

 ;%PCL_ROOT%\bin

 ;%PCL_ROOT%\3rdParty\FLANN\bin
 ;%PCL_ROOT%\3rdParty\VTK\bin
 KINECTSDK20_DIR C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\
 OPENCV_DIR

 Your OpenCV Install DIR

 OPENCV_VER

 Your OpenCV VER (currently 2410)








Posted by 헬벨

준비물: visual studio 2013, Opencv 2.4.10


참고 사이트 (http://www.buildinsider.net/small/kinectv2cpp) - 구글 번역 추천

visual studio 샘플 다운로드 (https://github.com/UnaNancyOwen/Kinect2Sample)



Posted by 헬벨

연구실 과제용 연구용으로 Kinect v2를 구매하여 내 데스크탑에 설치해 보았다.


우선 requirement는 http://www.microsoft.com/en-us/download/details.aspx?id=44561에 나와있듯이 다음과 같다.


Supported Operating System

Embedded 8 Standard, Windows 8, Windows 8.1


    • Recommended Hardware Configuration
      • 64-bit (x64) processor
      • 4 GB Memory (or more)
      • Physical dual-core 3.1 GHz (2 logical cores per physical) or faster processor
      • USB 3.0 controller dedicated to the Kinect for Windows v2 sensor*
      • DX11 capable graphics adapter**
      • A Microsoft Kinect v2 sensor, which includes a power hub and USB cabling

      * If you're adding USB 3.0 functionality to your exisiting PC through a USB 3.0 host controller adapter, please ensure that it is a Windows 8 compliant device and that it supports Gen-2. See the release notes for additional information regarding USB 3.0 compatibility.
      ** For the current list of good known adapters click here 

    • Software Requirements
      • Visual Studio 2012 or Visual Studio 2013


여기서 좀 크리티컬한 부분이 Windows 8 이상 OS가 필요한것과 USB 3.0 이 필요하다는 정도가 있다.

MS kinect forum쪽 글을 봐도 Windows 7에서 지원해줄 생각은 그닥 없는 것 같아서 일단 Windows 8.1을 설치하고 키넥트를 설치해보았다.


Kinect v2 SDK를 설치하여 구동시켜보려 했으나!

안타깝게도 장치를 인식하지 못하였다.


현재 사용중인 메인보드는 ASUS P8H67 로, 

  • USB Ports
    ASMedia® USB 3.0 controller : 
    2 x USB 3.0 port(s) (2 at back panel, blue)
    Intel® H67(B3) chipset : 
    12 x USB 2.0 port(s) (6 at back panel, black, 6 at mid-board)

USB 3.0 컨트롤러가 있다길래 당연히 키넥트가 구동이 될 것이라 생각했지만,


해당 현상에 대해 구글 검색을 해본 결과 (https://social.msdn.microsoft.com/Forums/en-US/bb379e8b-4258-40d6-92e4-56dd95d7b0bb/confirmed-list-of-usb-30-pcie-cardslaptopsconfigurations-which-work-for-kinect-v2-during?forum=kinectv2sdk),


Confirmed not working:

  • Controller with ASMedia ASM 104x chipset
  • HooToo HT-PC002 (VIA based chipset)
  • Texas Instruments USB3 chipset on my HP Z420
  • Anker USB 3.0 PCI-E
  • Etron usb 3.0 Extensible host controller
  • IOGEAR GEU302 2-port USB 3.0 ExpressCard(with external power)


아니 이게 무슨소리요 MS양반...

ASMedia 칩셋의 USB 3.0은 지원하지 않는단다.. (Intel이나 Renesas 계열은 된다고 한다)


그래서 확인된 외장 USB 3.0 어댑터를 구매하기로 결정,

가격이 저렴한 Transcend TS-PDU3 USB3.0 Expansion Card 를 구매하여 설치하였다.

결과는 Renesas USB 3.0을 성공적으로 인식하였다.


(SDK browser의 여러 demo를 돌려본 결과들)



그런데 이상한 부분이, Configuration verifier를 실행해본 결과 USB를 제대로 인식하지 못하며, Kinect sensor로 들어오는 입력 또한 30FPS가 아닌 20FPS 근처로 다소의 프레임 드랍이 발생하는 것을 볼 수 있었다.




이 문제에 대해 좀 검색을 해보니, PCI-ex가 kinect에서 원하는 bandwidth인 5Gbps를 원활히 제공하지 못할 수도 있다고 한다.

이를 해결해 보기 위해 여러 PCI 슬롯을 바꿔감 USB 3.0 카드를 설치하여 작업해보았으나 동일한 결과를 얻을 수 밖에 없었다.

아무래도 메인보드에서 제공하는 bandwidth가 낮아서 해결이 힘들 것 같다.


고생하면서 설치했지만 frame drop때문에 실험이 힘들어질 수도 있겠다고 깨달았다. 

연구실에 사양이 더 좋은 실험 컴퓨터에 windows 8.1을 설치하고 키넥트를 구동해보던지 해봐야 할듯 하다. 



Posted by 헬벨

너무 잘 정리되어있음

http://stackoverflow.com/questions/11550021/converting-a-mat-file-from-matlab-into-cvmat-matrix-in-opencv


단점이 있다면 2D matrix 만이 변환이 가능하다는 것.

나중에 3D 이상의 matrix 변환이 필요할 경우 openCV의 mat container가 3D 이상의 matrix를 어떻게 생성하고 저장하는 지 공부하여 소스 코드를 수정할지도 모름.

Posted by 헬벨

Segmentation 성능이 우수하고 빠르다고 알려져 있고는 SLIC 수퍼픽셀 알고리즘 

논문(TPAMI 2012), 프로젝트 페이지




소스 코드가 사용하기 쉽게 제공되는 편이지만, 직접 visual studio나 MATLAB 등에서 이용하려면 약간의 수정이 필요하다.


visual studio 2012 프로젝트, 혹은 MATLAB에서 execute file로 사용 가능하도록 수정하였다.



사용방법은 execute argument로 

// argv[1]: image file name

// argv[2]: k

// argv[3]: m

// argv[4]: save superpixel path

를 입력하면 된다.


예시: >>SLIC_console.exe sampleimage.jpg 200 20 c:/superpixelsavepath/

순서대로 superpixel을 수행할 이미지, K(superpixel 수), M(compactness factor), superpixel 결과를 저장할 경로 이다.





Posted by 헬벨