gusucode.com > Diabetic retinopathy > jpeg_quality_score.m
function score = jpeg_quality_score(img) if (nargin > 1) score = -1; return; end [M N] = size(img); if (M < 16 | N < 16) score = -2; return; end x = double(img); % Feature Extraction: % 1. horizontal features d_h = x(:, 2:N) - x(:, 1:(N-1)); B_h = mean2(abs(d_h(:, 8:8:8*(floor(N/8)-1)))); A_h = (8*mean2(abs(d_h)) - B_h)/7; sig_h = sign(d_h); left_sig = sig_h(:, 1:(N-2)); right_sig = sig_h(:, 2:(N-1)); Z_h = mean2((left_sig.*right_sig)<0); % 2. vertical features d_v = x(2:M, :) - x(1:(M-1), :); B_v = mean2(abs(d_v(8:8:8*(floor(M/8)-1), :))); A_v = (8*mean2(abs(d_v)) - B_v)/7; sig_v = sign(d_v); up_sig = sig_v(1:(M-2), :); down_sig = sig_v(2:(M-1), :); Z_v = mean2((up_sig.*down_sig)<0); % 3. combined features B = (B_h + B_v)/2; A = (A_h + A_v)/2; Z = (Z_h + Z_v)/2; % Quality Prediction alpha = -245.8909; beta = 261.9373; gamma1 = -239.8886; gamma2 = 160.1664; gamma3 = 64.2859; score = alpha + beta*(B.^(gamma1/10000))*(A.^(gamma2/10000))*(Z.^(gamma3/10000));