mrcImageAutoRotationCorrelation3D
mrcImageAutoRotationCorrelation3DとはmrcImageファイルの3次元データ間の相関値を計算するためのEosのコマンドである。参照画像に対してもっとも合う3次元画像の向きを決定していく。そのもっともよく合った画像を出力することもできる。
目次
- 1 アルゴリズム
- 2 オプション一覧
- 3 実行例
- 3.1 入力ファイルの画像
- 3.2 参照ファイルの画像
- 3.3 オプション -Rot1, -Rot2, -Rot3
- 3.4 オプション -EA
- 3.5 オプション -Xrange, -Yrange, Zrange
- 3.6 オプション -MR
- 3.7 オプション -M
- 3.8 オプション -m
- 4 参考文献
アルゴリズム
リファレンスの3次元画像を回転させて、もっともよく合う回転角を相関値から見出す。相関値は、いくつかの関数系をもつが、基本的には、フーリエ空間での計算から相関関数を求め、その最大値を探索する。
オプション一覧
下記に必要となる引数を記す。-i/-rは必須の引数である。
メインオプション
オプション | 必須項目/選択項目 | 説明 | デフォルト |
---|---|---|---|
-i | 必須 | 入力テストファイル: mrcImage | NULL |
-r | 必須 | 参照テストファイル: mrcImage | NULL |
-o | 選択 | 出力ファイル: パラメータ | stdout(設定しなければ標準出力) |
-cor | 選択 | 出力ファイル: 相関マップ: mrcImage | NULL |
-fit | 選択 | 出力: 類似度の一番高い位置、回転角でのテスト画像: mrcImage | NULL |
-EA | 選択 | 入力: オイラー角の選択:4文字 | YOYS |
-Rot1 | 選択 | 入力: オイラー角の第1角の範囲:min max delta | 0.0 360.0 5.0 |
-Rot2 | 選択 | 入力: オイラー角の第2角の範囲:min max delta | 0.0 180.0 5.0 |
-Rot3 | 選択 | 入力: オイラー角の第3角の範囲:min max delta | 0.0 360.0 5.0 |
-Xrange | 選択 | 入力: x: min max: [pixel] | 0 0(設定しなければ、X方向の全範囲) |
-Yrange | 選択 | 入力: y: min max: [pixel] | 0 0(設定しなければ、Y方向の全範囲) |
-Zrange | 選択 | 入力: z: min max: [pixel] | 0 0(設定しなければ、Z方向の全範囲) |
-M | 選択 | 入力: 相関関数の選択 | 0 |
-MR | 選択 | 入力: 画像回転の取り扱い | 0 |
-m | 選択 | 入力: 画像の補間モード | 0 |
-c | 選択 | コンフィグファイル設定 | NULL |
-h | 選択 | ヘルプを表示 |
モードの詳細
回転のモード: -MR
モード | 説明 |
---|---|
0 | 0で周辺を埋める |
1 | 平均値で周辺を埋める |
+0 | 楕円体としての回転 |
+16 | 直方体としての回転 |
そうではなく、周辺まで像があるときには、16が推奨
相関関数のモード: -M
モード | 説明 |
---|---|
0 | Normal Correlation FxG* |
1 | Phase Correlation FxG*/ |FxG*| |
2 | Phase Correlation FxG*/sqrt(|FxG*|) |
3 | Normalized Normal Correlation FxG*/|F||G|) |
16 | (0,0) = 0 |
補間のモード: -m
モード | 説明 |
---|---|
0 | 最近傍 |
1 | 1次補間 |
2 | 3次補間 |
実行例
参照像test.refに対して、テスト画像test.inを合わせる場合の例。その際の相関値の計算結果がtest.paramに格納され、また、相関マップtest.corも手に入れている。 相関は、参照像を(オイラー角、この場合は、YOYSであるので、Y軸回転(Rot1)、X軸回転(Rot2)、Z軸回転(Rot3)の順に回転)に従って、3つの角度Rot1, Rot2, Rot3で指定した範囲と刻み幅で回転させる。 回転する際に、画像は直方体内全体にあると考え、その外側は平均値でパッドする。相関値は、F*G*でフーリエ空間の積の逆フーリエ変換で求められた相関関数(相関マップ)から求めるが、-Xrange/-Yrange/-Zrangeにより、その移動距離が制限される。
$ mrcImageAutoRotationCorrelation3D -i test.in -r test.ref -o test.param -cor test.cor -fit test.fit -EA YOYS -Rot1 -20 20 10 -Rot2 -30 30 15 -Rot3 -10 10 5 -Xrange -1 1 -Yrange -2 2 -Zrange 0 0 -MR 17 -M 16 -m 2
入力ファイルの画像
![]() |
最小 最大 |
0 (1, 1, 0) 1 (19, 1, 0) |
参照ファイルの画像
![]() |
最小 最大 |
0 (1, 1, 0) 1 (19, 1, 0) |
オプション -Rot1, -Rot2, -Rot3
Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -23.000000 -28.000000 -20.000000 Cor 0.140128 -0.006095 Max: YOYS 0.000000 0.000000 30.000001 at -18.000000 -32.000000 -20.000000 Cor 0.157113 -0.005784 Max: YOYS 0.000000 0.000000 90.000003 at -26.000000 -30.000000 -20.000000 Cor 0.178878 -0.006212 Max: YOYS 0.000000 0.000000 149.999997 at -14.000000 -17.000000 -20.000000 Cor 6348069965383335936.000000 -0.005416 Max: YOYS 0.000000 0.000000 210.000013 at -14.000000 -17.000000 -20.000000 Cor 6354297599243059200.000000 -0.005659 Max: YOYS 0.000000 0.000000 270.000001 at -14.000000 -17.000000 -20.000000 Cor 6356619767800922112.000000 -0.006271 Max: YOYS 0.000000 0.000000 330.000016 at -14.000000 -17.000000 -20.000000 Cor 6358941936358785024.000000 0.017826 Max: YOYS 0.000000 30.000001 0.000000 at -14.000000 -17.000000 -20.000000 Cor 6361264104916647936.000000 -0.005977 Max: YOYS 0.000000 30.000001 60.000002 at -14.000000 -17.000000 -20.000000 Cor 6363586273474510848.000000 -0.005946 Max: YOYS 0.000000 30.000001 120.000003 at -14.000000 -17.000000 -20.000000 Cor 6365908442032373760.000000 -0.005885 Max: YOYS 0.000000 30.000001 180.000005 at -13.000000 -17.000000 -20.000000 Cor 36902486550580822016.000000 -0.006037
-cor の画像
![]() |
最小 最大 |
0.0804175 (0, 0, 6) 3.69025e+19 (0, 1, 6) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (15, 13, 1) |
オプション -EA
EA=ZENS, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: ZENS 0.000000 0.000000 0.000000 at -23.000000 -28.000000 -20.000000 Cor 0.140128 -0.006095 Max: ZENS 0.000000 0.000000 30.000001 at -18.000000 -32.000000 -20.000000 Cor 0.157113 -0.005784 Max: ZENS 0.000000 0.000000 90.000003 at -26.000000 -30.000000 -20.000000 Cor 0.178878 -0.006212
-cor の画像
![]() |
最小 最大 |
0.0336148 (1, 4, 0) 0.178878 (0, 0, 3) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (1, 17, 1) |
オプション -Xrange, -Yrange, Zrange
Xrange=(10, 15), Yrange=(10, 15), Zrange=(10, 15), Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at 0.000000 0.000000 0.000000 Cor 0.033541 0.056044 Max: YOYS 0.000000 0.000000 120.000003 at 14.000000 12.000000 10.000000 Cor 0.033731 0.016596 Max: YOYS 0.000000 0.000000 210.000013 at 14.000000 13.000000 11.000000 Cor 0.033857 -0.005534 Max: YOYS 0.000000 30.000001 299.999995 at 10.000000 14.000000 10.000000 Cor 0.044848 -0.005701 Max: YOYS 0.000000 90.000003 120.000003 at 10.000000 14.000000 10.000000 Cor 0.045006 -0.006493 Max: YOYS 30.000001 149.999997 180.000005 at 13.000000 10.000000 13.000000 Cor 0.045016 0.015388 Max: YOYS 60.000002 0.000000 90.000003 at 12.000000 12.000000 10.000000 Cor 0.045173 -0.006438 Max: YOYS 120.000003 120.000003 30.000001 at 14.000000 12.000000 13.000000 Cor 0.055965 -0.006359
-cor の画像
![]() |
最小 最大 |
0.0114748 (1, 4, 1) 0.0559651 (4, 4, 1) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (5, 1, 0) |
オプション -MR
MR=1, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -23.000000 -28.000000 -20.000000 Cor 0.141222 -0.006563 Max: YOYS 0.000000 0.000000 30.000001 at -18.000000 -32.000000 -20.000000 Cor 0.157193 -0.005707 Max: YOYS 0.000000 0.000000 90.000003 at -26.000000 -30.000000 -20.000000 Cor 0.177568 -0.006511
-cor の画像
![]() |
最小 最大 |
0.0385571 (7, 1, 4) 0.177568 (0, 0, 3) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 1) 1 (1, 17, 1) |
MR=16, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -31.000000 -20.000000 -20.000000 Cor 0.212045 0.003815
-cor の画像
![]() |
最小 最大 |
0.0454467 (9, 5, 3) 0.212045 (0, 0, 0) |
-fit の画像
![]() |
最小 最大 |
0 (0, 1, 0) 1 (8, 1, 0) |
MR=17, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -31.000000 -20.000000 -20.000000 Cor 0.212045 0.003815
-cor の画像
![]() |
最小 最大 |
0.0454467 (9, 5, 3) 0.212045 (0, 0, 0) |
-fit の画像
![]() |
最小 最大 |
0 (0, 1, 0) 1 (8, 1, 0) |
オプション -M
M=1, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -20.000000 -21.000000 -25.000000 Cor 7.951506 -0.006330 Max: YOYS 0.000000 180.000005 0.000000 at -20.000000 -22.000000 -28.000000 Cor 12.379415 -0.006212
-cor の画像
![]() |
最小 最大 |
4.31499 (2, 2, 1) 12.3794 (0, 6, 0) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (8, 1, 0) |
M=2, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -20.000000 -21.000000 -25.000000 Cor 0.669592 -0.006330 Max: YOYS 0.000000 180.000005 0.000000 at -20.000000 -22.000000 -28.000000 Cor 1.027818 -0.006212
-cor の画像
![]() |
最小 最大 |
0.350646 (0, 2, 1) 1.02782 (0, 6, 0) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (8, 1, 0) |
M=3, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -20.000000 -21.000000 -28.000000 Cor 0.218833 -0.006388 Max: YOYS 0.000000 180.000005 0.000000 at -20.000000 -22.000000 -28.000000 Cor 0.328095 -0.006212 Max: YOYS 0.000000 180.000005 60.000002 at -25.000000 -30.000000 -20.000000 Cor 1.000000 -0.006033
-cor の画像
![]() |
最小 最大 |
0.0938449 (7, 0, 0) 1 (0, 6, 2) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (8, 19, 1) |
M=16, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -23.000000 -28.000000 -20.000000 Cor 0.140128 -0.006095 Max: YOYS 0.000000 0.000000 30.000001 at -18.000000 -32.000000 -20.000000 Cor 0.157113 -0.005784 Max: YOYS 0.000000 0.000000 90.000003 at -26.000000 -30.000000 -20.000000 Cor 0.178878 -0.006212
-cor の画像
![]() |
最小 最大 |
0.0298141 (7, 0, 0) 0.178878 (0, 0, 3) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (1, 17, 1) |
オプション -m
m=1, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -23.000000 -28.000000 -20.000000 Cor 0.140128 -0.006095 Max: YOYS 0.000000 0.000000 30.000001 at -18.000000 -32.000000 -20.000000 Cor 0.158153 -0.008176 Max: YOYS 0.000000 0.000000 90.000003 at -26.000000 -30.000000 -20.000000 Cor 0.178878 -0.006212
-cor の画像
![]() |
最小 最大 |
0.0176277 (1, 5, 4) 0.178878 (0, 0, 3) |
-fit の画像
![]() |
最小 最大 |
0 (0, 0, 0) 1 (1, 17, 1) |
m=2, Rot1=(0, 360, 30), Rot2=(0, 180, 30), Rot3=(0, 360, 30)で実行
-o のデータ
Max: YOYS 0.000000 0.000000 0.000000 at -23.000000 -28.000000 -20.000000 Cor 0.140128 -0.006095 Max: YOYS 0.000000 0.000000 30.000001 at -18.000000 -32.000000 -20.000000 Cor 0.151922 -0.006019 Max: YOYS 0.000000 0.000000 90.000003 at -26.000000 -30.000000 -20.000000 Cor 0.178878 -0.006212
-cor の画像
![]() |
最小 最大 |
0.0256789 (8, 5, 7) 0.178878 (0, 0, 3) |
-fit の画像
![]() |
最小 最大 |
-4.76837e-07 (10, 14, 9) 1 (1, 17, 1) |