라디안(radian)과 디그리(degree)

수학 이야기 2013. 1. 28. 16:20

우리가 일상적으로 사용하는 각의 단위는 디그리(degree)입니다. 즉, 원 한바퀴를 360도로 표현하는 방법입니다. 반원은 180도, 직각은 90도 등 degree는 우리에게 매우 익숙한 각의 단위입니다.


그런데, 각을 표현하는 다른 방법으로 라디안(radian)이 있습니다. 보통 라디안은 부채꼴의 중심각을 가지고 설명되는데, 아래 그림과 같이 호의 길이가 반지름과 같게 되는 만큼의 각을 1 라디안(radian)이라고 정의합니다.



정의에 따르면 왠지 라디안은 반지름에 대한 상대적인 각도의 단위처럼 생각됩니다. 하지만 radian은 degree처럼 절대적인 각도의 단위입니다. 실제로 1 radian은 약 57.3도에 해당하는 각입니다. 그러면 2 radian은 약 114.6도가 되겠지요. 여기서 우리는 degree보다는 radian이 훨씬 큰 각의 단위라는 걸 알 수 있습니다.


반지름이 3이고 중심각이 2 radian인 부채꼴이 있습니다. 그러면 이 부채꼴의 호의 길이는 얼마일까요? radian의 정의에 의해 답은 6입니다. 반지름과 중심각의 크기만 알면 호의 길이를 이렇게 쉽게 구할 수 있다는게 신기하지 않나요? 반대로, 호의 길이가 6이고 반지름이 3인 부채꼴이 있다면 이 부채꼴의 중심각은 얼마일까요? 바로 2 radian입니다. 즉, 약 114.6도입니다. 부채꼴 도형에서 반지름, 중심각, 호의 길이 3가지 중에 2가지만 알면 다른 한가지는 곧바로 구할 수 있게 됩니다.


자동차가 달리고 있는데 오른쪽으로 10도 틀으라고 하면 대략 얼마나 돌려야 할지 감이 올 것입니다. 그런데, 만일 오른쪽으로 0.5 radian 돌려라고 한다면 도대체 이게 어느 정도의 각인지 도무지 감이 오지 않을 것입니다. 이와 같이 우리에게 친숙한 각의 단위는 degree입니다.


그러면, 우리에게 친숙한 degree로만 각을 표현하면 좋을텐데 왜 이렇게 복잡하게 radian이라는 것을 도입해서 문제를 어렵게 하는 걸까요? 사실 저도 이유는 잘 모릅니다. 하지만 분명한 것은 우리 사람이 선호하는 각 체계는 degree인 반면 컴퓨터나 수학에서 주로 사용되는 각 체계는 radian이라는 것입니다. 그래서 표준을 정하거나 공동작업을 할 때 종종 각을 어떻게 표현할 것인가를 두고 사람들끼리 논쟁이 일어나기도 합니다. 사람을 중심에 놓고 생각하는 사람들은 degree를 사용하자고 주장하고, 다른 한편에서는 어차피 컴퓨터에서는 radian으로 고쳐서 사용해야 하기 때문에 계산의 효율성을 위해서 radian을 사용하자고 주장합니다. 


컴퓨터에서 프로그램을 개발할 때에도 degree와 radian을 변환하는 일이 수시로 발생합니다. 사용자에게 각을 입력받을 때는 보통 degree로 입력받은 후 이를 내부적으로 radian으로 고쳐서 필요한 계산을 수행합니다. 그리고 계산된 결과를 보여줄 때는 다시 사람에게 친숙한 degree로 변환하여 보여줍니다. 이러한 변환작업은 사실 번거롭긴 하지만 어쩔 수 없는 일이기도 합니다. 


