이클립스를 사용하다가 다음과 같은 에러를 만났다.

 

Access restriction: The type HttpServer is not accessible due to restriction on required library C:\Program Files (x86)\Java\jdk1.7.0_05\jre\lib\rt.jar

 

에러가 발생하는 곳은 import 하는 부분

 

import com.sun.net.httpserver.HttpServer;

 

구글링을 해 보니 원인은 "HTTP server"는 Sun JRE6에 포함되나

 

표준 Java에는 포함되지 않기 때문.

 

따라서 이클립스가 접근을 막도록 되어 있다.

 

이 문제를 해결하기 위해서는 간단하게 설정을 변경해주기만 하면 된다.

 

 

이클립스 메뉴 Window -> Preferences 창을 열어서

 

Java -> Compiler -> Errors/Warnings 를 보면

 

굵은 글씨체로 되어있는 Deprecated and restriced API 라는 메뉴가 있다.

 

이것을 펼쳐서 "Forbidden reference (access rules):" 항목을

 

Error에서 Warning으로 바꾸어주면 된다.

 

Apply를 누르면 설정이 바뀌었으니 전체 리빌드를 하겠냐고 묻는 창이 뜨는데 Yes를 누른다.

 

Posted by Kugi
,



적분 영상(integral image)이란 쉽게 말해서 다음 픽셀에 이전 픽셀까지의 합이 더해진 영상이다. 즉, 다음과 같은 수식으로 표현되는데

여기서 integImage(x, y)는 적분 영상이고 orgImage(x', y')는 원래 영상이다.

적분 영상의 장점은 특정 영역의 픽셀 값의 총합을 매우 쉽게 구할 수 있다는 점이다.

다음의 그림을 보면 이해가 쉬울 것이다.

8*8 크기의 임의의 1채널 영상을 예로 든 것이다. 좌측 상단이 원점이다.

왼쪽의 원래 영상에서 칠해진 영역의 넓이는

오른쪽 적분 영상에서 녹색 영역의 합과 주황색 영역의 합을 뺀 것과 같다.

(물론, 위 영상 전체의 합은 2250으로, 적분 영상에서의 마지막 값과 같다.)

이것을 수식으로 나타내면 다음과 같다.

다음의 그림을 참고하면 원리를 알 수 있다. 

D 영역의  픽셀 값을 얻기 위해서 점 d까지의 넓이에서 점 b까지의 넓이와 점 c까지의 넓이를 뺀 후

두 번 빼진 점 a 까지의 넓이를 한 번 더해줌으로써 D 영역의 넓이를 구할 수 있는 것이다.

  ( [D] = [A+B+C+D] - [A+C] - [A+B] + [A] )

이러한 적분 영상은 하나의 영상에 대해 특정 영역의 픽셀 값의 합을 여러 번 구해야 할 필요가 있을 때 유용하게 사용할 수 있다.

 

아래는 적분 영상을 구하는 C++ 함수의 예시(example)이다.

 


Posted by Kugi
,



영국 옥스퍼드 대학의 로봇 연구 그룹 페이지.

그중에서도 Visual Geometry Group에서 제공하는 연구 페이지에서는

영상처리를 위한 각종 Detector, Descriptor 등의 소스 코드를 구할 수 있다.

http://www.robots.ox.ac.uk/~vgg/research/

http://www.robots.ox.ac.uk/~vgg/research/affine/detectors.html



머신러닝 등 각종 강의들의 자료

http://www.robots.ox.ac.uk/~az/lectures/

Posted by Kugi
,



android-sdk를 이용하기 위해 cygwin에서 javah로 c/cpp용 jni 헤더파일을 추출하려는 도중

"Not a valid class name" 이라는 예외를 만났다.

패키지 경로를 구분할 때 "." 이 아닌 "/"를 사용했기 때문이었다.

처음도 아닌데 정신이 오락가락 했나보다.

 

$ javah -jni com/kut/ssvs/camera/KugiAndroidImageProcessor
Exception in thread "main" java.lang.IllegalArgumentException: 
Not a valid class name: com/kut/ssvs/camera/KugiAndroidImageProcessor
        at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:177)
        at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:68)
        at com.sun.tools.javah.JavahTask.run(JavahTask.java:509)
        at com.sun.tools.javah.JavahTask.run(JavahTask.java:335)
        at com.sun.tools.javah.Main.main(Main.java:46)

 

Posted by Kugi
,