Save Extracted Features (For Loop)
3 views (last 30 days)
Show older comments
HI, I have the below code to perform a DWT and then perform feature extractions. However, I'm having difficulty saving the extraction values into .xlsx format because every new entry gets overwritten, and the 1st column values and 2nd column 1st row values are wrong (scroll down to the last part for the xlsx result). Please advise how I can go about doing this as I'm very new to MATLAB. Thank you.
老cFile = dir('filepath');
for i = 1:length(srcFile)
filename = strcat('filepath',srcFile(i).name);
j = imread(filename);
[xar,xhr,xvr,xdr] = dwt2(j(:,:,1),'bior5.5');
[xag,xhg,xvg,xdg] = dwt2(j(:,:,1),'bior5.5');
[xab,xhb,xvb,xdb] = dwt2(j(:,:,1),'bior5.5');
xa(:,:,1) = xar ; xa(:,:,2) = xag ; xa(:,:,3) = xab;
xh(:,:,1) = xhr ; xh(:,:,2) = xhg ; xh(:,:,3) = xhb;
xv(:,:,1) = xvr ; xv(:,:,2) = xvg ; xv(:,:,3) = xvb;
xd(:,:,1) = xdr ; xd(:,:,2) = xdg ; xd(:,:,3) = xdb;
[xaar,xhhr,xvvr,xddr] = dwt2(xa(:,:,1),'bior5.5');
[xaag,xhhg,xvvg,xddg] = dwt2(xa(:,:,1),'bior5.5');
[xaab,xhhb,xvvb,xddb] = dwt2(xa(:,:,1),'bior5.5');
xaa(:,:,1) = xaar ; xaa(:,:,2) = xaag ; xaa(:,:,3) = xaab;
xhh(:,:,1) = xhhr ; xhh(:,:,2) = xhhg ; xhh(:,:,3) = xhhb;
xvv(:,:,1) = xvvr ; xvv(:,:,2) = xvvg ; xvv(:,:,3) = xvvb;
xdd(:,:,1) = xddr ; xdd(:,:,2) = xddg ; xdd(:,:,3) = xddb;
DWT_feat = [xaa,xhh,xvv,xdd];
gray = rgb2gray(DWT_feat);
glcm = graycomatrix(gray);
stats = graycoprops(glcm,'Contrast Correlation Energy Homogeneity');
Contrast = stats.Contrast;
Correlation = stats.Correlation;
Energy = stats.Energy;
Homogeneity = stats.Homogeneity;
Mean = mean2(DWT_feat);
StdDev = std2(DWT_feat);
Entropy = entropy(DWT_feat);
RMS = mean2(rms(DWT_feat));
Variance = mean2(var(double(DWT_feat)));
a = sum(double(DWT_feat(:)));
Smoothness = 1-(1/(1+a));
Kurtosis = kurtosis(double(DWT_feat(:)));
Skewness = skewness(double(DWT_feat(:)));
VariableNames = {'Contrast','Correlation', 'Energy', 'Homogeneity', 'Mean', 'StdDev', 'Entropy', 'RMS', 'Variance', 'Smoothness', 'Kurtosis', 'Skewness'};
T = table(Contrast(:), Correlation(:), Energy(:), Homogeneity(:), Mean(:), StdDev(:), Entropy(:), RMS(:), Variance(:), Smoothness(:), Kurtosis(:), Skewness(:));
AT = array2table(T,'VariableNames', {'Contrast','Correlation', 'Energy', 'Homogeneity', 'Mean', 'StdDev', 'Entropy', 'RMS', 'Variance', 'Smoothness', 'Kurtosis', 'Skewness'});
disp(AT);
xlswrite('savepath',AT,'Sheet1','A1');
end
Result (which is wrong):
A
T
Energy
Homogeneity
Mean
StdDev
Entropy
RMS
Variance
Smoothness
Kurtosis
Skewness
T
0.720361
0.3986
0.871775
24.72161
95.91721
1.395854
37.76407
4277.009
1
32.69805
5.19293
0 Comments
Answers (1)
图像分析
on 31 Jul 2021
You need to index the variables that you want to save a value for on every iteration. For example:
Entropy(i) = entropy(DWT_feat);
but it's better not to use i (the imaginary variable) as a loop counter, Use k instead.
Also, don't use built-in function names, like gray(), as a variable name. Use grayImage instead.
Next put in comments before you write the code, then write the code. Or at least put in comments AS you write the code. But to not have any comments at all would not fly in my company.
Finally, when you post code, you can highlight it and click the code icon. That will format it properly and allow us to copy the whole code with a single click so we can try it out on our computers.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!