블로그 방문객 10만명을 기념하며..

잡기장 2013. 8. 29. 11:13

2013년 새해 첫날을 맞이하며,


무슨 바람이 불었는지 평소에 안하던 신년 계획이란 걸 세웠습니다.


앞으로 어떻게 살아야 하나.. 내가 원하는 삶이란 어떤 것인지, 또 그러기 위해서 지금 내가 할 수 있는 일들이 무엇인지 등에 대해 생각해 보았습니다.


책도 한권 써보고 싶었고, 또 세상에 살아감에 대한 흔적도 남기고 나름 홍보도 해야겠다는 생각에 시작한 게 이 블로그입니다.


처음에는 이글루스에서 시작하였으나 수식입력 및 편집의 문제로 인해 한달만에 지금의 티스토리로 이사를 하게 되었습니다. 그러니까 티스토리에서는 올해 2월부터 블로그를 시작한 셈이네요.


처음 한달간은 일일 방문객 수가 10명 ~ 20명이던 것이.. 이제 어느덧 누적 방문객 수가 10만이 되었습니다.


쓴 글의 수는 91개, 댓글 수는 507개 (댓글중 반절 가량은 제가 쓴 것임 --)


돌이켜보니 그동안 많은 분들이 방문해 주셨고 또 좋은 댓글을 많이 남겨주셔서 저도 즐겁게 글을 쓸 수 있었습니다. 그리고 제 마나님께서 여러가지로 살펴 주신 덕도 큽니다.


모두 감사드리며 이 글로 소소하나마 나름의 기념을 가름합니다 ^^


by 다크 프로그래머


'잡기장' 카테고리의 다른 글

마나님의 외출  (8) 2013.09.26
아내의 하이샤파  (11) 2013.08.10
아내의 서평 - 흔들리며 흔들거리며  (0) 2013.06.04

Ferns Detector

개발한 것들 2013. 8. 28. 12:12

Random Ferns를 이용한 detector 프로그램입니다 (Ferns에 대한 소개는 Ferns를 이용한 영상 Object Detection 글을 참고하세요).





프로그램 다운로드


FernsDetector.zip


실시간 웹캠이나 동영상 파일 입력을 지원합니다. 웹캠은 관계없지만 동영상을 입력으로 검출할 때에는 통합 영상 코덱 등이 설치되어 있어야 합니다 (ffdshow 통합 영상코덱 다운로드).



프로그램 사용법


입력 영상에서 마우스 드레그(drag)로 검출할 물체 영역을 설정해 주면 detector를 학습한 후에 물체를 찾아줍니다.

detector를 학습하는 데에는 약 5분 ~ 10분 정도가 소요되며 학습된 detector는 model.dat 라는 이름의 파일로 저장됩니다.

저장된 detector가 있을 경우, 프로그램 시작할 때 자동으로 저장된 detector가 로드됩니다. 물론 언제든지 마우스로 영역을 설정해 주면 새로 detector가 학습됩니다.


space 키를 누르면 일시정지, esc 키를 누르면 프로그램이 종료합니다.


☞ Ferns의 대략적인 성능을 확인하는 용도로 테스트해 보시면 좋을 듯 싶습니다.


by 다크 프로그래머


도형, 부등식의 영역에 대한 이해와 활용

수학 이야기 2013. 8. 26. 19:10

고등학교 수학에서 배우는 도형 파트에서 부등식의 영역이라는 단원이 있습니다.


부등식의 영역.. 그게 머 어때서? 라고 할수도 있지만 제게는 매우 유용하게 활용되는 수학적 도구중 하나입니다.


두 점 A(x1, y1), B(x2, y2)가 있는데, 어떤 직선 ax + by + c = 0이 두 점 A, B 사이를 통과하는지 여부를 알려면 어떻게 해야 할까요?



방법 1. 좌표평면에 직접 직선을 그린 후 두 점을 찍어본다. 그리고 눈으로 확인한다 ?

