2016-08-25 6 views
0

PET 이미지 (float)의 크기는 [84 * 71 * 103]이고 공간 크기는 4.07 * 4.07 * 3mm입니다.3D 이미지에서 구 (마스크로) 만들기

  • 는 복셀이 (나에 의해 정의) 종양의 중심에 해당 [116,177,86] 좌표를 사용하여 종양의 센터와 동심 구를 만들 :

    내가 원하는.
  • 구의 직경을 종양 자체보다 약간 크게 변경하십시오.

그래서 구가 이미지 위에 겹쳐지는 마스크 역할을 할 것이므로 구형 내에서 이미지 값에 대한 통계를 얻을 수 있습니다.

내가 충분히 명확하게 만들었 으면 좋겠다. 나는 정말로 당신의 도움에 감사 할 것입니다. 코드가 올바르게 작동하지 않아 진행 방법을 모르겠습니다.

fid_1 = fopen('I:\PatientData\patient3\case1\DIR_CT1toCT2\New-  
crop\PET1FEM_PET2_DIFF.img','r','l'); 
pet1fem_pet2_diff = fread(fid_1,'float32'); 
pet1fem_pet2_diff = reshape(pet1fem_pet2_diff, [84 71 103]); 
% interpolation is nearest neighbour, and 'crop' Makes output the same size as the input image 
pet1fem_pet2_diff = imrotate(pet1fem_pet2_diff,90,'nearest','crop'); 

% create the image 
imageSizeX = 84; 
imageSizeY = 71; 
imageSizeZ = 103; 
% columns are in the x direction and, rows are in the y direction 
[columnsInImage rowsInImage pagesInImage] = meshgrid(1:imageSizeX, 1:imageSizeY,1:imageSizeZ); 

% Next create the sphere in the image. 
centerX = 29; 
centerY = 26; 
centerZ = 74; 
radius = 5; 

nonSphereVoxels = (rowsInImage - centerY).^2 ... 
    + (columnsInImage - centerX).^2 + (pagesInImage - centerZ).^2 > radius.^2; 
    pet1fem_pet2_diff(nonSphereVoxels) = 0; 

figure(1); 
imagesc(pet1fem_pet2_diff(:,:,30)); 
title('PET1FEM-PET2-DIFF'); 
+0

실제로 이미지에 필터를 적용한 부분이 보이지 않습니다. 아마도 nonSphereVoxels = (rowsInImage - centerY).^2 + (columnsInImage - centerX).^2 + (pagesInImage - centerZ).^2> 반지름.^2; pet1_diff (nonSphereVoxels) = 0으로 설정하십시오. –

+0

답장을 보내 주셔서 감사합니다. 네, 이해하지만 그건 내 문제입니다. PET 이미지의 논리 마스크로 구체를 적용하는 방법을 모르겠습니다. 나는 당신이 추천 한 것을 시도했으나 여전히 그 이미지에 구를 만들어 내지 않았다. – Hoda

+0

질문 및 코드 서식 지정 – EBH

답변

0

간단한 2D 버전의 문제를 해결했습니다. 귀하의 질문에 대한 답변이 도움이되기를 바랍니다.

[x,y] = meshgrid(1:128,1:128); 
r2 = ((x-40).^2 + (y-40).^2) > 10^2; % radius 10 cutoff from position (40,40) 
A(r2) = 0; % delete pixels outside the cutoff radius 

% plot the filtered data 
clf reset 
imagesc(A) 
daspect([1 1 1]) 

이 당신이 목표로 한 결과의 종류 : 우선 들어, 입력

A = rand(128,128); % this is your pet1_diff data 
% you can plot it like this: 
clf reset 
imagesc(A) 
daspect([1 1 1]) 

다음을 만들 수 있습니다, 우리는 컷오프를 적용?

+0

감사합니다. Airidas. 나는 당신의 코드를 시험해 보았고 정확하게 필요로하는 것과 똑같이 작동합니다. 단지 3D로 필요합니다. 나는 정확하게 내 이미지 (3D)로 그 일을 시도했지만 빈 녹색 창이 나타납니다. – Hoda

+0

@Airidas 방금 귀하의 제안과 일치하도록 내 코드를 편집했습니다. 그것은 나에게 빈 (녹색) 인물을 준다. – Hoda

+0

구의 중심 주위를 플로팅 해보십시오. imagesc (pet1fem_pet2_diff (:, :,, 74)); –