2014-03-29 5 views
2

나는 더블 양자화 효과를 감지하기 위해 이미지의 양자화 된 DCT 계수에 대한 히스토그램을 원한다. 내가 hist (x)를 사용할 때 10으로 범주화하고 hist (x, 20) 또는 30으로 변경하면 DQ 효과가 실제로 나타나지 않습니다. 그래서 거기에 더 좋은 방법이 무엇입니까 ?? MATLAB에더블 Quantiztion 효과를 표시하려면 dct coefcient에 대한 히스토그램을 수행하는 방법은 무엇입니까?

im = jpeg_read('image'); 
% Pull image information - Lum, Cb, Cr 
lum = im.coef_arrays{im.comp_info(1).component_id}; 
cb = im.coef_arrays{im.comp_info(2).component_id}; 
cr = im.coef_arrays{im.comp_info(3).component_id}; 
% Pull quantization arrays 
lqtable = im.quant_tables{im.comp_info(1).quant_tbl_no}; 
cqtable = im.quant_tables{im.comp_info(2).quant_tbl_no}; 
% Quantize above two sets of information 
qcof = quantize(lum,lqtable); 
bqcof = quantize(cb,cqtable); 
rqcof = quantize(cr,cqtable); 
hist(qcof,30); %lum quantized dct coefficient histogram 

답변

1

첫째, 계수를 양자화 할 필요가 없습니다 : 여기에 코드입니다. 둘째, 특정 주파수의 히스토그램을 플로팅하여 효과를 관찰 할 수 있습니다. 블록의 다양한 위치를 거쳐 패턴을 찾아야합니다. 히스토그램의 FFT를 플롯하면 도움이됩니다.

imJPG2 = jpeg_read('foto2.jpg'); 
lum = imJPG2.coef_arrays{imJPG2.comp_info(1).component_id}; 
for i = 1:8 
    for j = 1:8 
     r = lum(i:8:end, j:8:end); 
     histogram(r(:), 'binmethod','integers'); 
     pause(); 
    end 
end 

자세한 내용과 배경은이 논문에서 찾을 수 있습니다 : http://www.sciencedirect.com/science/article/pii/S0031320309001198

다음

는 MATLAB 코드