그렇다면 degree와 radian은 어떤 변환 관계를 가지고 있을까요? 180도는 π radian입니다. 여기서 π(파이)는 3.1415926535... 의 값을 갖는 무한소수로 원주율을 말합니다(원주율 π는 원의 둘레가 지름의 몇 배나 되는지를 그 동안 수학자들이 열심히 노력해서 찾은 값인데, 원둘레 = 3.1415926535..×지름 = π×2r 이 됨을 찾아냈고 이 상수를 원주율 π라 명명한 것입니다). 이 관계식을 이용하면 다음과 같이 자유롭게 degree와 radian의 단위를 변경할 수 있습니다.


180 degree = π radian

1 degree = π / 180 radian

x degree = x * π / 180 radian


π radian = 180 degree

1 radian = 180 / π degree

x radian = x * 180 / π degree


좀전에 자동차 예에서 나온 0.5 radian을 위 수식을 이용하여 degree로 고치면 0.5 * 180 / 3.1415926535 = 28.64788... degree 정도가 됩니다. 그러나, 수식을 이용하지 않고도 대략적인 radian의 값을 파악하는 방법이 있습니다. 그건 먼저 머리속에서 부채꼴을 하나 상상합니다. 그 부채꼴의 호의 길이는 반지름과 같은 길이를 갖도록 합니다. 그러면 그 부채꼴의 중심각이 1 radian입니다. 이제 0.5 radian을 구하고 싶으면 상상속의 그 부채꼴의 중심각을 2등분하면 됩니다. 그러면 대략적으로 0.5 radian이 어느정도의 각인지 알 수 있을 것입니다.


by 다크 프로그래머

'수학 이야기' 카테고리의 다른 글

분수의 나눗셈과 배수  (15) 2013.01.28
원기둥과 원기둥이 만나면?  (2) 2013.01.28
원의 면적과 구의 부피  (5) 2013.01.28

영상인식과 검출율

영상처리 2013. 1. 28. 16:16

영상에서 사람이나 자동차 등을 잘만 찾을 수 있다면 정말 많은 곳에 유용하게 사용될 수 있을 것입니다. 매장을 드나드는 사람의 수를 셀 때, 운전중 전방의 위험을 알릴 때, 중장비와 인부들이 같이 일을 하는 작업장에서 인부들의 안전을 지킬 때, 사진사 로봇이 자동으로 최적의 구도를 잡을 때 등 통상적인 보안, 모니터링 외에도 그 응용은 무궁무진할 것입니다.




이러한 영상인식 기술에서 얼마나 대상을 잘 찾느냐를 말할 때 흔히 검출율(detection rate)을 가지고 평가를 합니다.  검출율을 측정하는 방법은 한정된 숫자의 테스트 이미지들을 입력으로 주고 검출 알고리즘을 적용한 후 성공적으로 검출된 숫자를 세는 식입니다. 예를 들어, 보행자가 포함된 영상 100장이 있습니다. 각 영상에는 보행자가 1명만 있을 수도 있고 또는 여러 명이 포함되어 있을 수도 있습니다. 그래서, 테스트 영상 100장에 포함된 총 보행자의 수가 200명이라고 해 보겠습니다. 이중 어떤 보행자 검출 알고리즘을 통해 검출된 보행자가 100명이라고 하면 이 검출 알고리즘의 검출율은 50%입니다.


영상인식 알고리즘의 검출율이 50%라고 하면 그다지 성능이 않 좋은 것처럼 느껴집니다. 그러나, 실시간 비디오에서 생각하면 꼭 그렇지만도 않습니다. 예를 들어, 차량에 탑재된 블랙박스 카메라에 전방 보행자를 실시간으로 인식해서 경보를 해 주는 기능이 내장되어 있다고 해 보겠습니다. 이 블랙박스 카메라는 초당 10 프레임의 속도로 영상을 찍어내며 보행자 인식을 처리해 낸다고 가정하겠습니다. 그렇다면 전방에 보행자가 갑자기 나타났을 때, 위에서 말한 검출율 50%의 영상인식 알고리즘으로 1초 안에 해당 보행자를 감지할 확율은 얼마나 될까요?


정답은 약 99.9%입니다.


