test11_R38cvx00.png モデル原点を測定値原点に置いて差し引き test11_R38cvx01.png 中心φ6mm 範囲内のデータのみで位置合わせ(Xcen=-0.006386, Ycen=0.001896) test11_R38cvx02.png 目で見て測定値のおかしい部分をマスク test11_R38cvx03.png 再度中心部データで位置合わせ (Xcen=-0.006669, Ycen=0.001527) test11_R38cvx04.png オリジナル極座標 fit ルーチンで (α,β) の関数として fit test11_R38cvx05.png 残差マップ test11_R38cvx06.png 最大次数19次での Zernike 多項式展開を行った。 Zernike 5次まで test11_R38cvx07.png 残差マップ(5次 σ= 0.0458306μm で最小値) test11_R38cvx08~14.png 残差マップ(6次~12次 σ= 0.047085~0.0484311μm) 13次以降、周辺部が急速に悪化する。 Zernike fit 時のモデル半径が画像の内接円ではやや小さかった ようだ(周辺部がモデルからはみ出ていた)。モデル半径を少し 大きくすることで解決できた。5% 拡大がベストだった。 test11_R38cvx15.png 残差マップ(12次 σ= 0.0363582 μm で最小値) ここまでは Zernike の原点を画像中心に置いた計算で、 実際には Xcen=-0.006669, Ycen=0.001527 にしないといけない。 測定ピッチは dX=0.25, dY=0.5 なので、上記の量は pixel 値 としては -0.026676, 0.003054 pix となる。 これだけ Zernike の原点をずらして fit するともう少しだけ σが小さくなったのでこちらを採用。 test11_R38cvx16.png 残差マップ(12次 σ= 0.0363304 μm で最小値) test11_R38cvx17.png 最後に残った残差をオリジナル極座標 fit ルーチンで (α,β) の関数として fit test11_R38cvx18.png 最終的な残差(σ= 0.0322556 μm) C.zip: C ソースと必要なファイル一式です。 展開したら README.txt を読んで下さい。