mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Friday, April 20, 2007

매스매티카 Mathematica, 렌즈 화각 FOV 계산; 광학 Field of View


35mm 카메라 렌즈 즉 "SLR 필카" 교환 렌즈의 대각선 화각(Field of View)을 구하는 방법입니다. 그리고 역으로, 대각선 화각을 입력하면, 렌즈의 초점거리(Focal Length)가 나오는 함수도 만듭니다.

우선 필름의 대각선 길이를 구해야 하는데, 필카의 화학적 필름의 경우에는 가로 세로가 36mm x 24mm 로 고정되어 있지만

디카의 필름에 해당하는 촬상소자(CCD 또는 CMOS)의 경우에는 면적에 차이가 좀 있습니다. Nikon DSLR 은

* Nikon D40 : 23.7 x 15.6mm
* Nikon D40X : 23.6 x 15.8mm

이렇게 비슷한 제품인데도 미세하게 다릅니다. (D40X가 더 최신이고 좀더 고급형임)

* Canon EOS 30D : 22.5 x 15.0mm

그래서 여기서는 전통적인 35mm 필름(36mm x 24mm) 즉, 라이카판을 기준으로 했습니다.


필름의 대각선 길이 구하기


diagonalLength = Sqrt[36^2 + 24^2]
이렇게 하면 diagonalLength 라는 변수에 35mm 필름의 대각선 화각이 대입됩니다. "12 곱하기 루트13"이라는 값이 나오는데, 근사값은 43.2666mm 입니다. 디카의 경우에는 36과 24가 아닌 다른 값을 넣어 계산해 주어야 합니다.


초점거리로, 화각(FOV) 구하기 함수 정의


화각을 영어로 FOV(Field of View; Angle of View) 라고 하기에, 함수명을 fov로 지정했습니다. (사용자 정의 함수/변수 등은 소문자로 시작해야 합니다.)

fov[focalLength_] := (2 * ArcTan[diagonalLength / (2 * focalLength)]) * 180 / Pi

이렇게 입력하면, 이 함수로, 화각을 구할 수 있습니다.

fov[50] // N
이제 이렇게 입력하면, 50mm 표준렌즈의 화각인 "46.793도"가 나옵니다.

fov[24] // N
이 경우에는 24mm 광각렌즈의 화각인 "84.0622도"가 나옵니다.



화각으로, 렌즈 초점거리 구하기 함수 정의


focal[fov_] := (diagonalLength / (2 * Tan[Pi * fov / 360]))

이렇게 초점거리 구하는 함수를 입력합니다.

그런 후
focal[46.793]
이렇게 입력하면 50. 이 출력됩니다. 50mm 표준렌즈입니다.

focal[84.0622]
이렇게 24mm 광각렌즈의 대각선 화각인 84.0622 를 입력하면 24. 가 출력됩니다.



단, 어안렌즈(Fisheye Lens) 같은 특수렌즈는 위의 공식을 사용할 수 없습니다.

focal[180]

어안렌즈는 화각이 180도인데, 이 경우에는 초점거리가 0 으로 나오는군요. 실제 어안렌즈의 초점거리는 최소 8mm 정도는 됩니다. (니콘의 6mm 어안렌즈는 220도 화각임. ▶▶ 어안렌즈 사진 갤러리; Fisheye Lens Gallery Flickr)



▶▶ Java/자바] 35mm 카메라 렌즈 화각(FOV) 구하기, 초점 거리(Focal Length)계산[광학/물리/사진




tag: mathematica
매스매티카 Mathematica | 수학 Math
tag: camera
카메라 | 디카 DSLR | 사진용품 사용기

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top