--- a +++ b/Image features calculation code/Working/shape features/shapeFeatures.m @@ -0,0 +1,80 @@ +function shapeFeatures( allImages,saveFileLocation ) +%shapeFeatures calculates all shape features for images and saves them in a +%file. +% param allImages +% structure array provided by one of the segmentation algorithms + + + %% Pre-processing + + %base feature labels + baseLabels = fieldnames(calcShapeFeatures2D( ... + allImages(1).masks{1})).'; + + %array of unwanted values + unwantedValues = {'Centroid','ConvexHull','ConvexImage'}; + + %set up save file +% saveFileLocation = ['C:\Users\PSTEIN4\Desktop\matlab-code-summer-' ... +% 'research-2013\Image features calculation code\Working\Combined' ... +% ' Features\']; + + %seg type + segType = allImages(1).segmentationType; + + %concat segmentation type onto file name + saveFileLocation = sprintf('%s%s%s',saveFileLocation,... + segType,'_nodules_shape_features.txt'); + + %set the location of output csv file + fid1 = fopen(saveFileLocation, 'w+'); + + %size of segmentation array + numSegs = size(allImages(1).masks,2); + + %size of images + imageTotal = size(allImages,2); + + %produce labels for segmentation + createLabels(baseLabels,unwantedValues,numSegs,fid1,segType); + + %% generate shape/size features for each segmentation + for i = 1:imageTotal + + imageArray = allImages(i).masks; + + for x = 1:numSegs + + %get the image + I = imageArray{x}; + + %Calculate shape/size features + STATS = calcShapeFeatures2D(I); + + %get the labels + labels = fieldnames(STATS); + + %save members of STATS structure + for j = 1:numel(labels) + %extract a field name from STATS + fieldName = labels{j}; + %if the field name is not a member of the unwanted values + if (~ismember(fieldName,unwantedValues)) + fprintf(fid1,'%f,',STATS.(fieldName) ); + end + end + end + + %add a newline and the image name + fprintf(fid1, '%s\n', allImages(i).imageName); + + end + + %% wrap up + %PFS 1:55 6/25/2013 + %Close the file which shape/size features are being saved in + fclose(fid1); + + +end +