Repository navigation
Expand file tree
/
Copy pathcreateVisualOutput.m
More file actions
69 lines (53 loc) · 3.2 KB
/
Copy pathcreateVisualOutput.m
File metadata and controls
69 lines (53 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
function [ visualOutput ] = createVisualOutput(ImageProperties, Bloblist, petAboveThreshold, ctBoneMask, outputFolder)
% Creates Visual Output and stores it in folder
try
localSettings
catch
FontSize = 30;
end
%Create MIP in coronal viewing plane
petMIP = flipdim(squeeze(max(petAboveThreshold, [], 2))',1);
ctBoneMaskMIP = flipdim(squeeze(max(ctBoneMask, [], 2))',1);
%Resize masks
petMIP = round(imresize(petMIP, [650 480]));
ctBoneMaskMIP = round(imresize(ctBoneMaskMIP, [650 480]));
%Convert to logical and invert images
petMIP = logical(petMIP);
ctBoneMaskMIP = logical(ctBoneMaskMIP);
%Create Transparency Masks
transparencyMaskPET = petMIP;
transparencyMaskBone = ctBoneMaskMIP;
%Load Template image
visualOutput = imread('TemplatePSMAAnaylsisOutput.jpg');
%Place MIPs on template, second argument multiplies by scaling factor:
% 0 --> black, 190 --> gray
visualOutput = placeRGBImage(visualOutput, ctBoneMaskMIP.*0, 20, 250, transparencyMaskBone);
visualOutput = placeRGBImage(visualOutput, ctBoneMaskMIP.*190, 440, 250, transparencyMaskBone);
visualOutput = placeRGBImage(visualOutput, petMIP.*0, 440, 250, transparencyMaskPET);
currentpatientID = ImageProperties(length(ImageProperties)).PatientID;
currentDateString = datestr(datetime('now'));
currentBoneVolume = num2str(ImageProperties(length(ImageProperties)).BoneVolume,5)
currentPetPosVol = num2str(ImageProperties(length(ImageProperties)).petPosVolume,5)
currentPercentPetPos = num2str(ImageProperties(length(ImageProperties)).percentPetPos * 100 ,2)
currentMeanSUV = num2str(ImageProperties(length(ImageProperties)).MeanSUVPETposBone,2)
currentZ_MeanSUV = num2str(ImageProperties(length(ImageProperties)).Z_MeanSUV,3)
currentMaxSUV = num2str(ImageProperties(length(ImageProperties)).SUVHottesBonetVoxel,3)
currentSUVThreshold = num2str(ImageProperties(length(ImageProperties)).SUVThreshold,2)
currentHUThreshold = num2str(ImageProperties(length(ImageProperties)).HUThreshold,3)
visualOutput = AddTextToImage(visualOutput, currentpatientID, [110 270], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentDateString(1:end-9), [162 270], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentSUVThreshold, [110 1070], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentHUThreshold, [162 1070], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentBoneVolume, [1025 420], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentPetPosVol, [1078 420], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentPercentPetPos, [1131 420], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentMeanSUV, [1184 500], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentZ_MeanSUV, [1237 630], [0 0 0], 'Arial', FontSize);
visualOutput = AddTextToImage(visualOutput, currentMaxSUV, [1290 500], [0 0 0], 'Arial', FontSize);
if ~isempty(Bloblist)
visualOutput = AddTextToImage(visualOutput, num2str(length(Bloblist)), [1343 450], [0 0 0], 'Arial', FontSize);
end
newFigure = figure;
imshow(visualOutput);
imwrite(visualOutput, [outputFolder currentpatientID '.jpg']);
end