Stationary Cone Beam Translation CT

1 개요

고정된 콘빔 CT 시스템에서 평행 이동하는 물체의 움직임을 고려하여 단면 영상을 복원하는 알고리즘

2 알고리즘 상세 설명

물체의 이동 방향은 이미지의 x 축과 평행한 왼쪽 또는 오른쪽이며, 중심 페이지에서 물체의 중심이 소스 이미지 x 축 중심을 지남을 가정합니다.

Source Images Destination Image
Source Image Destination Image
Fig. Source, Destination image.

Sinogram Keep Ratio 와 Interpolation Coefficient 에 의하여 x 축 복셀 수가 결정되며 Interpolation Coefficient 는 특히 해상도와 직접적인 관련이 있습니다. y 축 복셀 수는 Source ROI 의 높이에 의해 결정됩니다. z 축 복셀 수는 coronal plane 수를 의미하는 Reconstruction Plane Count 를 통해 설정 가능합니다.
Slicing Plane 지정함으로써 단면 종류를 선택할 수 있습니다.
Sigmoid 활성화 시 Sigmoid 가 적용된 이후의 값이 출력되며, 시각화에 유리합니다.

Source ROI X 축 길이에 의하여 angle 범위가 증가합니다. 또한 이 길이에 Sinogram Keep Ratio 를 곱한 값을 하한으로 하는 Optimal FFT Size 가 결정되고 수행되므로, Sinogram Keep Ratio 를 조금씩 변경하며 FFT Factors 를 크지도 작지도 않은 소수들로 구성할 시 연산 시간이 개선될 가능성이 있습니다.

Destination Sinogram Image
Destination Image
Fig. Destination sinogram image.

Destination Sinogram Image 의 sinogram 품질을 확인하며 Object Translation Distance 와 Principal Delta X Pixel 파라미터를 조절해 결과를 개선할 수 있습니다. Sinogram 이 기울어진 경우 Object Translation Distance 를 조절하여 수직으로 조절할 수 있으며, 한쪽으로 치우친 경우 중심 페이지에서 물체가 중심에 있지 않음을 의미합니다. 위 또는 아래로 갈수록 sinogram 이 두꺼워 지는 현상은 principal delta x 설정으로 개선될 수 있습니다.

Destination 3D Object
Destination 3D Object
Fig. Destination 3D Object

Destination 3D Object 는 Object Voxel 에 대하여 Sigmoid 및 Intensity Threshold 가 수행된 point cloud 입니다. 또한 3D View 의 Zoom Fit 상태에서 보다 시각적으로 일치하도록 출력됩니다.

3 파라미터 설정 및 사용 방법

Sinogram Index 설정

Scan Geometry 설정

입력 데이터 처리 방식 설정

출력 데이터 처리 방식 설정

4 예제 코드

CStationaryConeBeamTranslationCT stationaryConeBeamTranslationCT;

CFLImage fliSrcImage;
CFLImage fliDstImage;
CFLImage fliDstSinoImage;
CFL3DObject floDstObject;

stationaryConeBeamTranslationCT.SetSourceImage(&fliSrcImage);
stationaryConeBeamTranslationCT.SetDestinationImage(&fliDstImage);
stationaryConeBeamTranslationCT.SetDestinationSinogramImage(&fliDstSinoImage);
stationaryConeBeamTranslationCT.SetDestinationObject(&floDstObject);
stationaryConeBeamTranslationCT.SetDestinationSinogramIndex(15);
stationaryConeBeamTranslationCT.SetDetectorCellSizeUnit(0.16708);
stationaryConeBeamTranslationCT.SetObjectTranslateDirection(CStationaryConeBeamTranslationCT::EObjectTranslateDirection_RightToLeft);
stationaryConeBeamTranslationCT.SetSourceObjectDistanceUnit(13.60);
stationaryConeBeamTranslationCT.SetSourceDetectorDistanceUnit(60.00);
stationaryConeBeamTranslationCT.SetObjectTranslationDistanceUnit(24.00);
stationaryConeBeamTranslationCT.SetPrincipalDeltaXPixel(0.00);
stationaryConeBeamTranslationCT.SetNormalizedAirThreshold(0.60);
stationaryConeBeamTranslationCT.SetSinogramKeepRatio(0.30);
stationaryConeBeamTranslationCT.SetInterpolationCoefficient(6);
stationaryConeBeamTranslationCT.SetMergeCoefficient(21);
stationaryConeBeamTranslationCT.EnableFrequencyRampFilter(true);
stationaryConeBeamTranslationCT.SetFrequencyWindow(CStationaryConeBeamTranslationCT::EFrequencyWindow_Gaussian);
stationaryConeBeamTranslationCT.SetSigma(0.30);
stationaryConeBeamTranslationCT.SetReconstructionPlaneCount(140);
stationaryConeBeamTranslationCT.EnableNegativeClip(true);
stationaryConeBeamTranslationCT.EnableCircularMask(true);
stationaryConeBeamTranslationCT.EnableSigmoid(true);
stationaryConeBeamTranslationCT.SetSigmoidB(1.00);
stationaryConeBeamTranslationCT.SetSigmoidM(0.00);
stationaryConeBeamTranslationCT.SetIntensityThreshold(190));
stationaryConeBeamTranslationCT.SetSlicingPlane(CStationaryConeBeamTranslationCT::ESlicingPlane_Transverse);

stationaryConeBeamTranslationCT.Execute();
CStationaryConeBeamTranslationCT stationaryConeBeamTranslationCT = new CStationaryConeBeamTranslationCT();

