Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

How can I find the overlap between two binary volumes?

Asked by Angus on 19 Jul 2013

I'm trying to compare two volumes consisting of 3D white shapes on a black background using matlab 2013 for windows.

1) I want to know how much they overlap over all. Correct me if I'm wrong but I think I can use the nnz function to do that.

2) I want to know where the volumes do not overlap. I have no clue how to accomplish this.

Any help is appreciated.



1 Answer

Answer by Image Analyst on 19 Jul 2013

Define "find the overlap". To get the overlap image:

overlapImage = binaryVolume1 & binaryVolume2;
% To count number of pixels
numOverlapPixels = nnz(overlapImage);


Image Analyst on 19 Jul 2013
% Create the volumes:
binaryVolume1 = false(256,256,256);
binaryVolume2 = false(256,256,256);
% "Light up" pixels
for k = 1 : size(x)
  row = y(k);
  column = x(k);
  slice = z(k);
  binaryVolume1(row, column, slice) = true;

Then do for the other volume, binaryVolume2, with its x,y, and z. Then use the code above in my answer to find overlap or matching voxels.

Angus on 19 Jul 2013

I dont need to create the volumes I already have them i just need to analyze them.

I'm looking at mri brain scans by the way just so you have some context of what im working on.

I geuss the volumes arn't actually volumes either their simply stacked 2d "brain slices". We arnt using 3d mr image aquisition. But I think for matlabs purposes its the same as a 3d volume.

Would xor work on 3d arrays?

Angus on 19 Jul 2013

We're ignoring tissue differences and converting the images into a binary image to focus on brain volume at the moment rather than pathology.

Image Analyst

Contact us