MATLAB Answers


How can I find the overlap between two binary volumes?

Asked by Dalas
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.


Log in to comment.

1 Answer

Answer by Image Analyst
on 19 Jul 2013
 Accepted Answer

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

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


Show 1 older comment
% 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.

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?

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

Log in to comment.

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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!