- 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 가 변경된 모습
2D 보정시 K-factor(bit/mm) 값을 필요로 하는데, K-factor가 뭔지 그리고 이 값을 모를경우 어떤식으로 K-factor값을 구할할 수 있는지 혹은 K-factor를 안쓰고 다른 방법으로 보정할 수 있는지에 대해서 알려주실 수 있나요?
답글삭제RTC 3,4 의 경우 위치를 제어하는 단위가 비트(bits)입니다.
삭제또한 이 비트의 단위가 16비트 즉 2^16승으로 resolution 이 16비트로 보시면 됩니다.
범위는 -65,... ~ + 65,... 가 되겠지요. 만약 65536 bit 위치로 스캐너를 보내면 갈수있는 최대의 위치로 이동됩니다. 이때 거리가 약 A mm 라고 하면 bits/mm = 65536 / A 가 되겠지요. 이를 k-factor 라고 통상 부릅니다. k-factor 를 구해야 사용자 단위계와 스캐너 제어 단위를 조작할수있으니 편합니다.
RTC5 or 6 에 대한 calibration 프로그램을 개발해보고자합니다
답글삭제도움을 좀 받고싶습니다만 위에 gmail 로 메일 문의드려도 괜찮을까요
메일주소는 sepwind@gmail.com 혹은 010-둘767-삼팔구육 으로 문의주시길 바랍니다. 감사합니다.
삭제특정 구간의 보정도 가능합니다. 아니면 특정 구간을 제외한 영역에 오차값을 0 으로 입력해도 가능하며, 아예 구간을 제외하고 데이타를 넣지 않게되면 이 부분은 보정이 적용되지 않아 stitching 에러가 발생하게 되겠지요. 사용하지 않는 영역이라면 큰 문제는 없으리라 봅니다.
답글삭제40mm 를 3x3으로 하게 되면, 대략 -20,0,20 의 9 개의 보정점 위치가 있는데, 예를 들어 좌상단이 여러 이유로 측정이 곤란하다면, 오차값을 측정하지 않고 그냥 x=-20, y=20 으로 설정한체로 보정을 돌리면, 보정은 성공하게 됩니다. 물론 좌상단에서는 위치 오차가 발생하겠지만요. 참고하세요.
답글삭제안녕하세요 요즘 RTC4/5 관련 보정 프로그램을 제작 중에 있습니다 .
답글삭제CTB / CT5 내부 포멧이 궁금하여 그런데 내부 데이터 정보를 알려주실수 있을까요 ?
해당 파일 포맷은 스캔랩에서 구조에 대한 정보를 제공하지 않습니다. 때문에 개발하시는 보정 프로그램내에서 이 유틸리티 프로그램들(CFMP.exe, CorreXion5, correXionPro)중 하나를 사용하도록 개발해야 합니다.통상 dat 파일에 측정 정보를 기록한후 이를 프로세스의 인자로 전달하는 방식입니다.
삭제