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.


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);


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.

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?

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.

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today