방법 2. AB를 지나는 직선 방정식을 구한 후 ax+by+c=0과 연립하여 교점을 구한다. 구한 교점이 선분 AB 사이에 있는지 조사해 본다?


아닙니다.


그냥 간단하게(ax1 + by1 + c)*(ax2 + by2 + c) < 0 인지만 조사하면 됩니다. 그래서 식이 성립하면 AB 사이를 통과하는 것이고 성립하지 않으면 통과하지 않는 것입니다.



부등식의 영역 - 이해


고교 과정에서 배우는 부등식의 영역은 y>x가 나타내는 영역이 y = x의 위쪽 영역이라는 정도입니다.



도형방정식 y = x는 y좌표와 x좌표가 같은 점들의 집합, 부등식의 영역 y>x는 y좌표가 x좌표보다 큰 점들의 집합, y<x는 y좌표가 x좌표보다 작은 점들의 집합을 나타냅니다.


도형의 방정식이든, 부등식의 영역이든 모두 어떤 관계식을 만족시키는 점들의 집합임을 이해하는게 중요합니다.


또 하나 사실 이글에서 정말 얘기하고 싶은 내용은, 도형의 방정식 f(x,y) = 0에 의해 xy평면은 항상 2개 이상의 영역으로 나뉘게 되는데, 동일한 영역에 속하는 점들에 대해서는 f(x,y)의 부호가 같다는 점입니다.


예를 들어, 원을 f(x,y) = (x-a)2 + (y-b)2 - r2과 같이 잡았을 때, 원주상에 있는 점들을 대입하면 f(x,y) = 0, 원 내부에 있는 점들을 대입하면 f(x,y)<0, 원 외부에 있는 점들을 대입하면 f(x,y)>0가 나옵니다.


이를 좀 일반화하여 수식적으로 표현하면 다음과 같습니다.


f(x1, y1) = 0 → 점 (x1, y1)이 f(x, y) = 0 위에 있다.

f(x1, y1)*f(x2, y2)<0 → (x1, y1), (x2, y2)가 f(x,y) = 0을 경계로 서로 다른 영역에 있다.

f(x1, y1)*f(x2, y2)>0 → 점 (x1, y1)과 (x2, y2)가 서로 같은 영역에 있다.



부등식의 영역 - 활용


글 서두에 얘기한 직선과 선분의 교차 여부를 판단하는 문제는 부등식의 영역의 원리를 응용한 한 예입니다. 이 외에도 다른 몇 가지 예를 들어보겠습니다.


1. 삼각형 ABC의 세 꼭지점의 좌표 A(x1,y1), B(x2,y2), C(x3,y3)를 알고 있을 때, 어떤 점 P(a, b)가 이 삼각형의 내부에 있는지 아니면 외부에 있는지 알 수 있는 방법은?

=> 두 점 AB를 잊는 직선의 식을 구해서 점 C(x3,y3)와 점 P(a,b)를 대입하여 같은 영역에 있는지 조사한다. BC, CA에 대해서도 동일한 검사를 수행해서 세 경우 모두 같은 영역에 있다면 이 점은 삼각형 내부에 있는 것이다.

=> 사각형, 오각형, ... 에도 적용 가능한 방법입니다.


2. 3차원 공간에서 현재 나의 위치가 (x1,y1,z1)이고 어떤 평면의 방정식 f(x,y,z) = ax + by + cy + d = 0이 있을 때, 어떤 점 (x2, y2, z2)가 현재 내 위치를 기준으로 했을 때 평면 너머에 있는지 아니면 평면 안쪽에 있는지 알 수 있는 방법은?

=> f(x1,y1,z1)*f(x2,y2,z2)<0 이면 반대편에 있는 것이고, f(x1,y1,z1)*f(x2,y2,z2)>0면 같은 편에 있는 것이다.

=> 그래픽스 분야에서 은선(hidden line, hidden point) 처리 등을 할 때 활용할 수 있습니다.


3. 다른 예가 하나정도 더 있으면 균형이 맞을 것 같은데 마땅히 좋은 생각이 안나네요 ㅜㅜ



by 다크 프로그래머