- X, Y 라는 두개의 반사거울의 각도를 돌리면 서로간의 거리가 각도에 따라 변하고,
- 빛을 초점에 모아 에너지를 집중하는 광학적인 렌즈를 사용하기 때문입니다.
그럼 아래의 예에서 3가지 방법을 살펴보겠습니다.
1. RTC4 기반의 2D 보정
아래와 같이 텍스트 기반의 파일을 만들어 CFMP.exe 의 인자로 지정하면 됩니다.
CFMP 는 위와 같은 형식의 텍스트 파일을 분석해 그 결과로 새로운 보정 파일(ctb)을 생성하게 됩니다.
this line for comments c:\test\Cor_1to1.ctb inputfile (*.ctb) c:\test\result.ctb outputfile (*.ctb) 580 calibration [bit/mm] 25 number of points [9,25,49,81,121,169,225,289] 25 grid spacing[mm] -50 50 -25 50 0 50 25 50 50 50 -50 25 -25 25 0 25 25 25 50 25 -50 0 -25 0 0 0 25 0 50 0 -50 -25 -25 -25 0 -25 25 -25 50 -25 -50 -50 -25 -50 0 -50 25 -50 50 -502. RTC5 기반의 2D 보정
RTC5는 좀더 많은 개수의 격자(Grid)를 지원합니다.
RTC4의 경우는 17*17 이 최대치이지만 RTC5는 더욱 많은 보정포인트를 지정 할 수 있습니다. 그러나 보정 격자의 개수가 많다고 좋은것은 아닌데, 예를 들어 100mm 의 FOV(Field Of View)를 가지는 경우 11*11 개수의 격자를 이용해 보정할 경우 1.5um 미만의 표준편차를 가진다고 하니 많은 수의 격자를 측정할 필요는 없겠지요?
아래와 같은 텍스트 파일을 생성하여 CorreXion5.exe 와 같은 프로그램에 인자로 실행하게 되면 그 결과로 대상 보정파일(ct5)및 로그 파일(.log)이 생성됩니다. 보정파일이 생성되지 않는 다면 로그 파일을 통해 문제점등을 파악할수 있습니다.
[INPUT] = c:\test\Cor_1to1; input table file [OUTPUT] = c:\test\result; output table file [CALIBRATION] = 10000; bit/mm [RTC4] = 0 [FITORDER] = 0 [SMOOTHING] = -1 [AUTO_FIT] = 0 [TOLERANCE] = 0.1 [APPLY_OFFSET] = 0 [Limit(Bits)] = 524288 [Limit(mm)] = 52.4288 [OffsetX] = 0 [OffsetY] = 0 [Deviation] = 0 [GRIDNUMBERS] = 2 2 [GRIDVALUES_X] = -50 [GRIDVALUES_X] = -25 [GRIDVALUES_X] = 0 [GRIDVALUES_X] = 25 [GRIDVALUES_X] = 50 [GRIDVALUES_Y] = 50 [GRIDVALUES_Y] = 25 [GRIDVALUES_Y] = 0 [GRIDVALUES_Y] = -25 [GRIDVALUES_Y] = -50 Xn Yn X mm Y mm -2 2 -50 50 -1 2 -25 50 0 2 0 50 1 2 25 50 2 2 50 50 -2 1 -50 25 -1 1 -25 25 0 1 0 25 1 1 25 25 2 1 50 25 -2 0 -50 0 -1 0 -25 0 0 0 0 0 1 0 25 0 2 0 50 0 -2 -1 -50 -25 -1 -1 -25 -25 0 -1 0 -25 1 -1 25 -25 2 -1 50 -25 -2 -2 -50 -50 -1 -2 -25 -50 0 -2 0 -50 1 -2 25 -50 2 -2 50 -50로그 파일의 예
Tue Jan 31 13:23:04 2017 Current working path: c:\test Current data file: 20170131-13-23.dat [INPUT] = Cor_1to1 [OUTPUT] = result InFile Calibration: 0 ignored [RTC4] = 0 [CALIBRATION] = 10000 [GRIDNUMBERS] = 2 2; grid X, grid Y; points: 5 per line, 5 per column, total 25 Piecewise linear interpolation used for calculation, [OUTPUT]: result written successfully [CALIBRATION] = 10000 ;final [APPLY_OFFSET] = 0 [Limit(Bits)] = 524288 +/- [Bits] [Limit(mm)] = 52.4288 +/- [mm] [OffsetX] = 0 [Bits] [OffsetY] = 0 [Bits] [TOLERANCE] = 0.1 [Deviation] = 0 correXion5.exe terminated3. RTC5 기반의 3D 보정
앞서 2D 영역 (Z=0)에서의 보정을 보여드렸다면, 3차원 영역을 보정하는 방법도 소개해 드리겠습니다.
그러기 위해서는 3D 스캐너를 장착(VarioScan 등)하고, 사용자가 원하는 공간 (Z - , Z +) 에 대해 측정이 필요합니다. 즉 Z=0 에 대한 보정을 우선 실시하고, Z - , Z + 두 영역에 대해 실측하여 아래 텍스트 파일을 생성해야 합니다.
[INPUT] = c:\test\D3_1351.ct5; input table filename [OUTPUT] = c:\test\result.ct5; output table filename [GRIDNUMBERS] = 2 2; grid x(col), y(row) [GRIDVALUES_X] =-50 [GRIDVALUES_X] =-25 [GRIDVALUES_X] =0 [GRIDVALUES_X] =25 [GRIDVALUES_X] =50 [GRIDVALUES_Y] =50 [GRIDVALUES_Y] =25 [GRIDVALUES_Y] =0 [GRIDVALUES_Y] =-25 [GRIDVALUES_Y] =-50 [Z_VALUE] =20; z1(mm) iX iY X[mm] Y[mm] -2 -2 -50 -50 -1 -2 -25 -50 0 -2 0 -50 1 -2 25 -50 2 -2 50 -50 -2 -1 -50 -25 -1 -1 -25 -25 0 -1 0 -25 1 -1 25 -25 2 -1 50 -25 -2 0 -50 0 -1 0 -25 0 0 0 0 0 1 0 25 0 2 0 50 0 -2 1 -50 25 -1 1 -25 25 0 1 0 25 1 1 25 25 2 1 50 25 -2 2 -50 50 -1 2 -25 50 0 2 0 50 1 2 25 50 2 2 50 50 [Z_VALUE] =-20; z2(mm) iX iY X[mm] Y[mm] -2 -2 -50 -50 -1 -2 -25 -50 0 -2 0 -50 1 -2 25 -50 2 -2 50 -50 -2 -1 -50 -25 -1 -1 -25 -25 0 -1 0 -25 1 -1 25 -25 2 -1 50 -25 -2 0 -50 0 -1 0 -25 0 0 0 0 0 1 0 25 0 2 0 50 0 -2 1 -50 25 -1 1 -25 25 0 1 0 25 1 1 25 25 2 1 50 25 -2 2 -50 50 -1 2 -25 50 0 2 0 50 1 2 25 50 2 2 50 50이후 StretchCorreXion5.exe 와 같은 전용 프로그램을 이용해 해당 텍스트 파일을 인자로 주게 되면, 그 결과를 로그 파일(.log)로 알려주는 방식입니다.
Tue Jan 31 13:28:07 2017 Current data file: 20170131-13-28.dat [INPUT] = c:\test\D3_1351.ct5; input table filename [OUTPUT] = c:\test\result.ct5; output table filename [GRIDNUMBERS] = 2 2; grid X (columns), grid Y (rows) [GRIDVALUES_X] = -50.000000 -25.000000 0.000000 25.000000 [GRIDVALUES_X] = 50.000000 [GRIDVALUES_Y] = -50.000000 -25.000000 0.000000 25.000000 [GRIDVALUES_Y] = 50.000000 DataPoints: total points = 25 [Z_VALUE] = 20.000000; Z1[mm] iX iY X[mm] Y[mm] -2 -2 -50.000000 -50.000000 -1 -2 -25.000000 -50.000000 0 -2 0.000000 -50.000000 1 -2 25.000000 -50.000000 2 -2 50.000000 -50.000000 -2 -1 -50.000000 -25.000000 -1 -1 -25.000000 -25.000000 0 -1 0.000000 -25.000000 1 -1 25.000000 -25.000000 2 -1 50.000000 -25.000000 -2 0 -50.000000 0.000000 -1 0 -25.000000 0.000000 0 0 0.000000 0.000000 1 0 25.000000 0.000000 2 0 50.000000 0.000000 -2 1 -50.000000 25.000000 -1 1 -25.000000 25.000000 0 1 0.000000 25.000000 1 1 25.000000 25.000000 2 1 50.000000 25.000000 -2 2 -50.000000 50.000000 -1 2 -25.000000 50.000000 0 2 0.000000 50.000000 1 2 25.000000 50.000000 2 2 50.000000 50.000000 [Z_VALUE] = -20.000000; Z2[mm] iX iY X[mm] Y[mm] -2 -2 -50.000000 -50.000000 -1 -2 -25.000000 -50.000000 0 -2 0.000000 -50.000000 1 -2 25.000000 -50.000000 2 -2 50.000000 -50.000000 -2 -1 -50.000000 -25.000000 -1 -1 -25.000000 -25.000000 0 -1 0.000000 -25.000000 1 -1 25.000000 -25.000000 2 -1 50.000000 -25.000000 -2 0 -50.000000 0.000000 -1 0 -25.000000 0.000000 0 0 0.000000 0.000000 1 0 25.000000 0.000000 2 0 50.000000 0.000000 -2 1 -50.000000 25.000000 -1 1 -25.000000 25.000000 0 1 0.000000 25.000000 1 1 25.000000 25.000000 2 1 50.000000 25.000000 -2 2 -50.000000 50.000000 -1 2 -25.000000 50.000000 0 2 0.000000 50.000000 1 2 25.000000 50.000000 2 2 50.000000 50.000000 [Stretch_X] = 0.0038050720 [Stretch_Y] = 0.0031820973 c:\test\result.ct5 written successfully로그 파일의 마지막 줄에는 3D 보정에서 사실상 가장 중요한 두가지 값이 추출된것을 확인하실수 있습니다. Stretch X, Stretch Y 로 결국 3D 보정을 하게 되면 이 두 개의 상수를 구하게 되는 것입니다. 해당 수치는 보정파일의 헤더 영역에 기록되게 됩니다.
4. 유틸리티
RTC , 2D , 3D 모드등을 선택하여 사용자가 손쉽게 보정을 실시할수있도록 위의 기능들을 모아 아래 유틸리티를 만들어 보았습니다.
2D 보정의 예
3D 보정의 예
3D 보정에 의해 Stretch X, Y 가 변경된 모습