CFLImage fliSrcImage = new CFLImage();
CFLImage fliDstImage = new CFLImage();
CFLImage fliDstSinoImage = new CFLImage();
CFL3DObject floDestination = new CFL3DObject();

stationaryConeBeamTranslationCT.SetSourceImage(ref fliSrcImage);
stationaryConeBeamTranslationCT.SetDestinationImage(ref fliDstImage);
stationaryConeBeamTranslationCT.SetDestinationSinogramImage(ref fliDstSinoImage);
stationaryConeBeamTranslationCT.SetDestinationObject(ref floDstObject);
stationaryConeBeamTranslationCT.SetDestinationSinogramIndex(15);
stationaryConeBeamTranslationCT.SetDetectorCellSizeUnit(0.16708);
stationaryConeBeamTranslationCT.SetObjectTranslateDirection(CStationaryConeBeamTranslationCT.EObjectTranslateDirection.RightToLeft);
stationaryConeBeamTranslationCT.SetSourceObjectDistanceUnit(13.60);
stationaryConeBeamTranslationCT.SetSourceDetectorDistanceUnit(60.00);
stationaryConeBeamTranslationCT.SetObjectTranslationDistanceUnit(24.00);
stationaryConeBeamTranslationCT.SetPrincipalDeltaXPixel(0.00);
stationaryConeBeamTranslationCT.SetNormalizedAirThreshold(0.60);
stationaryConeBeamTranslationCT.SetSinogramKeepRatio(0.30);
stationaryConeBeamTranslationCT.SetInterpolationCoefficient(6);
stationaryConeBeamTranslationCT.SetMergeCoefficient(21);
stationaryConeBeamTranslationCT.EnableFrequencyRampFilter(true);
stationaryConeBeamTranslationCT.SetFrequencyWindow(CStationaryConeBeamTranslationCT.EFrequencyWindow.Gaussian);
stationaryConeBeamTranslationCT.SetSigma(0.30);
stationaryConeBeamTranslationCT.SetReconstructionPlaneCount(140);
stationaryConeBeamTranslationCT.EnableNegativeClip(true);
stationaryConeBeamTranslationCT.EnableCircularMask(true);
stationaryConeBeamTranslationCT.EnableSigmoid(true);
stationaryConeBeamTranslationCT.SetSigmoidB(1.00);
stationaryConeBeamTranslationCT.SetSigmoidM(0.00);
stationaryConeBeamTranslationCT.SetIntensityThreshold(190));
stationaryConeBeamTranslationCT.SetSlicingPlane(CStationaryConeBeamTranslationCT.ESlicingPlane.Transverse);

stationaryConeBeamTranslationCT.Execute();
stationaryConeBeamTranslationCT = CStationaryConeBeamTranslationCT()

fliSrcImage = CFLImage()
fliDstImage = CFLImage()
fliDstSinoImage = CFLImage()
floDestination = CFL3DObject()

stationaryConeBeamTranslationCT.SetSourceImage(fliSrcImage)
stationaryConeBeamTranslationCT.SetDestinationImage(fliDstImage)
stationaryConeBeamTranslationCT.SetDestinationSinogramImage(fliDstSinoImage)
stationaryConeBeamTranslationCT.SetDestinationObject(floDstObject)
stationaryConeBeamTranslationCT.SetDestinationSinogramIndex(15)
stationaryConeBeamTranslationCT.SetDetectorCellSizeUnit(0.16708)
stationaryConeBeamTranslationCT.SetObjectTranslateDirection(CStationaryConeBeamTranslationCT.EObjectTranslateDirection.RightToLeft)
stationaryConeBeamTranslationCT.SetSourceObjectDistanceUnit(13.60)
stationaryConeBeamTranslationCT.SetSourceDetectorDistanceUnit(60.00)
stationaryConeBeamTranslationCT.SetObjectTranslationDistanceUnit(24.00)
stationaryConeBeamTranslationCT.SetPrincipalDeltaXPixel(0.00)
stationaryConeBeamTranslationCT.SetNormalizedAirThreshold(0.60)
stationaryConeBeamTranslationCT.SetSinogramKeepRatio(0.30)
stationaryConeBeamTranslationCT.SetInterpolationCoefficient(6)
stationaryConeBeamTranslationCT.SetMergeCoefficient(21)
stationaryConeBeamTranslationCT.EnableFrequencyRampFilter(True)
stationaryConeBeamTranslationCT.SetFrequencyWindow(CStationaryConeBeamTranslationCT.EFrequencyWindow.Gaussian)
stationaryConeBeamTranslationCT.SetSigma(0.30)
stationaryConeBeamTranslationCT.SetReconstructionPlaneCount(140)
stationaryConeBeamTranslationCT.EnableNegativeClip(True)
stationaryConeBeamTranslationCT.EnableCircularMask(True)
stationaryConeBeamTranslationCT.EnableSigmoid(True)
stationaryConeBeamTranslationCT.SetSigmoidB(1.00)
stationaryConeBeamTranslationCT.SetSigmoidM(0.00)
stationaryConeBeamTranslationCT.SetIntensityThreshold(190))
stationaryConeBeamTranslationCT.SetSlicingPlane(CStationaryConeBeamTranslationCT.ESlicingPlane.Transverse)

stationaryConeBeamTranslationCT.Execute()

5 기타 사항

Supported Feature

Supported Format

6 관련 알고리즘