1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nén ảnh video theo chuẩn MPEG

21 915 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 1,25 MB

Nội dung

 Bước 4: Ma trận đã được lượng tử hóa được lượng tử hóa ngược, DCTngược lưu vào bộ đệm chứa frame tham chiếu, sau đó quay lại bước 1..  Bước 10: Nếu frame vào là P thì thực hiện bước 1

Trang 1

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

ĐỀ TÀI 12: NÉN ẢNH VIDEO THEO CHUẨN MPEG

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU 1

I KHÁI QUÁT CHUẨN NÉN VIDEO MPEG 2

II PHÂN TÍCH SƠ ĐỒ NÉN ẢNH VIDEO THEO CHUẨN MPEG-1 3

2.1 Sơ đồ nén gồm 3 khối chính trong MPEG1 3

2.2 Phân tích sơ đồ nén 3

2.3 Chức năng của các khối 4

III SƠ ĐỒ THUẬT TOÁN NÉN VIDEO THEO CHUẨN MPEG-1 5

3.1 Cấu trúc dữ liệu 5

3.2 Tiền xử lý trước khi bước vào quá trình nén 5

3.3 Xây dựng thuật toán nén MPEG-1 6

3.3.1 Quá trình lấy mẫu 4:2:0: 6

3.3.2 Quá trình biến đổi Discrete Cosine Transforms 6

3.3.3 Thiết kế thuật toán DCT 7

3.3.4 Quá trình Lượng tử hóa: 7

3.3.5 Quá trình lượng tử hóa ngược Q−1 8

3.3.6 Quá trình IDCT 8

3.3.7 Quá trình đánh giá chuyển động 8

3.3.8 Quá trình bù chuyển động 9

3.3.9 Mã hóa entropy 11

IV CÀI ĐẶT THỬ NGHIỆM GIẢI PHÁP NÉN ẢNH VIDEO MPEG-1 16

KẾT LUẬN 17

TÀI LIỆU THAM KHẢO 18

Trang 3

DANH MỤC BẢNG BIỂU, HÌNH ẢNH

Bảng 3.1: Bảng mã Huffman cho thành phần DC 12

Bảng 3.2: Bảng mã Huffman cho sai khác hệ số độ chói DC 13

Bảng 3.3: Bảng mã Huffman cho sai khác hệ số màu DC 13

Bảng 3 4: Bảng Huffman 14

Hình 1.1:Các loại Frame trong nén ảnh video theo chuẩn MPEG Hình 2.1: Sơ đồ nén ảnh video theo chuẩn MPEG-1 Hình 3.1: Cấu trúc dữ liệu trong quá trình nén video theo chuẩn MPEG-1 5

Hình 3.2: Thứ tự frame hiển thị và mã hóa 5

Hình 3.3: Cấu trúc lấy mẫu 4:2:0 6

Hình 3.4: Bảng lượng tử hóa 7

Hình 3.5: Cửa sổ tìm kiếm của 1 khối macroblock 16 pixel với tham số tìm kiếm là 7 pixel 9

Hình 3.6: Ước lượng chuyển động và bù chuyển động 10

Hình 3.7: Tính sự sai khác 1 Hình 4.1: Chương trình mình họa 16

Trang 4

LỜI MỞ ĐẦU

Với đề tài: “NÉN ẢNH VIDEO THEO CHUẨN MPEG”, chúng em trình bàybáo cáo với những nội dung sau:

I Khái quát chuẩn nén video MPEG

II Phân tích sơ đồ nén MPEG-1

III Xây dựng sơ đồ thuật toán theo chuẩn MPEG-1

IV.Cài đặt thử nghiệm giải pháp nén video MPEG-1

Do thời gian hoàn thành báo cáo khá ngắn, kiến thức của chúng em về các vấn

đề liên quan đến MPEG-1 còn nhiều hạn chế nên không tránh được những thiếu sót.Chúng em mong cô chỉ dẫn để có báo cáo chính xác và hoàn thiện hơn

Nhóm xin chân thành cảm ơn!

Trang 5

I KHÁI QUÁT CHUẨN NÉN VIDEO MPEG.

MPEG(motion picture experts group) là một nhóm các chuyên gia về hình ảnhđược thành lập từ tháng 2 năm 1998 với nhiệm vụ xây dựng tiêu chuẩn cho tín hiệuAudio và Video số Ngày nay, MPEG đã trở thành một kỹ thuật nén Audio vàVideo phổ biến nhất vì nó không chỉ là một tiêu chuẩn riêng biệt mà tùy thuộc vàotừng yêu cầu cụ thể của thiết bị sẽ có một tiêu chuẩn thích hợp nhưng vẫn trênnguyên lý thống nhất

