% Define the directory containing your images imageDir = 'data/result_Zero_DCE++/ExDark_Gladnet'; % List all image files in the directory imageFiles = dir(fullfile(imageDir, '*.jpg')); % Update extension as needed % Initialize arrays to store results imageNames = cell(numel(imageFiles), 1); niqeScores = zeros(numel(imageFiles), 1); brisqueScores = zeros(numel(imageFiles), 1); piqeScores = zeros(numel(imageFiles), 1); InformationEntropy= zeros(numel(imageFiles), 1); edgeMeanIntensity= zeros(numel(imageFiles), 1); edgeStdIntensity= zeros(numel(imageFiles), 1); edgeDensity= zeros(numel(imageFiles), 1); cornerDensity= zeros(numel(imageFiles), 1); contrast= zeros(numel(imageFiles), 1); correlation= zeros(numel(imageFiles), 1); energy= zeros(numel(imageFiles), 1); homogeneity= zeros(numel(imageFiles), 1); % Loop through each image for i = 1:numel(imageFiles) % Read the image imagePath = fullfile(imageDir, imageFiles(i).name); img = imread(imagePath); % Convert image to grayscale if needed if size(img, 3) == 3 img = rgb2gray(img); end % Calculate NIQE score niqeScores(i) = niqe(img); % Calculate BRISQUE score brisqueScores(i) = brisque(img); % Calculate PIQE score piqeScores(i) = piqe(img); % Store the image name imageNames{i} = imageFiles(i).name; histogram = imhist(img); probability = histogram / sum(histogram); % Add a small constant to avoid zero probabilities epsilon = 1e-10; probability = probability + epsilon; InformationEntropy(i) = -sum(probability .* log2(probability)); % Calculate some basic edge features edges = edge(img, 'sobel'); edgeDensity(i) = sum(edges(:)) / numel(edges); edgeMeanIntensity(i) = mean(img(edges)); edgeStdIntensity(i) = std(double(img(edges))); % calculate corner density corners = detectHarrisFeatures(img); cornerDensity(i)= corners.Count/numel(img); % Create a GLCM matrix glcm = o, % Calculate texture features from GLCM contrast(i) = graycoprops(glcm, 'Contrast').Contrast; correlation(i) = graycoprops(glcm, 'Correlation'). Correlation; energy(i) = graycoprops(glcm, 'Energy').Energy; homogeneity(i) = graycoprops(glcm, 'Homogeneity'). Homogeneity; end % Create a table to store results resultsTable = table(imageNames, niqeScores, brisqueScores, piqeScores, InformationEntropy,edgeDensity, cornerDensity, edgeMeanIntensity, edgeStdIntensity, contrast, correlation, energy, homogeneity, 'VariableNames', {'ImageName', 'NIQEScore', 'BRISQUEScore', 'PIQEScore', 'InformationEntropy','edgeDensity','cornerDensity','edgeMeanIntensity', 'edgeStdIntensity', 'contrast', 'correlation', 'energy', 'homogeneity'}); % Write the table to an Excel file outputFileName = 'image_quality_scores.xlsx'; writetable(resultsTable, outputFileName); disp(['Image quality scores saved to ', outputFileName]);