Tech
-
gcc와 g++Tech/Development 2014. 1. 4. 22:46
gcc를 써야할지 g++을 써야할지 헷갈릴 때가 있다. gcc나 g++나 모두 front-end일 뿐 실제로는 컴파일러와 링커가 어떻게 동작할지 연결해주는 역할만 한다. gcc 를 쓸 경우 확장자(.c or .cc/.cpp)에 따라 C 또는 C++로 컴파일 할지 결정한다. C 라이브러리와 링크한다. 즉, 옵션을 통해 별도로 링크하지 않는 이상 C++ 라이브러리가 링크되는 일은 없다. g++를 쓸 경우 확장자(.c or .cc/.cpp)에 상관없이 무조건 C++로 컴파일 한다. 컴파일된 결과는 당연히 C++ 라이브러리와 링크된다. 아래의 예제를 보자. #include int main(void) { printf("I was compiled as %s!\n", sizeof('a') == 1 ? "C++" : ..
-
Normalization에 따른 Saliency Map의 변화Tech/Vision 2013. 12. 3. 22:40
Visual Attention의 Computational Model로는 여러 가지가 알려져 있지만, 그 중에서는 USC의 Itti와 Caltech의 Koch가 제안한 Saliency Model이 가장 기초적이면서 이해하기도 쉽다. L. Itti, C. Koch, and E. Niebur, “A Model of Saliency-Based Visual Attention for Rapid Scene Analysis,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 20, no. 11, pp. 1254–1259, Oct. 1998. 논문은 구현 방법에 대해서 비교적 쉽고 자세히 기술하고 있기 때문에, 초심자들에게 참 좋은 논문이다. 다..
-
Matlab R2013b는 왜 Retina Display를 지원하지 않나?Tech/Computer 2013. 11. 19. 10:18
Mathworks Matlab R2013a는 Retina Display를 지원했었다. 그런데, R2013b는 최신작임에도 불구하고 Retina Display를 지원하지 않는다. 무슨 일일까? 바로 Java때문이다. R2013a까지는 OS X에 같이 포함되는 Java를 사용해왔었다. 그런데, R2013b부터 Mathworks는 OS X에 딸려오는 번들 Java 대신 자체적으로 Java 7을 포함하고 설치된다. 이렇게 된 데는 OS X에 함께 설치되는 Java의 지원이 워낙 더디게 이루어진다는 이유도 있다. 아무튼 R2013b에서 함께 설치되는 Java 7u11은 Retina display가 지원되지 않는다. (왜일까? Sun의 해당 연구팀에 Retina display가 없다는 슬픈 이유가…. 출처: JDK..
-
Gabor Filter 이해하기Tech/Vision 2013. 11. 19. 03:49
영상처리에서 Bio-inspired라는 키워드가 있으면 빠지지않고 등장하는 Gabor Filter. 외곽선을 검출하는 기능을 하는 필터로, 사람의 시각체계가 반응하는 것과 비슷하다는 이유로 널리 사용되고 있다. Gabor Fiter는 간단히 말해서 사인 함수로 모듈레이션 된 Gaussian Filter라고 생각할 수 있다. 파라미터를 조절함에 따라 Edge의 크기나 방향성을 바꿀 수 있으므로 Bio-inspired 영상처리 알고리즘에서 특징점 추출 알고리즘으로 핵심적인 역할을 하고 있다. 2D Gabor Filter의 수식은 아래와 같다. 위에서와 같이 5개의 파라미터를 조절해서 사용할 수 있다. 복잡해보이는 파라미터들의 의미를 Filter Kernel을 JET Color Mapping한 이미지와 함께 ..
-
Colormap에 대한 단상Tech/Vision 2013. 11. 19. 01:47
2차원 공간상에 1-dimensional data를 나타낼 때, 컬러 매핑을 이용하면 더 효과적으로 데이터를 표현할 수 있다. 별거 아닌데도 결과물을 상당히 있어보이게 만드는 방법이다. 주로 쓰이는 Colormap으로는 JET방식이 많이 쓰인다. JET colormap에서 각 RGB 채널은 아래와 같이 할당된다. JET의 스펙트럼 및 R,G,B채널 개형 Blue 채널만 127을 가지는 (#00007F) Dark Blue로부터 시작해서 차례대로 Green, Red 채널이 우위를 가진다. 마지막은 #7F0000 Dark Red로 끝난다. JET와 비슷하게 쓰이는 방식으로는 COLD-to-HOT도 있다. 낮은 값을 Cold color인 Blue에, 높은 값을 Hot color인 Red에 대응시키는데, 시작과 ..
-
Transactional Memory #1Tech/Computer 2013. 11. 12. 14:58
들어가는 말 : Transactional Memory은 왜 등장하게 되었나? Parallel Computing은 Single Core의 한계를 극복하는 차세대 컴퓨팅 기술이지만, 이러한 컴퓨터 시스템 위에서 동작하는 Parallel Programming은 아직 원론적인 문제로 고통받고 있다. 바로 공유되는 자원을 어떻게 관리하는가 하는 문제다. Parallel Programming에서 공유자원은 어떻게 동기화하는가? 똑같은 메모리를 이 Thread도 쓰고, 저 Thread도 쓴다면 누구 장단에 따라 움직여야하는가? 먼저 잡은 놈이 임자라고, 먼저 접근한 Thread에게 우선권을 주면 될 것 같지만, 모든게 Parallel하게 돌아가는 시스템에서는 이 "누가 먼저"를 알아내기가 쉽지 않다. 중앙에 막강한 ..
-
내가 사용하는 Sublime Text 설정 파일Tech/Development 2013. 11. 11. 16:49
내가 사용하고 있는 Sublime Text 3 설정 파일. Color Scheme은 Solarized Dark를, Theme는 GitHub에서 받은 Soda Dark 3을 쓰고 있다. 폰트로는 Adobe의 Source Code Pro를 쓰고 있다. Tab 사이즈는 4를, 그리고 space로 변환하도록 했다. 폭으로는 80에 줄 표시. trim_trailing_white_space_on_save을 하면, 저장시 매 줄의 마지막에 붙은 공백들을 모두 제거해준다. { "color_scheme": "Packages/Color Scheme - Default/Solarized (Dark).tmTheme", "font_face": "Source Code Pro", "font_size": 14, "highlight_m..
-
[OpenCV] Webcam 2개 연결 시, No space left on device 에러가 날 때Tech/Development 2013. 10. 10. 00:18
Stereo Matching 등을 하기 위해 카메라를 2개 연결해서 사용할 때가 있는데, 만약 라즈베리파이 등 자그마한(!) 임베디드 보드에서 구현한다면 다음과 같은 에러를 만날 수도 있다. libv4l2: error tuning on stream: No space left on device VIDIOC_STREAMON: No space left on device 이러한 에러가 발생하는 이유는 Webcam의 resolution, framerate, protocol을 USB 2.0으로 전송하기에는 너무 느리기 때문이다! 요즘 USB 3.0이 지원되기 시작하지만 아직까지 USB Webcam은 대부분 2.0 기반이며, 이러한 Webcam은 USB 3.0 포트에 연결하더라도 2.0으로 동작하게 된다. 640x4..