Các thế hệ của chuẩn MPEG:

 MPEG 1 là thế hệ lưu trữ và phục hồi ảnh động và Audio trong lưu trữMedia MPEG-1 có thể nén tín hiêu video tới 1.5 Mbps với chất lượngVHS và âm thanh lập thể (stereo audio) với tốc độ 192 bps Được dùng

để lưu trữ video và âm thanh trên CD-ROM

 MPEG 2 là thế hệ cho TV số

tiêu chuẩn cho nén ảnh kỹ thuật truyền hình số, các ứng dụng về đồ họa

và video tương tác hai chiều (Games, Video conferencing) và các ứngdụng Multimedia tương tác hai chiều (world wide web hoặc các ứngdụng nhằm phân phát dữ liệu video như truyền hình cáp, internetvideo…) MPEG-4 đã trở thành một tiêu chuẩn công nghệ trong quátrình sản xuất, phân phố và truy cập vào các hệ thống video Nó đã gópphần giải quyết vấn đề dung lượng cho các thiết bị lưu trữ, giải quyếtvấn đề về băng thông của đường truyền tín hiệu video hoặc kết hợp cảhai vấn đề trên

 MPEG 7 chứa đặc tả thông tin, giao diện cho việc tìm kiếm thông tin

Quy định hệ màu trong MPEG: Hệ màu chuẩn sử dụng là hệ màu YUV vàYCbCr:

chói (Y) và hai thành phần màu (U, V)

thành phần Y được chú ý: vì mắt người nhạy với độ sáng hơn là màusáng thành phần ( Cb, Cr )

Frame: MPEG có 3 loại Frame:

 Frame I: là frame đầu tiên của chuỗi video, mã hóa JPEG

 Frame P: frame được dự đoán tiếp theo

 Frame B: frame được dự đoán nội suy 2 chiều

Hình 1.1:Các loại Frame trong nén ảnh video theo chuẩn MPEG.

Trang 6

II PHÂN TÍCH SƠ ĐỒ NÉN ẢNH VIDEO THEO CHUẨN MPEG-1.

Hình 2.1: Sơ đồ nén ảnh video theo chuẩn MPEG-1.

II.1 Sơ đồ nén gồm 3 khối chính trong MPEG1

 Khối lượng tử hóa & lượng tử hóa ngược

 Khối dự đoán, bù chuyển động

II.2 Phân tích sơ đồ nén

 Bước 1: Kiểm tra frame vào, nếu frame vào là frame I thực hiện tiếp tớibước 4, nếu frame vào là frame B hoặc P thì thực hiện từ bước 5, nếu hếtframe thì kết thúc

 Bước 2: Frame sẽ được lấy mẫu, DCT, lượng tử hóa ra ma trận đã đượclượng tử hóa

 Bước 3: Ma trận đã được lượng tử hóa sẽ được mã hóa theo mãHuffman tạo chuỗi bit

 Bước 4: Ma trận đã được lượng tử hóa được lượng tử hóa ngược, DCTngược lưu vào bộ đệm chứa frame tham chiếu, sau đó quay lại bước 1

 Bước 5: Đánh giá chuyển động giữa frame vào và frame tham chiếu tìm

ra vector chuyển động Vector chuyển động được đưa ra mã hóaentropy

frame tham chiếu ta sẽ xây dựng lên frame dự đoán cho frame đầu vào

 Bước 7: Frame vào trừ đi frame dự đoán tìm được ra một ma trận chứacác giá trị sai khác giữa 2 frame

 Bước 8: Ma trận sai khác sẽ được DCT, lượng tử hóa ra một ma trận saikhác đã lượng tử hóa

 Bước 9: Ma trận sai khác đã lượng tử hóa sẽ được mã hóa entropy thànhcác chuỗi bit

Trang 7

 Bước 10: Nếu frame vào là P thì thực hiện bước 11, nếu là frame B thìquay lại bước 1 luôn

 Bước 11: Ma trận sai khác đã lượng tử hóa được lượng tử hóa ngược vàDCT ngược thu lại ma trận các sai khác Ma trận các sai khác sẽ cộngvới ma trận giá trị điểm ảnh của frame tham chiếu thu được frame đầuvào lưu vào bộ đệm chứa các frame tham chiếu, sau đó quay trở lại bước1