어떻게 검출율 50%의 알고리즘이 갑자기 99.9%의 엄청난 알고리즘이 된 걸까요? 그 답은 이 글을 읽는 분들의 몫으로 남기겠습니다.


ps1.

위에서 나온 99.9%는 어디까지나 수학적 계산에 의한 확률로 실제 성능과는 다를 수 있습니다. 보행자가 처음 나타났을 때, 만일 첫번재 영상 프레임에서 검출에 실패했다면 다음 영상 프레임에서도 검출에 실패할 확률은 실제로는 50%가 아니라 훨씬 높은 값일 것입니다. 그 이유는 인접한 영상 프레임들은 서로 유사한 형태를 가지며 또한 인식에 실패한 이유가 보행자 자체가 알고리즘이 인식을 잘 못하는 모습을 띄고 있기 때문일 수 있기 때문입니다.


ps2.

제가 이 글을 포스팅하는 목적은 수학적 지식이 어떻게 과학적 연구에 활용될 수 있는지를 보여주는 것도 있지만 한편으로는 실시간 비디오 영상에서 검출 알고리즘의 성능을 어떻게 평가할 것인가에 대한 것도 있습니다. 이미지와 같은 정지 영상에서는 통상적인 검출율을 사용해서 성능을 평가하는게 맞겠지만 비디오와 같은 실시간 영상에서는 단위 시간당 검출(감지) 성공률로 성능을 평가하는 것이 좀더 합리적이지 않을까 생각해 봅니다.


by 다크 프로그래머

원기둥과 원기둥이 만나면?

수학 이야기 2013. 1. 28. 15:56

대학 축제때 나왔던 수학 문제입니다. 어떤 과에서 이벤트 형식으로 진행했던 것인데 수학문제가 적힌 종이쪽지들을 원통에 넣고 하나씩 뽑아가게 합니다. 시간제한은 없으며 정답을 풀어오면 상품을 주거나 더 어려운 문제를 뽑을 수 있는 기회를 주는 방식입니다. 당시 2단계 문제에서 한시간 넘게 끙끙대다가 겨우 풀었던 기억이 납니다.


당시 풀었던 문제는 '같은 크기의 원기둥 3개가 서로 수직으로 교차하면 어떤 도형이 만들어지는지 그림으로 그려오시오' 라는 것이었습니다. 3개의 원기둥이 만나서 이루어지는 공통 부분이 어떤 모양일지 그려오라는 문제입니다.




머리속으로 상상하기도 쉽지 않지만 설령 어느정도 상상이 된다고 해도 그림으로 표현하는게 또 만만치 않은 일입니다. 먼저 원기둥이 2개인 경우는 다음과 같은 형태가 될 것입니다.


cylinder_intersect.png


그러면 원기둥 3개가 만나면 어떤 모양이 될까요???

답을 바로 상상할 수 있다면 아마도 공간지각 능력이 상당히 뛰어난 분일 겁니다.



한 지인이 다음과 같은 matlab 코드를 보내주었습니다. matlab으로 돌려보니 상당히 오묘한 형태의 그림이 나오네요^^ (그런데 원래 도형의 모양을 알아보기가 쉽지는 않네요)


points = 2 * rand(100000, 3) - 1;

cylinder1 = (points(:,1).^2 + points(:,2).^2) < 1;

cylinder2 = (points(:,2).^2 + points(:,3).^2) < 1;

cylinder3 = (points(:,3).^2 + points(:,1).^2) < 1;

pc = points(cylinder1 & cylinder2 & cylinder3,:);

plot3(pc(:,1), pc(:,2), pc(:,3), 'b.');

box on;

grid on;

axis equal;





by 다크 프로그래머

'수학 이야기' 카테고리의 다른 글

라디안(radian)과 디그리(degree)  (52) 2013.01.28
원의 면적과 구의 부피  (5) 2013.01.28
수학 공식에 대한 생각  (4) 2013.01.28