Tải bản đầy đủ (.docx) (27 trang)

Nén video theo chuẩn ITUT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (916.01 KB, 27 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

──────── * ────────

BÁO CÁO
MÔN: TRUYỀN THÔNG ĐA PHƯƠNG TIỆN
ĐỀ TÀI: NÉN VIDEO THEO CHUẨN ITU-T
NHÓM 13
Sinh viên thực hiện:

Giảng viên hướng dẫn:

1.
2.
3.
4.

Giang Thanh Trường
Nguyễn Thị Hạnh
Nguyễn Trọng Anh
Trần Minh Nhật

20122645
20121661
20121220
20122201

PGS.TS Nguyễn Thị Hoàng Lan

Hà Nội, tháng 05 năm 2016




Mục lục


Danh mục hình ảnh


Lời nói đầu
Công nghệ thông tin ngày càng phát triển, truyền thông đa phương tiện là một
nhu cầu không thể thiếu. Trong truyền thông đa phương tiện, công nghệ nén video
là vô cùng quan trọng. Những video có dung lượng lớn muốn được truyền tải rộng
rãi qua mạng internet thì phải được nén. Tùy từng nhu cầu, mục đích cụ thể sẽ có
nhiều chuẩn nén video khác nhau.
Trong báo cáo này, chúng em sẽ trình bày về chuẩn nén video ITU (H.26x) và
so sánh chuẩn nén H.261 với MPEG-1.
Chúng em xin cảm ơn cô Nguyễn Thị Hoàng Lan đã giúp chúng em hoàn thành
báo cáo này.


CHƯƠNG 1
Tìm hiểu chung về các chuẩn nén ITU-T,
chuẩn H.26X (H.261, H.263, H.264)
I. Giới thiệu tổ chức ITU
ITU là Liên minh viễn thông quốc tế thuộc Liên hiệp quốc, được thành lập vào
năm 1865 (tiền thân là Liên minh Điện báo quốc tế - International Telegraph
Union).
Hoạt động của ITU bao trùm tất cả các vấn đề thuộc ngành Công nghệ viễn
thông và Thông tin như: tần số vô tuyến điện, quỹ đạo vệ tinh, hỗ trợ phát triển cơ
sở hạ tầng viễn thông tại các nước đang phát triển và xây dựng các tiêu chuẩn

chung trên thế giới về kết nối các hệ thống liên lạc. ITU cũng tham gia nghiên cứu
và tìm giải pháp cho các thách thức chung trên toàn cầu trong thời đại hiện nay như:
biến đổi khí hậu và bảo mật, an toàn thông tin.
ITU hoạt động trên 3 lĩnh vực chính:

- Telecom - Viễn thông
- Radio - Thông tin vô tuyến
- Telecommunications Development - Phát triển viễn thông
Chuẩn H.26x là chuẩn mã hóa và nén video được đưa ra trong các khuyến nghị
của ITU. Chuẩn nén video H.26x gồm có các chuẩn H.261, H.263, H.264, H.265.
Trong đó, chuẩn H.264 được biết đến là chuẩn MPEG – 4 Part 10/AVC (Advanced
Video Coding) do ITU – T hợp tác với ISO/ISE cùng phát triển. ITU tập trung vào
các ứng dụng với dòng video chuẩn H.26x như: H.261, H.263, H.264 và mới đây là
chuẩn H.265.

II. Tổng quan về chuẩn nén video H.261
1. Tổng quan

- Chuẩn H.261 là chuẩn nén video đầu tiên được ITU giới thiệu vào năm

-

1990, là một phần của bộ giao thức H.320 mô tả các thành phần khác nhau
của một hệ thống video conference, được thiết kế cho các ứng dụng video
telephony và video conference qua đường ISDN.
Chuẩn này ban đầu được thiết kế cho mạng ISDN với tốc độ truyền dữ liệu
là bội số của 64Kbit/s (p*64Kbit/s)
Thuật toán nén theo chuẩn H.261 giúp giảm độ dư thừa về không gian và
thời gian của chuỗi video để đạt được tỷ số nén cao.



- Trong chuẩn này, chuỗi video được định nghĩa theo 2 chuẩn định dạng là

-

CIF và QCIF. Trong đó: CIF là tiêu chuẩn cho kích thước video và hình ảnh
trong máy tính chứa 352x288 điểm ảnh (pixel). QCIF là tiêu chuẩn có độ
phân giải bằng ¼ tiêu chuẩn CIF 176x144 pixel.
Sử dụng kĩ thuật lấy mẫu 4:2:0 (trong chuẩn H.261 sử dụng hệ màu YUV, kĩ
thuật lấy mẫu này là lấy mẫu theo tỉ lệ giữa độ chói Y và 2 thành phần màu
còn lại).
Tốc độ frame tối đa là 30 fps nhưng cũng có thể được giảm xuống phụ thuộc
vào các ứng dụng và băng thông đường truyền khác nhau.

2. Kĩ thuật mã hóa trong chuẩn nén video H.261

- Dự đoán trước hình ảnh: nhằm loại bỏ việc lặp lại, giảm sự dư thừa thời
-

gian.
Biễn đổi mã: nhằm loại bỏ lặp lại, giảm sự dư thừa về không gian.
Bù lại các chuyển động: sử dụng các véc tơ chuyển động để bù lại các
chuyển động.

3. Cấu trúc phân cấp video trong chuẩn H.261

- Chuẩn H.261 tổ chức dữ liệu theo dòng frame, với 2 loại frame là I và P
frame:

Hình 1: Dòng frame theo chuẩn H.261


- Cấu trúc phân cấp trong mỗi frame:


Hình 2: Cấu trúc phân cấp trong từng frame theo chuẩn H.261

- Tùy theo tín hiệu đầu vào được định dạng theo CIF hay QCIF, nếu định dạng
theo định dạng CIF thì mỗi frame sẽ có 12 GOBs và theo định dang QCIF thì
mỗi frame có 3 GOBs.

Hình 3: Số GOB theo định dạng CIF

Hình 4: Số GOB theo định dạng QCIF

- Mỗi GOB gồm có 11 x 3 = 33 MB (Macro Block).


- Mỗi MB sẽ được tổ chức thành các Block, trong đó có 4 block Y có kích
thước 16x16 pixels, 1 block U có kích thước 8x8 pixels và 1 block V có kích
thước 8x8 pixels.

Hình 5: Cấu trúc Macro Block

4. Cấu trúc phân lớp dữ liệu video theo chuẩn H.261

Hình 6: Cấu trúc phân lớp dữ liệu video theo chuẩn H.261

- Picture-layer: gồm PSC (start of picture code - mã đầu của ảnh), TR (time
-


stamp reference - nhãn thời gian tham chiếu), picture type (I/P) và các GOB.
GOB layer: gồm GOB start (GOB start code - mã bắt đầu GOB), group
number (số nhóm), group quant (group quantization value - giá trị lượng tử)
và các MB.
MB layer: gồm MBA (macroblock address- địa chỉ macroblock), MTYPE
(intra/inter), MQUANT (quantizer), MVD (motion vector data- vecto chuyển
động), CBP (coded block pattern- mẫu block được mã hóa) và các Block.
Block- layer: gồm quét zig-zag với cặp hệ số (run, level), và kết thúc block
EOB.

5. Sơ đồ nén theo chuẩn H.261


Hình 7: Sơ đồ nén theo chuẩn H.261

5.1. Nén Intraframe (frame I)
Mã hóa frame đầu tiên (frame tham chiều) của chuỗi các frame của video, tương
tự như mã hóa ảnh JPEG.

Hình 8: Sơ đồ nén intraframe

Đặc điểm:

- Quá trình biến đổi DCT: từ các block có kích 8x8 pixel, qua phép biến
-

đổi cosin rời rạc để biến đổi tập giá trị từ miền không gian sang tập giá trị
trong miền tần số.
Quá trình lượng tử hóa: không giống như JPEG, chuẩn H.261 sử dụng
một bảng lượng tử hóa thống nhất cho tất cả các block.

Ma trận dữ liệu thu được sau quá trình lượng tử hóa được quét zig-zac
nhằm mục đích tăng hiệu quả quét do dữ liệu tập trung chủ yếu ở các
phần tử đầu tiên. Sau đó sử dụng phương pháp nén RLC, Huffman.


5.2. Nén Interframe
Nén Interframe nhằm mục đích giảm độ dư thừa thời gian giữa các frame trong
chuỗi video. Nén interframe là mã hóa sự sai khác giữa frame hiện tại và frame
tham chiếu. Với đầu vào là các frame đã được chia thành các MB, sử dụng hai kỹ
thuật:

- Kỹ thuật ước lượng chuyển động: nhằm mục đích tính ra vector chuyển
-

động, sử dụng frame tham chiếu (frame I) để tìm frame dự đoán (frame
P).
Kỹ thuật bù chuyển động: nhằm mục đích khôi phục lại ảnh sau nén.

6. Sơ đồ giải nén theo chuẩn H.261

Hình 9: Sơ đồ giải nén theo chuẩn H.261


CHƯƠNG 2
Phân tích, so sánh các sơ đồ nén video H.261
với video MPEG-1

Hình 10: Sơ đồ nén theo chuẩn H.261



Hình 11: Sơ đồ nén theo chuẩn MPEG-1

I. Giống nhau
Các phương pháp nén theo chuẩn MPEG và H.26x có nhiều điểm giống nhau.
Có thể kể ra một số điểm giống nhau cơ bản như:

- Sử dụng DCT để giảm thiểu độ dư thừa intraframe.
- Nén interframe dựa trên kỹ thuật ước lượng chuyển động và kỹ thuật bù
-

-

chuyển động.
Do mắt người có thể phân biệt sự thay đổi về độ sáng của ảnh (brightness)
tốt hơn so với sự thay đổi về màu (chromaticity) nên hầu hết các sơ đồ
nén theo chuẩn MPEG và H.26X đều tiến hành chia bức ảnh thành một
thành phần về độ sáng Y (luminance) và hai thành phần về độ màu UV
(chrominance).
Các tín hiệu video thành phần được lấy mẫu (samples) và số hoá (digitised)
để tạo nên các điểm ảnh rời rạc theo tỷ lệ 4:2:2, 4:2:0 và 4:1:1.
Các sơ đồ nén theo MPEG, H.26X đều dùng kỹ thuật subsampling và lượng
tử hoá trước khi mã hoá nhằm giảm kích thước bức ảnh đầu vào theo cả
chiều ngang và chiều dọc.
Đều tiến hành chia khung hình thành các khối điểm ảnh để việc xử lý các
khung hình có thể được thực hiện ở cấp độ block.
Giảm thời gian phụ thuộc giữa các khối trong các khung hình kế tiếp. Điều
này thực hiện bằng các kỹ thuật ước lương chuyển động và bù chuyển động.
Đối với bất kì khối nào, việc tìm kiếm được thực hiện trong các khung mã
hóa trước đó để xác định vector chuyển động mà sau đó được sử dụng bởi bộ
mã hóa và giải mã để dự đoán khối chủ đề.



- Giảm độ dư thừa không gian trong các khung hình video bằng cách mã hóa
-

một số khối gốc thông qua việc dự báo về không gian, lượng tử hóa, các
phép biến đổi và mã hóa dữ liệu ngẫu nhiên, mã hóa độ dài thay đổi.
Giảm không gian dư thừa còn lại tồn tại trong các khung hình video bằng
cách mã hóa các khối còn lại… tức là sự sai khác giữa các khối tương ứng
ban đầu và các khối dự đoán, một lần nữa thông qua biến đổi, lượng tử hóa
và mã hóa dữ liệu ngẫu nhiên.

II. Khác nhau
Điều khác biệt đầu tiên là trong sơ đồ nén của chuẩn nén video H.261 có sử
dụng bộ Control Coding (điều chỉnh lượng tử hóa, tốc độ bit)
1. Cấu trúc phân lớp dữ liệu
Chuẩn nén H.261 tổ chức dữ liệu theo dòng các frame, với hai loại frame là:
frame I và frame P, còn MPEG-1 sử dụng cả frame I, P, B.

Hình 12: Chuỗi frame theo chuẩn H.261


Hình 13: Chuỗi frame theo chuẩn MPEG-1

Trong mỗi frame của chuẩn H.261, dữ liệu được tổ chức thành các GOB (Group
Of Block) có kích thước giống nhau theo từng chuẩn định dạng. Mỗi frame của
chuẩn MPEG-1 được tổ chức thành các GOP (Group Of Picture) có kích thước có
thể không giống nhau.

Hình 14: Cấutr úc phân lớp dữ liệu theo chuẩn H.261



Hình 15: Cấu trúc phân lớp dữ liệu theo chuẩn MPEG-1

2. Định dạng video

- H.261 sử dụng 2 chuẩn định dạng CIF (352x288 pixels) và QCIF (176x144
-

pixels).
MPEG-1 sử dụng các chuẩn định dạng CIF, SIF (Source Input Format) và có
thể thiết lập độ phân giải lên đến 4095x4095 pixels.

3. Quá trình lượng tử hóa
Chuẩn H.261 sử dụng một bảng lượng tử hóa cho tất cả các block. Nhưng chuẩn
MPEG-1 sử dụng hai bảng lượng tử hóa khác nhau cho các block của intraframe và
các block của interframe.
4. Độ chính xác của kỹ thuật bù chuyển động
Độ chính xác của kỹ thuật bù chuyển động trong chuẩn nén video MPEG-1 lên
đến ½ pixel, còn chuẩn nén H.261 là 1 pixel.


CHƯƠNG 3
Xây dựng sơ đồ thuật toán nén ảnh video theo
chuẩn H.261

- Đầu vào: Video chuỗi các Frame
- Ảnh màu trong không gian RGB được biến đổi về hệ YUV (YCbCr).
- Tách chuỗi frame trên thành từng frame và qui ước cứ 4 frame là 1 nhóm
gồm: frame đầu tiên của nhóm là frame I, 3 frame còn lại là frame P.

- Nén Frame I (kỹ thuật nén intra frame):
Quá trình nén Frame I tương tự như nén ảnh Jpeg như sau:


-DCT
Trong khối ảnh 8x8
+ X(n1,n2) là giá trị mức xám tại vị trí [n1,n2] (trong vùng 8*8) và 0 <= X
<= 255
+ K là hệ số sau biến đổi DCT trong miền tần số
(1) DCT thuận
(2) DCT ngược

Mỗi khối 8x8, 64 điểm ảnh sau biến đổi DCT thuận sẽ nhận được 64 hệ số
thực DCT như sau:


- Lượng tử hóa

Chia các vị trí của bảng kết quá sau DCT cho vị trí tương ứng tại Q, làm tròn
đến số nguyên gần nhất
B(u,v) =

Ví dụ tại ví trí (0,0)
B(0,0)== 1089.1/16 = 68.06 => 68 (nếu 68.51 => 69) Khi lập trình thì viết hàm
floor(68.06+0.5)
Ta được bảng B là bảng lượng tử hóa
Tại vị trí có tần số thấp thì có hệ số đó là thành phần DC, các thành phần còn lại
tròn ma trận là thành phần AC.

- Đối với thành phần AC: Zig-Zag

Tác dụng của sắp xếp lại theo thứ tự ZigZag là tạo ra nhiều loại hệ số giống
nhau. Chúng ta biết rằng năng lượng của khối hệ số giảm dần từ góc trên bên
trái xuống góc dưới bên phải nên việc sắp xếp lại các hệ số theo thứ tự
ZigZag sẽ tạo điều kiện cho các hệ số xấp xỉ nhau (cùng mức lượng tử) nằm
trên một dòng. Mỗi khối ZigZag này được mã hóa theo phương pháp RLE.
Cuối mỗi khối đầu ra của RLE, ta đặt dấu kết thúc khối EOB (End Of Block).


Sau đó, các khối được dồn lại và mã hóa một lần bằng phương pháp mã
Huffman.

- Đối với thành phần DC: DPCM
Sử dụng mã hóa DPCM (diferrential pulse code modulation), do các thành phần
này có độ tương quan cao. Đây là phương pháp cơ sở của nén dữ liệu dựa trên
mã hóa dự đoán, thường được sử dụng đối với các tín hiệu lấy mẫu có độ tương
quan mạnh, có quan hệ lân cận giữa các mẫu…
Nguyên tắc: mã hóa sự sai khác giữa các mẫu (mẫu dự đoán theo thời điểm
trước và mẫu hiện tại) cho phép đạt được hiệu quả nén cao hơn nhiều mã hóa
từng mẫu riêng biệt.
Giá trị mẫu được giải mã dựa trên giải mã sự sai khác và giá trị dự đoán ở thời
điểm trước.

- Huffman
Thuật toán bao gồm 2 bước chính:
- Giai đoạn thứ nhất: tính tần suất của các ký tự trong dữ liệu gốc: duyệt tệp
gốc một cách tuần tự từ đầu đến cuối để xây dựng bảng mã. Tiếp sau đó là
sắp xếp lại bảng mã theo thứ tự tần suất giảm dần.
- Giai đoạn thứ hai: mã hóa: duyệt bảng tần suất từ cuối lên đầu để thực hiện
ghép 2 phần tử có tần suất xuất hiện thấp nhất thành một phần tử duy nhất.
Phần tử này có tần suất bằng tổng 2 tần suất thành phần. Tiến hành cập nhật

lại bảng và đương nhiên loại bỏ 2 phần tử đã xét. Quá trình được lặp lại cho
đến khi bảng chỉ có một phần tử. Quá trình này gọi là quá trình tạo cây mã
Huffman vì việc tập hợp được tiến hành nhờ một cây nhị phân 2 nhánh. Phần
tử có tần suất thấp ở bên phải, phần tử kia ở bên trái. Với cách tạo cây này, tất
cả các bit dữ liệu/ký tự là nút lá; các nút trong là các nút tổng hợp. Sau khi
cây đã tạo xong, người ta tiến hành gán mã cho các nút lá. Việc mã hóa rất
đơn giản: mỗi lần xuống bên phải ta thêm 1 bit “1” vào từ mã; mỗi lần xuống
bên trái ta thêm một bit “0”.


- Frame P (mục tiêu nén là nén vector chuyển động và sai số dự đoán)
Ước lượng chuyển động
Hầu hết các frame liên tiếp trong video tương tự với frame trước đó.Khi
nén tất cả các frame trong video theo cùng phương pháp sẽ dẫn đến dư thừa,
tốn tài nguyên. Để giảm thiểu sự dư thừa đó ta sử dụng kỹ thuật ước lượng và
bù chuyển động để nén frame P.

Sơ đồ nén Frame-P
Frame P được chia thành các MB kích thước 16x16. Mỗi 4 block Y và 1
block Cr, 1 block Cb. Các MB tạo thành ma trận Macroblock. Mỗi MB của
frame hiện tại sẽ được tìm kiếm trong vùng tìm kiếm của frame tham chiếu để
tìm ra MB có giá trị gần giống nhất, từ đó tính ra vector chuyển động. Sự sai
khác (kết quả phép trừ 2 Macroblock 6 thành phần YUV tương ứng 8x48) và
vector chuyển động được nén và truyền đi.


Vector chuyển động
Phương pháp tìm vector chuyển động dừa vào tiêu chí đánh giá Mean
Absolute Error (MAE) và tiêu chí tìm kiếm theo giải thuật Three Step Search:
Tính toán Mean Absolute Error (MAE)


Trong đó:
+ (x, y): vị trí của Macroblock có kích thước (NxN) cần tìm kiếm trong
ma trận MB
+ C: Macroblock của frame hiện tại
+ R: Macroblock của frame tham chiếu
+ (i, j): vector chuyển động tương ứng với từng cặp C,R

Giải thuật Three Step Search


 B1: Xác định kích thước bước dịch chuyển ban đầu (4). Tạo 9 vị
trí trong cửa sổ tìm kiếm. Tính toán MAE tương ứng với mỗi
điểm. Trung tâm của vùng tìm kiếm được chuyển đến vị trí có
MAE nhỏ nhất.
 B2: Trung tâm của vùng tìm kiếm được chuyển đến vị trí có
MAE nhỏ nhất. Giảm kích thước bước dịch chuyển (2). Tạo 8 vị
trí trong của sổ tìm kiếm. Và thực hiện các bước tính toán MAE
 B3: Lặp lại bước 2.
KQ: Vector cần tìm là vector nối vị trí ban đầu của MB frame hiện tại
và điểm có MAE nhỏ nhất của kết quả bước 3.

MB Layer
MBA MTYPE MQUANT MVD CBP B0

B1

B2

B3


B4

B5

Phân lớp dữ liệu MB layer:
-

MBA: macroblock address - địa chỉ macroblock
MTYPE: intra/inter
MQUANT: quantizer
MVD: motion vector data - vecto chuyển động
CBP: coded block pattern - mẫu block được mã hóa
B0..B5: Các Block

Vector chuyển động và sự sai khác (kết quả phép trừ 2 Macroblock, 6
block YUV tương ứng 8x48) được nén và truyền theo phân lớp dữ liệu.
- Đầu ra: dòng bit đã mã hóa (frame I đã nén, vector chuyển động đã
mã hóa, sai số dự đoán đã mã hóa).


CHƯƠNG 5
Cài đặt thử nghiệm thuật toán nén H.261, đo
lượng hiệu năng giải pháp nén này
1. Cài đặt thử nghiệm
Đầu vào:
Biến fileName = 'sampleQCIF.yuv'; là video đầu vào
width = 176;
height = 144;
width và height là kích thước của định dạng theo định dạng QCIF.

số frame trong video là nFrame=20;
- Chuyển đổi ảnh màu sang hệ màu YUV bằng cách sử dụng hàm
reshape(frame(1:kích thước của frame, chiều dài frame, chiều rộng frame) và
với kỹ thuật lấy mẫu 4:2:0.
sử dụng vòng lặp for với tham số iFrame thuộc khoảng [1, nFrame]. Trong
vòng lặp tiến hành chuyển đổi hệ màu, với thành phần Y thì sử dụng
frame(1:width*height),
thành
phần
U
thì
sử
dụng
frame(width*height+1:1.25*width*height), chiều dài và rộng đều chia 2.
Tương tự với thành phần U là thành phần V, nhưng sử dụng
frame(1.25*width*height+1:1.5*width*height). Ta được các thành phần
yImage, uImage và vImage
- Đọc các frame, gọi hàm yuvRead, tiến hành đọc theo các thành phần YUV,
sử dụng hàm unit8 với tham số là yImage, uImage và vImage.
Ta thu được các y,v, u
- Chọn nhóm frame-distanceI=4 (theo qui ước là 4 frame thành 1 nhóm,
frame đầu tiên của nhóm là frame I, 3 thành phần còn lại là frame P). Để tìm
được frame I và frame P như đã qui ước thì:
tiến hành vòng lặp for với tham số iFrame từ 1 đến nFrame. Như vậy
mod(iFrame, distanceI) == 1 thì frame đó là frame I và các frame còn lại
frame P. Sau đó tiến hành nén từng frame.
- Nén frame I
sử dụng hàm jpegencode. Hàm jpegencode được xây dựng như sau:
+ DCT
t=dctmtx(8); là ma trận DCT kích thước 8*8 có sẵn

Để tính được ma trận DCT của frame I, sử dụng hàm blkproc với tham số x là
frame I, t, P1*x*P2. Tính được ma trận y
+ Lượng tử hóa


ma trận m là ma trận lượng tử hóa mặc định.
sử dụng hàm blkproc với tham số y đã tính ở trên, m, round(x./P1) tính được
ma trận y đã được lượng tử hóa là ma trận yy.
+ Mã hóa Huffman
Gọi hàm huffencode với tham số là ảnh đã được lượng tử hóa ở trên. Kết quả
thu được frame I đã nén.
Để lấy frame tham chiếu ta thực hiện giải mã huffman với frame I đã nén. Ở
đây sử dụng hàm huffdecode.
- Nén frame P (nén vector chuyển động và sai số ước lượng)
+ Nén vector chuyển động
Ước lượng vector chuyển động sử dụng thuật toán Three Step Search Với đầu
vào là imP là ảnh ta muốn tìm các vector chuyển động tương ứng với mỗi
macroblock có kích thước là mbSize, ta cần tìm ma trận các vector ứng với
từng macroblock có góc trên bên trái là (x,y). Vị trí tương ứng trên vector
tham chiếu là (x1,y1) vectors = zeros(2,row*col/mbSize^2); Ta sử dụng mảng
các vectors để lưu các vector chuyển động(dx,dy)
trong đó:
+ stepSize ban đầu được gán bằng 4
+ vectors[1,i] lưu giá trị dx vector chuyển động của macroblock có thứ tự i
+ vectors[2,i] lưu giá trị dy vector chuyển động của macroblock có thứ tự i
costs = ones(3, 3) Ma trận 3x3 lưu giá trị tính MAD tương ứng với các điểm
tìm kiếm tương ứng từng bước nhảy. Sau khi tìm được giá trị nhỏ nhất trong
ma trận costs(3x3)tại vị trí (a,b) Ta tìm được
x1 = x1 + (a-2)*stepSize;
y1 = y1 + (b-2)*stepSize;

stepSize = stepSize / 2;
Sau 3 lần thực hiện stepSize = 1. Ta tính được vector chuyển động (dx,dy):
(x-x1, y-y1)
Để nén vector chuyển động, sử dụng hàm huffencode.
+ Nén sai số ước lượng
Từ vector chuyển động đã tính được với frame tham chiếu, sử dụng hàm
motionComp để tính curFrame là frame dự đoán. Được tính như sau:
imgComp từ frame tham chiếu ImgI, ma trận vectors.
imgComp imgComp refBlkVer = i + dy;
refBlkHor = j + dx;
imageComp(i:i+mbSize-1,j:j+mbSize-1)
=
imgI(refBlkVer:refBlkVer+mbSize-1, refBlkHor:refBlkHor+mbSize-1);
Trong đó i: [1..row-mbSize] j: [1..row-mbSize] (dx,dy): vector chuyển động
sai số dự đoán difFrame được tính là sự sai khác của frame I và curFrame
Nén sai số dự đoán difFrame tương tự với nén frame I, sử dụng hàm
jpegencode.
Vậy thu được cả vector chuyển động và sai số dự đoán đã mã hóa.


2. Đo lượng hiệu năng
Do chưa làm được xuất ra file đã nén nên nhóm em chưa thể đánh giá được
hiệu năng.


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×