II.3 Chức năng của các khối

 Khối DCT thực hiện phép biến đổi Cosin rời rạc đối với đối tượng là sựsai khác giữa frame hiện tại và frame được dự đoán (đối với frame I,DCT thực hiện biến đổi ngay trên các khối điểm ảnh của frame) IDCTthực hiện phép biến đổi Cosin ngược, phục hồi lại sự sai khác đã được

mã hóa, sử dụng cho quá trình dự đoán bù chuyển động

 Lượng tử hóa: rời rạc hóa tín hiệu theo các bước lượng tử, ở đây là rờirạc hóa các giá trị của khối điểm ảnh đã qua biến đổi DCT

 Khối dự đoán chuyển động: thực hiện tìm vector chuyển động của khốiđiểm ảnh dựa theo frame hiện tại và frame tham chiếu(frame được dựđoán trước nó) Vector chuyển động cũng sẽ được mã hóa và truyền đi

vector chuyển động và frame tham chiếu của nó Từ frame dự đoán vàframe hiện tại, ta lấy được thông tin về sự sai khác, thông tin này đượcđưa đến bộ mã hóa DCT

tưởng của giải thuật là khi một MB (đã qua biến đổi DCT) không thayđổi trong 2 frame liên tiếp thì frame sau không cần phải truyền đi MB

đó Có 3 loại mã hóa Macroblock(MB) khác nhau:

chuyển động bằng 0, không có thông tin nào cần truyền đi

 Inter MB: khi dự đoán bù chuyển động từ các frame trước đó được

sử dụng Khi đó cần truyền đi: kiểu mã hóa MB, địa chỉ của MB,vector chuyển động, các hệ số của DCT, bước lượng tử hóa

 Intra MB: khi không dự đoán từ các frame trước đó (frame I), chỉcần truyền đi: kiểu mã hóa MB, địa chỉ MB, các hệ số DCT, bướclượng tử hóa được truyền đi

Trang 8

III SƠ ĐỒ THUẬT TOÁN NÉN VIDEO THEO CHUẨN MPEG-1.

III.1 Cấu trúc dữ liệu.

Đầu tiên mỗi frame gồm mảng các slice, có loại frame, chiều dài và chiều rộng.Mỗi slice gồm mảng các Macroblock, có số thứ tự slice.Mỗi Macroblock gồmmảng 6 phần tử, mỗi phần tử là 1 ma trận 8x8, có giá trị x,y là tọa độ của điểm đầutiên của Macroblock trong frame Trong đó có 4 ma trận lưu trữ giá trị độ chói Y và

2 ma trận lưu trữ giá trị màu Cr,Cb, do quá trình lấy mẫu 4:2:0 của MPEG-1

Hình 3.1: Cấu trúc dữ liệu trong quá trình nén video theo chuẩn MPEG-1.

III.2 Tiền xử lý trước khi bước vào quá trình nén

Đầu vào là 1 chuỗi các frame từ camera

Đầu ra là 1 video dưới chuẩn MPEG-1

Chuỗi các frame đầu vào và chuỗi các frame xử lý

Hình 3.2: Thứ tự frame hiển thị và mã hóa.

Trang 9

Ta sử dụng mảng để lưu các frame theo thứ tự mã hóa và truyền.

Trong MPEG-1, mỗi video là một chuỗi bức ảnh, mỗi bức ảnh coi là một mảng

2 chiều các điểm, màu sắc mỗi điểm gồm 3 thành phần: Y, Cb, Cr

Bức ảnh khi được chụp khi biểu diễn trên màn hình chứa các điểm thuộc khônggian màu RGB Vì vậy trong MPEG-1 phải chuyển không gian màu RGB ->YCbCr trước khi xử lý

Mắt người nhạy nhất với thành phần Y (độ sáng) và kém nhạy với Cb, Cr (màusắc) nên Y được nén với độ phân giải không đổi còn Cb, Cr giảm chiều ngang, dọc

đi một nửa (gọi là cấu trúc lấy mẫu 4:2:0)

Mỗi frame được chia làm các slice: là một hàng các macroblock từ trái qua phải.Mỗi macroblock là một khối điểm ảnh, kích thước 16x16

Các macroblock có thể chia tiếp làm các block 8x8 trước quá trình nén tùy vàophương pháp thực hiện ở quá trình nén

Cấu trúc lấy mẫu trong MPEG-1 là 4:2:0

Trên mỗi macroblock, lấy mẫu tín hiệu Y tại tất cả các điểm ảnh của dòng, còntín hiệu màu thì cứ 4Y, có 2 màu CR và CB cách nhau theo từng hàng

