你好,我需要對圖像的dct cofficents進行量化,對於matlab中8×8像素的塊大小 。你能幫助我的語法,謝謝。在matlab中量化dct cofficents
2
A
回答
1
在MATLAB中有一個用於DCT的內置函數。
您需要信號處理工具箱。在MATLAB命令中輸入'ver'(不帶引號)來查看是否有。
代碼:
image = image; % define your image
[m,n] = size(image); % get size of your image
imvector = reshape(image, m*n, 1); % reshape your image to a vector to compute DCT
imdct = dct(imvector); % compute DCT
imagedct = reshape(imdct,m,n); \ reshape result back to original form of your image
1
有在幫助文件中的一個例子,以及這是非常好的:
I = imread('cameraman.tif');
I = im2double(I);
T = dctmtx(8);
dct = @(block_struct) T * block_struct.data * T';
B = blockproc(I,[8 8],dct);
mask = [1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2 = blockproc(B,[8 8],@(block_struct) mask .* block_struct.data);
invdct = @(block_struct) T' * block_struct.data * T;
I2 = blockproc(B2,[8 8],invdct);
imshow(I), figure, imshow(I2)
0
量化DCT係數,您只需通過一個量化項將每個係數並整數到整數。量化項對於每個係數通常是唯一的,並且存儲在量化矩陣中。
Wikipedia has a nice example.以下是如何在Matlab中實現該示例。
coef = [
-415 -33 -58 35 58 -51 -15 -12;
5 -34 49 18 27 1 -5 3;
-46 14 80 -35 -50 19 7 -18;
-53 21 34 -20 2 34 36 12;
9 -2 9 -5 -32 -15 45 37;
-8 15 -16 7 -8 11 4 7;
19 -28 -2 -26 -2 7 -44 -21;
18 25 -12 -44 35 48 -37 -3
];
quant = [
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
];
quantCoef = round(coef ./ quant)
quantCoef =
-26 -3 -6 2 2 -1 0 0
0 -3 4 1 1 0 0 0
-3 1 5 -1 -1 0 0 0
-4 1 2 -1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
相關問題
- 1. DCT係數的範圍MATLAB
- 2. Matlab中的DCT濾波器圖像
- 3. 在MATLAB中的向量化
- 4. MATLAB:在MATLAB中矢量化for循環
- 5. 向量化在MATLAB
- 6. 圖像和matlab和DCT變換和jpeg
- 7. 向量化Matlab中的disparityMap
- 8. 如何在矢量化MATLAB
- 9. 向量化獲得在MATLAB
- 10. 如何向量化在Matlab
- 11. 如何向量化在Matlab
- 12. 在matlab中可視化3D數據量
- 13. 在MATLAB中變量的變化?
- 14. 如何在MATLAB中向量化代碼
- 15. 在Matlab中向量化範圍檢查
- 16. Matlab:在一步中矢量化轉置?
- 17. 在matlab中矢量化3D運算
- 18. 如何在matlab中「矢量化」corrcoeff?
- 19. 在MATLAB中向量化循環
- 20. 在MATLAB中向量化代碼
- 21. 在Matlab中向量化double循環
- 22. 在Matlab中向量化代碼
- 23. 如何在Matlab中矢量化循環?
- 24. 如何在Matlab中進行矢量化?
- 25. 在Matlab中矢量化代碼
- 26. 'for'loop vs在MATLAB中的矢量化
- 27. 使用libJPEG獲取DCT係數和量化值
- 28. 可視化DCT係數作爲圖像
- 29. 錯誤的DCT與MKL DCT功能
- 30. 使用向量化在Matlab中優化嵌套for循環使用向量化