Switch to side-by-side view

--- a
+++ b/combinedDeepLearningActiveContour/display3D.m
@@ -0,0 +1,113 @@
+% read manual segmentation and generate a 3D plot
+clc 
+close all
+clear all
+addpath('functions');
+%%
+imset='training';
+patient=1;
+%% read direcotory of images
+folder=['dcom/',imset,'/ED',num2str(patient),'/images'];
+[IMAGES, xthickness, ythickness, zthickness] = gatherImages(folder);
+
+ [x_max,y_max,z_max]=size(IMAGES);
+% for k=1:z_max
+%     subplot(3,5,k)
+%     imagesc(IMAGES(:,:,k));
+%     colormap(gray);
+% end
+
+% adjust the resolution so that it falls in range [0-max_res]
+max_res=3;
+norm_res = floor(max(IMAGES(:))/(max_res)) ; 
+Im = (IMAGES./norm_res);
+
+figure
+for k1=1:size(Im,3)
+I1=Im(:,:,k1);   
+subplot(3,5,k1);
+imshow(I1);
+end  
+%% read directory of contours
+current_dir=pwd;
+contour_dir=['dcom/',imset,'/ED',num2str(patient),'/contours/LV'];
+cd(contour_dir);
+dfile = dir('*.txt'); 
+numFiles = size(dfile,1);
+
+% load contours
+for k=1:numFiles
+    contours{k}=load (dfile(k,:).name);
+end
+cd(current_dir);
+
+% display images and contours
+for k=1:z_max
+    figure (1)
+    subplot(3,5,k)
+    % show image
+    I1=Im(:,:,k);
+    imagesc(I1);
+    colormap(gray);
+    hold on
+
+    % read contour
+    C1=contours{k};   
+    x1=floor(C1(:,1));
+    y1=floor(C1(:,2));
+    plot(x1,y1,'r');
+    
+    % creat segmentation mask
+    figure (2)
+    subplot(3,5,k)
+    % note that row==y and column==x
+    LV_seg(:,:,k)=accumarray([y1 x1],1,[y_max x_max]);    
+    imagesc(LV_seg(:,:,k));
+    colormap(gray)
+    title('segmnetation mask')
+end
+
+%% find edges of segmentation contours
+for k=1:size(Im,3)
+    figure(3);
+    subplot(3,5,k);
+    %Find edges in intensity image
+    edge_seg = edge(LV_seg(:,:,k)); 
+    imshow(Im(:,:,k) -2*edge_seg); 
+    title('edges')
+end
+%% show three dimensional patch
+    figure
+    phi = LV_seg(:,:,end:-1:1);
+    p3 = patch(isosurface(phi, 0),  'FaceColor','red', 'EdgeColor','none'); 
+    isonormals(phi,p3)
+    zlabel('z','FontSize',10,'FontWeight','bold'); 
+    box on ;  alpha(.6)
+    xrange = []; 
+    yrange = [];
+
+    axis([1 size(phi,2) 1 size(phi,1) 1 size(phi,3)]) 
+    set(gca,'YTick',yrange,'fontsize',8)
+    set(gca,'XTick',xrange,'fontsize',8)
+    set(gca,'ZTick',round(10:size(phi,3)/5:size(phi,3)), 'fontsize',8)
+    
+    hold on
+    colormap(gray); 
+    dimz=size(Im,3);
+    for k1=1:3:dimz
+    
+    Img2D_CrossSection =  Im(:,:,k1); 
+    xImage = [1 size(phi,2); 1 size(phi,2)]; %# The x data for the image corners
+    yImage = [1 1 ; size(phi,1), size(phi,1)]; %# The y data for the image corners
+    zImage = k1 * ones(2,2);   %# The z data for the image corners
+    surf(xImage,yImage,zImage,...    %# Plot the surface
+     'CData',Img2D_CrossSection ,...
+     'FaceColor','texturemap'); 
+    end    
+    % viewpoint spec: view(az,el)
+    view(-30,13)
+
+axis tight
+camlight
+camlight(-80,-10)
+lighting gouraud