Hình 3.3: Cấu trúc lấy mẫu 4:2:0.

III.3 Xây dựng thuật toán nén MPEG-1

III.3.1 Quá trình lấy mẫu 4:2:0:

Sau khi chuyển đổi hệ màu từ BGR sang YCrCb ta có ma trận các điểm ảnh,mỗi điểm là 1 vector 3 chiều (Y,Cr,Cb)

Sau đó ta chia thành các slice và từ các slice đó ta chia thành các ma trận 16x16với mỗi phần tử là 1vector 3 chiều (Y,Cr,Cb)

Sử dụng vòng lặp for, lấy các giá trị Y tại mọi điểm, lấy giá trị Cr, Cb tại cácđiểm mà cả 2 tọa độ của nó chia hết cho 2

III.3.2 Quá trình biến đổi Discrete Cosine Transforms

Với mỗi block 8x8 ta thực hiện phép biến đổi DCT với công thức:

Trang 10

α p={ 1/√M , p=0.

2/ M , 1≤ p ≤ M−1 ; α q={ 1/√N , q=0.

2/ N ,1 ≤ q ≤ N −1

III.3.3 Thiết kế thuật toán DCT.

Do quá trình tính hàm cos rất phức tạp và tốn thời gian Ta xây dựng 2 ma trận

để lưu trữ các giá trị cos đã được tính toán sẵn

Ma trận đầu tiên là ma trận 8x8 Cosin[m][p] để lưu trữ các giá trị:

đã được biến đổi DCT

Trong đó A mn là giá trị tại vị trí m,n của ma trận trước khi biến đổi DCT

Trong đó B pq là giá trị tại vị trí p,q của ma trận sau khi biến đổi DCT

III.3.4 Quá trình Lượng tử hóa:

Sau khi thu được các block 8x8 đã thực hiện biến đổi DCT Ta thực hiện lượng

 Trong đó C pq là giá trị của ma trận lượng tử hóa tại vị trí p,q

D pq giá trị của ma trận sau khi lượng tử hóa tại p,q

Bảng lượng tử hóa được sử dụng:

Hình 3.4: Bảng lượng tử hóa.

Trang 11

III.3.5 Quá trình lượng tử hóa ngược Q−1

Sau khi có được ma trận đã lượng tử hóa D(8,8)

Ta sử dụng bảng lượng tử hóa cũ để lượng tử hóa ngược với công thức:

B ' pq = D pq*C pq.

III.3.6 Quá trình IDCT

Ta sử dụng công thức IDCT:

Với mỗi block 8x8 ta thực hiện phép biến đổi DCT với công thức:

Thuật toán được thiết kế gộp 2 khối DCT và lượng tử hóa thành 1 để việc xử lývới các khối 8x8 thuận tiện hơn

Đầu vào là frame theo cấu trúc dữ liệu sau đó duyệt ta có các block 8x8 Vớiframe I thì nó là ma trận các giá trị (Y,Cb,Cr), còn nếu là frame P,B thì nó là matrận sự sai khác khi lấy (P-P’) hoặc (B-B’) Thưc hiện DCT và lượng tử hóa với cácblock 8x8 kết quả thu được là 1 frame với các ma trận 8x8 đã thay được biến đổiDCT và lượng tử hóa

Quá trình Q−1 và IDCT cho ta 1 frame theo cấu trúc dữ liệu có sự sai khác so vớiframe ban đầu do quá trình Lượng tử hóa gây ra

III.3.7 Quá trình đánh giá chuyển động

Input: 2 frame: 1 frame cần đánh giá chuyển động, 1 frame tham chiếu, tham số

tìm kiếm là p=7

Output: tập hợp các vector chuyển động của mỗi macroblock trong frame.

Thuật toán: Dùng Block Matching Algorithm – Three Step Search (TSS).

 Bước 1: Chia frame thành nhiều macroblock 16x16 Ta chỉ tìm vớithành phần độ chói Y

 Bước 2: Duyệt lần lượt từng macroblock trong frame để tìm vectorchuyển động cho từng macroblock Xác định kích cỡ cửa sổ tìm kiếm

Trang 12

Với p=7, cửa sổ tìm kiếm sẽ có kích thước mở rộng về phía 4 cạnh củamacroblock 7 pixel -> kích cỡ cửa sổ tìm kiếm là 30x30.

 Bước 3: Xác định điểm trung tâm của macroblock, đó là vị trí khởi đầutìm kiếm, với tham số tìm kiếm p=7 thì kích thước tìm kiếm ban đầu làS=4, tiếp theo ta xác định 8 điểm +/- S pixel quanh điểm trung tâm

Hình 3.5: Cửa sổ tìm kiếm của 1 khối macroblock

16 pixel với tham số tìm kiếm là 7 pixel.

 Bước 4: với mỗi một trong 8 điểm, ta tính sai khác tuyệt đối – MADtương ứng theo công thức dưới đây, với m=n=16 là kích thước 1macroblock:

 Bước 5: xác định điểm có MAD nhỏ nhất và đặt làm gốc tìm kiếm mới,kích thước tìm kiếm giảm đi 1 nửa S=S/2

 Bước 6: lặp lại quá trình như bước 3 cho tới khi kích thước tìm kiếmS=1 thì dừng lại, điểm có MAD nhỏ nhất ở bước này chính là trung tâmcủa macroblock phù hợp nhất

 Bước 7: lưu lại vector chuyển động tìm được của macroblock hiện tại

III.3.8 Quá trình bù chuyển động

 Bước 1: tạo frame dự đoán từ frame tham chiếu và các vector chuyểnđộng Kết quả trả về là frame dự đoán

 Bước 2: tạo frame kết quả bằng cách cộng frame dự đoán với sai số dựđoán

Trang 13

Hình 3.6: Ước lượng chuyển động và bù chuyển động.

1 Tạo frame dự đoán

Input: frame tham chiếu ( P hoặc I ), tập các vector chuyển động của các

macroblock trong frame

Output: frame dự đoán.

Thuật toán:

frame P’ với các giá trị ban đầu đều bằng 0, sau đó cũng chia thành cácblock 16x16

 Bước 2: duyệt lần lượt từng macroblock trong P’, bắt đầu từmacroblock trên cùng bên trái, đồng thời lấy ra vector chuyển động ứngvới vị trí macroblock đó

 Bước 3: Dựa vào vector chuyển động, tách lấy macroblock 16x16 từframe tham chiếu Macroblock tương ứng ở P’ sẽ được gán giá trị bằngmacroblock đó

 Bước 4: duyệt xong toàn bộ, trả về P’ là frame dự đoán

2 Tạo frame kết quả

Frame kết quả tạo ra bằng cách thực hiện cộng frame dự đoán với sai số dựđoán

Input: frame dự đoán và sai số dự đoán tương ứng.

Output: frame kết quả là frame đã hoàn tất bù chuyển động

Trang 14

Hình 3.7: Tính sự sai khác

Quét zigzag

Input: Một Frame đã được DCT, lượng tử hóa;

Output: ma trận 2 chiều khi tất cả lưu kết quả của zigzac của từng block trong

mỗi MB của frame

Thuật toán:

- Dựa theo cấu trúc dữ liệu, ta sẽ quét zigzag cho từng khối 8*8 của mộtMacroblock, 1 khối MB có 6 khối block 8*8

- cur_row=0,cur_col =0 là chỉ số hàng và cột trong một block

 Bước 1: Quét từ phần tử đầu tiên của của từng block 8*8

 Bước 2: Dựa theo chỉ số hàng và cột để quét phần tử tiếp theo

- (cur_col==0 ) &&(cur_row+ cur_col)mod 2==1 và cur_row !=7 : quétsang phải tại hàng đầu tiên

- (cur_row==7 ) &&(cur_row+ cur_col)mod 2==1 và cur_col !=7: quétsang phải tại hàng cuối

- (cur_col==0 ) &&(cur_row+ cur_col)mod 2==1 và cur_row !=7: quétxuống dưới bên trái

- (cur_col==7 ) &&(cur_row+ cur_col)mod 2==0 và cur_row !=7: quétxuống dưới bên phải

- (cur_col !=0 ) &&(cur_row+ cur_col)mod 2==1 và cur_row !=7: quétxuống chéo trái

- (cur_row != 0) &&(cur_row+ cur_col)mod 2==0 và cur_col !=7: quétlên chéo phái

- ( cur_row==7 && cur_col==7) : lưu điểm cuối cùng vào mảng, kếtthúc quét zigzag block này

III.3.9 Mã hóa entropy

Input: int MV[][]: ma trận các vector chuyển động của một frame;

int F[6*n][64]: ma trận lưu các vector sau khi quét zigzac của cả mộtframe Với n là số MB

Output: byte BS[]: chuỗi bit sau khi nén.

Ngày đăng: 08/06/2016, 23:56

TỪ KHÓA LIÊN QUAN

w