确定JPEG图像的质量因子,需要与质量因子为50的标准量化表进行比较。代码中取待检测图像的量化表与标准表最接近的质量因子为确定的质量因子。
function qf = get_jpeg_qf(img_name)
jpeg_img = jpeg_read(img_name);
jpeg_table = jpeg_img.quant_tables{1};
s_table = [16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; ...
14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; ...
18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; ...
49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99];
x = mean(mean(jpeg_table./s_table));
if x>1
qf = round(50/x);
else
qf = round(50*(2-x));
end
end
该代码只返回JPEG图像灰度域的质量因子,色差域的质量因子可以使用相同的方法得到,区别为更换标准量化表。
function [qf1,qf2] = get_jpeg_qf_color(img_name)
jpeg_img = jpeg_read(img_name);
jpeg_table_l = jpeg_img.quant_tables{1};
s_table_l = [16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; ...
14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62;