superpix_group.m 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. function superMask = superpix_group(mask, N_svox)
  2. % this function contains supervoxel grouping
  3. canvas2 = sqrt(bwdist(1-mask));
  4. % orthoslice (canvas2)
  5. % find box crop of ROI
  6. ymin = 0;
  7. ymax = 0;
  8. for yi = 1:size(mask,1)
  9. data = mask(yi, :,:);
  10. if max(data(:)) >0
  11. if ymin == 0
  12. ymin = yi;
  13. end
  14. ymax = yi;
  15. end
  16. end
  17. xmin = 0;
  18. xmax = 0;
  19. for xi = 1:size(mask,2)
  20. data = mask(:,xi,:);
  21. if max(data(:)) >0
  22. if xmin == 0
  23. xmin = xi;
  24. end
  25. xmax = xi;
  26. end
  27. end
  28. zmin = 0;
  29. zmax = 0;
  30. for zi = 1:size(mask,3)
  31. data = mask(:,:,zi);
  32. if max(data(:)) >0
  33. if zmin == 0
  34. zmin = zi;
  35. end
  36. zmax = zi;
  37. end
  38. end
  39. canvas3 = canvas2(ymin:ymax, xmin:xmax, zmin:zmax);
  40. [L,NumLabels] = superpixels3(canvas3,N_svox);
  41. superMask = zeros(size(mask));
  42. superMask(ymin:ymax, xmin:xmax, zmin:zmax) = L;
  43. superMask(logical(1-mask)) = 0;
  44. disp([num2str(numel(unique(superMask))-1) ' areas created.' ])
  45. end