Well, I am generally researching X-ray tomography. I went to the lab to ask them if I could put a cheese in one of the machines, but they are not cool with it.... [![Enter image description here][1]][1] So I simulated an X-ray machine on the cheese and reconstructed the result for better analysis. I used MATLAB and the [TIGRE][2] toolbox*. Cheese generation: %% Create cheese % First we create a filled cheese imageSize= 512; [columnsInImage rowsInImage] = meshgrid(1:imageSize, 1:imageSize); % Next create the circle in the image. centerX = 50; centerY = 50; radius = 400; maincheese = (rowsInImage - centerY).^2 ... + (columnsInImage - centerX).^2 <= radius.^2; maincheese(1:100,:)=0; maincheese(:,1:100)=0; fullcheese=zeros(imageSize,imageSize,imageSize,'single'); fullcheese(:,:,50:430)=repmat(maincheese,1,1,430-50+1); clear columnsInImage rowsInImage Now let's make it Swiss. We like manchego, but do we like it more than Swiss? No. nholes=100; [x,y,z]=meshgrid(1:imageSize, 1:imageSize,1:imageSize); holecenters=randi(imageSize,3,nholes); holesizes=rand(1,nholes)*50; holes=false(size(x)); for ii=1:nholes holes=holes|((x - holecenters(1,ii)).^2 ... + (y - holecenters(2,ii)).^2 ... + (z - holecenters(3,ii)).^2 <= holesizes(ii).^2); end fullcheese(holes)=0; [![enter image description here][3]][3] Then I generated X-ray projections from a circular trajectory %% Define Geometry % % VARIABLE DESCRIPTION UNITS geo.DSD = 1536; % Distance Source Detector (mm) geo.DSO = 1000; % Distance Source Origin (mm) % Detector parameters % Image parameters geo.nVoxel=[128;128;128]*2; % number of voxels (vx) geo.sVoxel=[256;256;256]/2; % total size of the image (mm) geo.dVoxel=geo.sVoxel./geo.nVoxel; % size of each voxel (mm) geo.nDetector=[192; 128]; % number of pixels (px) geo.dDetector=[3; 3]; % size of each pixel (mm) geo.sDetector=geo.nDetector.*geo.dDetector; % total size of the detector (mm) % Auxiliary geo.accuracy=0.5; % Accuracy of FWD proj (vx/sample) geo.mode='cone'; % Accuracy of FWD proj (vx/sample) nangles=180; angles=linspace(0,2*pi-2*pi/nangles,nangles)-pi; projections=Ax(fullcheese,geo,angles,'interpolated'); [![Enter image description here][4]][4] And finally I reconstructed it using two different mathematical methods, just for better cheese-analysis. fdkcheese=FDK(projections, geo, angles); ossartcheese=OS_SART(projections, geo, angles, 50); Resulting in this deep insight on how cheese is, with non-destructive testing. (The image shows slices of cheese.) plotImg([sartcheese, fdktest], 'dim', 3, 'savegif', 'cheeses.gif') [![Enter image description here][5]][5] Now you can know how to cut the cheese so everyone gets equal amount of holes, before even cutting! ---- *Disclaimer: I programmed the TIGRE toolbox and am not trying to promote it. I just know how to make cheese fast with it. [1]: https://i.stack.imgur.com/oJKjg.png [2]: https://kt.cern/success-stories/tigre-new-open-source-software-medical-imaging [3]: https://i.stack.imgur.com/qePXp.gif [4]: https://i.stack.imgur.com/oSXKm.gif [5]: https://i.stack.imgur.com/k8kOv.gif