mrc2Dto3D(m=2, -Double)
【問題内容】 m=2の重み付き逆投影にて、オプション-Doubleの場合に中心が+0.25、縦横が-0.125(2:-1)の比で畳み込むようになっています。 ここは中心: +0.25、縦横: -0.0625(4:-1の比)で畳み込むのではないのでしょうか。 【引用】「[eos] #33730: Radon変換の整理」より > -m 2のオプションを使って、実空間の重み付き逆投影法ができるようにしました。 > -m 2の場合を加えていただけますか。この場合、実空間を > -1 2 -1 > > -Double は > 0 -1 0 > -1 4 -1 > 0 -1 0 > によりたたみ込んでいます。 【ソースコード(一部)】 ファイル名: /src/Objects/DataManip/transform/src/lmrc2Dto3D.c 関数名: lmrcImage2Dto3DSingle (189行目付近) case mrc2Dto3DModeWeightedBackProjection: { prj = tmp; mrcInit(&prj, NULL); kernel = tmp; kernel.HeaderMode = mrcFloatImage; kernel.HeaderN.z = 1; if(linfo->flagDouble) { kernel.HeaderN.x = 3; kernel.HeaderN.y = 3; mrcInit(&kernel, NULL); mrcPixelDataSet(&kernel, 0, 0, 0, 0, mrcPixelRePart); mrcPixelDataSet(&kernel, 0, 1, 0, -0.125, mrcPixelRePart); mrcPixelDataSet(&kernel, 0, 2, 0, 0, mrcPixelRePart); mrcPixelDataSet(&kernel, 1, 0, 0, -0.125, mrcPixelRePart); mrcPixelDataSet(&kernel, 1, 1, 0, 0.25, mrcPixelRePart); mrcPixelDataSet(&kernel, 1, 2, 0, -0.125, mrcPixelRePart); mrcPixelDataSet(&kernel, 2, 0, 0, 0, mrcPixelRePart); mrcPixelDataSet(&kernel, 2, 1, 0, -0.125, mrcPixelRePart); mrcPixelDataSet(&kernel, 2, 2, 0, 0, mrcPixelRePart); } else { 【対策案】 該当箇所4点を-0.0625にすることを考えております。 (189行目付近) mrcPixelDataSet(&kernel, 0, 0, 0, 0, mrcPixelRePart); mrcPixelDataSet(&kernel, 0, 1, 0, -0.0625, mrcPixelRePart); mrcPixelDataSet(&kernel, 0, 2, 0, 0, mrcPixelRePart); mrcPixelDataSet(&kernel, 1, 0, 0, -0.0625, mrcPixelRePart); mrcPixelDataSet(&kernel, 1, 1, 0, 0.25, mrcPixelRePart); mrcPixelDataSet(&kernel, 1, 2, 0, -0.0625, mrcPixelRePart); mrcPixelDataSet(&kernel, 2, 0, 0, 0, mrcPixelRePart); mrcPixelDataSet(&kernel, 2, 1, 0, -0.0625, mrcPixelRePart); mrcPixelDataSet(&kernel, 2, 2, 0, 0, mrcPixelRePart);
中心を0.25ではなく、0.5にした形でバグの修正をしています。確認してみて下さい。以前のままだと、全体がマイナスになってしまいますので、まずい状況になっていました。
Details