clc clear all close all kode_dir = 'C:\Users\odin_\OneDrive\Documents\HVL- Byggenginør\6. semester\Bacheloroppgave\CT'; data_dir = "C:\Users\odin_\OneDrive\Documents\HVL- Byggenginør\6. semester\Bacheloroppgave\CT\CT scan av kuber"; %for å vise CT-bildene aktiver koden under: %vis_orginal() %fjern første '%' for å vise CT-bildene %vis_skarpere_bilder() %fjern første '%' for å vise de redigerte CT-bildene fil_skarp = last_inn('skarpe_bilder.mat'); skarp = fil_skarp.skarpe_bilder; sh = svart_hvit(skarp); %exportgraphics(fig(1),'barR02.tif') M60_x(:,:,:) = sh(1,1,50:end-68,52:end-58,13:173); M60_y(:,:,:) = sh(1,2,50:end-68,52:end-58,16:208); M90_x(:,:,:) = sh(3,1,52:end-62,50:end-67,18:175); M90_y(:,:,:) = sh(3,2,94:end-95,89:end-102,18:175); M60T_x(:,:,:) = sh(2,1,55:end-50,60:end-55,18:173); M90T_x(:,:,:) = sh(4,1,58:end-53,60:end-55,13:172); figure('Name','M60') data = smooth3(M60_x,'box',5); patch(isocaps(data,.5),... 'FaceColor','interp','EdgeColor','none'); p1 = patch(isosurface(data,.5),... 'FaceColor','blue','EdgeColor','none'); isonormals(data,p1); view(3); axis vis3d tight camlight left lighting gouraud set(gca,'XTick',[], 'YTick', [],'ZTick',[]) figure('Name','M90') data = smooth3(M90_x,'box',5); patch(isocaps(data,.5),... 'FaceColor','interp','EdgeColor','none'); p1 = patch(isosurface(data,.5),... 'FaceColor','blue','EdgeColor','none'); isonormals(data,p1); view(3); axis vis3d tight camlight left lighting gouraud set(gca,'XTick',[], 'YTick', [],'ZTick',[]) figure('Name','M60_T') data = smooth3(M60T_x,'box',5); patch(isocaps(data,.5),... 'FaceColor','interp','EdgeColor','none'); p1 = patch(isosurface(data,.5),... 'FaceColor','blue','EdgeColor','none'); isonormals(data,p1); view(3); axis vis3d tight camlight left lighting gouraud set(gca,'XTick',[], 'YTick', [],'ZTick',[]) figure('Name','M90_T') data = smooth3(M90T_x,'box',5); patch(isocaps(data,.5),... 'FaceColor','interp','EdgeColor','none'); p1 = patch(isosurface(data,.5),... 'FaceColor','blue','EdgeColor','none'); isonormals(data,p1); view(3); axis vis3d tight camlight left lighting gouraud set(gca,'XTick',[], 'YTick', [],'ZTick',[]) %finn luft % M60_x_v = length(find(M60_x))/(size(M60_x,1)*size(M60_x,2)*size(M60_x,3)); M60_y_v = length(find(M60_y))/(size(M60_y,1)*size(M60_y,2)*size(M60_y,3)); M90_x_v = length(find(M90_x))/(size(M90_x,1)*size(M90_x,2)*size(M90_x,3)); M90_y_v = length(find(M90_y))/(size(M90_y,1)*size(M90_y,2)*size(M90_y,3)); M60_v = mean([M60_x_v,M60_y_v])*100 M90_v = mean([M90_x_v,M90_y_v])*100 %finn gjennomsnittstørrelse luftbobler x = logical(M60_x); table_x = regionprops3(x,'Volume'); luft_x = table_x.Volume; M60_x_avg = mean(luft_x); y = logical(M60_y); table_y = regionprops3(y,'Volume'); luft_y = table_y.Volume; M60_y_avg = mean(luft_y); x = logical(M90_x); table_x = regionprops3(x,'Volume'); luft_x = table_x.Volume; M90_x_avg = mean(luft_x); y = logical(M90_y); table_y = regionprops3(y,'Volume'); luft_y = table_y.Volume; M90_y_avg = mean(luft_y); M60_v_avg = mean([M60_x_avg,M60_y_avg]); M90_v_avg = mean([M90_x_avg,M90_y_avg]); storrelse_luft_M90_i_forhold_til_M60 = round(M90_v_avg/M60_v_avg*100,2) %størrelse i 3 snitt for i = 1:3 x = logical(M60_x); table_x = regionprops(x(:,:,40*i),'Area'); luft_x = table_x.Area; M60_x_avg(i) = mean(luft_x); end M60_x_avg = mean(M60_x_avg); for i = 1:3 y = logical(M60_y); table_y = regionprops(y(:,:,40*i),'Area'); luft_y = table_y.Area; M60_y_avg(i) = mean(luft_y); end M60_y_avg = mean(M60_y_avg); for i = 1:3 x = logical(M90_x); table_x = regionprops(x(:,:,40*i),'Area'); luft_x = table_x.Area; M90_x_avg(i) = mean(luft_x); end M90_x_avg = mean(M90_x_avg); for i = 1:3 y = logical(M90_y); table_y = regionprops(y(:,:,40*i),'Area'); luft_y = table_y.Area; M90_y_avg(i) = mean(luft_y); end M90_y_avg = mean(M90_y_avg); M60_v_avg = mean([M60_x_avg,M60_y_avg]) M60_v_radius = (((100*100/(size(M60_x,1)*size(M60_x,2)))*M60_v_avg)/pi)^0.5 M90_v_avg = mean([M90_x_avg,M90_y_avg]) M90_v_radius = (((100*100/(size(M90_x,1)*size(M90_x,2)))*M90_v_avg)/pi)^0.5 %(1,1,47:end-68,52:end-58,13:173) %(1,2,50:end-68,52:end-58,16:208) %(3,1,52:end-62,50:end-67,18:175) %(3,2,94:end-95,89:end-102,18:175) function sh_bilder = svart_hvit(bilder) sh_bilder = ones(size(bilder)); sh_bilder(find(bilder)) = 0; end function skarpere(kode_dir) fil = last_inn('bilder.mat'); bilder = fil.bilder; tic fprintf("\nRedigerer bilder...\n") skarpe_bilder = zeros(size(bilder)); for i = 1:size(bilder,5) for j = 1:size(bilder,1) for k = 1:size(bilder,2) bilde(:,:) = bilder(j,k,:,:,i); justert_bilde = bilde./5000; kontrast_bilde = imadjust(justert_bilde,[0.37,0.7],[]); skarpe_bilder(j,k,:,:,i) = kontrast_bilde; end end end fprintf("\nBilder redigert:\n") toc tic fprintf("\nLagrer bilder...\n") cd (kode_dir) save('skarpe_bilder.mat','skarpe_bilder') fprintf("\nBilder lagret:\n") toc end function vis_skarpere_bilder() fil = last_inn('skarpe_bilder.mat'); bilder = fil.skarpe_bilder; bilder = svart_hvit(bilder); for i = 1:size(bilder,5) bilde1(:,:) = bilder(1,1,:,:,i); bilde2(:,:) = bilder(2,1,:,:,i); bilde3(:,:) = bilder(3,1,:,:,i); bilde4(:,:) = bilder(4,1,:,:,i); montage([bilde1,bilde3;bilde2,bilde4]) pause(0.1) end end function vis_orginal() fil = last_inn('bilder.mat'); bilder = fil.bilder; for i = 1:size(bilder,5) bilde1(:,:) = bilder(1,1,:,:,i); bilde2(:,:) = bilder(2,1,:,:,i); bilde3(:,:) = bilder(3,1,:,:,i); bilde4(:,:) = bilder(4,1,:,:,i); montage([bilde1,bilde3;bilde2,bilde4],'DisplayRange',[0 5000]) pause(0.1) end end function navn = finn_filer() filer = dir(); navn = []; for i = 3:length(filer) navn = [navn,string(filer(i).name)]; end end function fil = last_inn(filnavn) tic fprintf("\nLaster inn bilder...\n") fil = load(filnavn); fprintf("\nBilder lastet inn\n") toc end function les_filer(kode_dir,data_dir) cd (data_dir) scan = finn_filer(); bilder = []; %(2,2,x) for sca = 1:length(scan) scan_plassering = data_dir + "\" + scan(sca); cd (scan_plassering) retning = finn_filer(); for ret = 1:length(retning) snitt_plassering = scan_plassering + "\" + retning(ret); cd (snitt_plassering) snitt_navn = finn_filer(); snitt_navn = snitt_navn(1:end-1); for snitt = 1:length(snitt_navn) bilde(:,:) = dicomread(snitt_navn(snitt)); bilde = bilde./5000; bilder(sca,ret,:,:,snitt) = bilde; end end end cd (kode_dir) save('bilder.mat','bilder') end