나는 귀하의 질문을 완전히 오해 할 수도 있습니다. 그 경우에는 사과드립니다. 하지만 다음 세 가지 방법 중 하나가 실제로 필요한 것일 수 있습니다. 방법 3은 당신이 제공 한 예제와 많이 닮은 이미지를 제공합니다 ... 그러나 저는 매우 다른 경로를 가지고 있습니다 (sphere
명령을 사용하지 않고 "내부의 voxels"및 "외부의 voxels"컴퓨팅하기). 중앙에서부터 거리를두고 직접). 구면을 0으로 채우면 거의 검은 색 디스크처럼 보이게되어서 제 3의 이미지와 비교하여 두 번째 이미지를 뒤집 혔습니다.
%% method 1: find the coordinates, and histogram them
[x y z]=sphere(200);
xv = linspace(-1,1,40);
[xh xc]=histc(x(:), xv);
[yh yc]=histc(y(:), xv);
% sum the occurrences of coordinates using sparse:
sm = sparse(xc, yc, ones(size(xc)));
sf = full(sm);
figure;
subplot(1,3,1);
imagesc(sf); axis image; axis off
caxis([0 sf(19,19)]) % add some clipping
title 'projection of point density'
%% method 2: fill a sphere and add its volume elements:
xv = linspace(-1,1,100);
[xx yy zz]=meshgrid(xv,xv,xv);
rr = sqrt(xx.^2 + yy.^2 + zz.^2);
vol = zeros(numel(xv)*[1 1 1]);
vol(rr<1)=1;
proj = sum(vol,3);
subplot(1,3,2)
imagesc(proj); axis image; axis off; colormap gray
title 'projection of volume'
%% method 3: visualize just a thin shell:
vol2 = ones(numel(xv)*[1 1 1]);
vol2(rr<1) = 0;
vol2(rr<0.95)=1;
projShell = sum(vol2,3);
subplot(1,3,3);
imagesc(projShell); axis image; axis off; colormap gray
title 'projection of a shell'
본인은이 결과를 플롯에 관심이 아니지만, 3 차원 영역의 투사 인 2 차원 매트릭스를 가지고. 그리고 그렇게 단순하다면 왜 대답하지 않겠습니까? –
그러나 구의 투영법 인 2D 매트릭스를 사용한다는 것은 무엇을 의미합니까? 어떻게 행렬이 구의 투영이 될 수 있습니까? 그것은 의미가 없습니다 ... –
구체는 본질적으로 3D 오브젝트이며, 투영은 2D 오브젝트입니다. Matlab에서 2D 객체는 행렬로 표현됩니다. 그 행렬에서'imagesc'를 사용하면 첨부 된 이미지와 같은 것을 얻을 것으로 예상됩니다. "링"을 따라 점 (또는 더 높은 픽셀 값)이 누적 될 것이고, 중간에는 훨씬 적습니다. –