Xây dựng một hệ thống giải nén thành phần ảnh tĩnh trong MPEG2 trên nền FPGA. Trình bày cơ sở tổng quan về nén và giải nén thành phần ảnh nội MPEG và ứng dụng FPGA; xây dựng...
Trang 1
LUAN VAN THAC Si KHOA HOC
XAY DUNG MOT HE THONG GIAI NEN
THANH PHAN ANH TINH TRONG
MPEG2 TREN NEN FPGA
NGANH : KY THUẬT ĐIỆN TỬ
MA SO:
Người hướng dẫn khoa học: TS Nguyễn Phương
dy
HA NOI - 2006
Trang 2
Tôi xin chân thành gửi lời cảm ơn tới toàn thê các thầy cô và các bạn
bè đồng nghiệp đã tham gia đóng góp ý kiến, chia sẻ kinh nghiệm và động viên khuyến khích để tôi hoàn thành tốt nhất luận văn và thu được kết quả nghiên cứu có ý nghĩa
Đặc biệt, tôi xin vô cùng cảm ơn sự hướng dẫn và chỉ bảo tận tình của
Tiến sỹ Nguyễn Phương, Tiến sỹ Nguyễn Quốc Trung đã thật sự hỗ trợ tôi rất
nhiêu trong quá trình nghiên cứu
Bên cạnh đó, tôi cũng mong muốn bày tỏ tình cảm vô cùng trân trọng biết ơn tới cha mẹ và những người thân trong gia đình đã giúp đỡ, động viên tôi trong toàn bộ quá trình thực hiện dé tai, giúp đỡ tôi trong những lúc khó khăn tưởng như không thể vượt qua dé tôi có thể đạt được kết quả như ngày hôm nay.
Trang 3Tôi xin cam đoan nội dung nội dung của luận văn này là công sức nghiên cứu, kêt quả làm việc của cá nhân tôi Nêu phát hiện bât cứ sự gian lận, man trá nào tôi xin hoàn toàn chịu trách nhiệm
Hà Nội, tháng 11 năm 2006
Người thực hiện
Nguyễn Tuân Anh
Trang 41.1.1) Vai trò của nén ảnh . - 5-5 Ssssstteriertrrrrirrrrririrrre 11
1.1.2) Kỹ thuật nén thành phân ảnh tĩnh trong MPEG 13
1.1.2.1) Phép biến đổi DCT cccc::c52ctvttirrrrrtrrrrirrie 13
1.1.2.2) Bộ lượng tử hóa (quantIZer): ‹- _ 16
1.1.2.3) Bộ chuyển đổi thứ tự quét các phân tử của một block 18
1.1.2.4) Bộ mã hóa Runlength (REE) scceceseeseseeseeeeteseeeeseeeenen 20
1.1.2.5) Mã hóa Huffiman - - - 5c: etnhethrherhreeree 21 1.1.3) Nội dung cơ bản cần thực hiện trong hệ thống - 24 1.1.3.1) Những chức năng cơ bản của một hệ giải nén ảnh nội
jÿị,);i 8 Ả ÔÒỎ 24 1.1.3.2) Sơ lược đánh giá yêu cầu tài nguyên hệ thống 24 1.2) FPGA VA UNG DUNG TRONG HE THONG MULTIMEDIA .24
1.2.1) Sơ lược về ứng dụng của FPGA trong các hệ thống multimedia
1 1 24
1.2.1.1) Các thanh ghi dịch - s¿cc + +c+sehhhihehhrrrrrdee 25
1.2.1.2) Các bộ đếm: -cc:c-222ttrtrnnrrrrrrrrrie 25 1.2.1.3) Thành phần nhớ -¿ 22¿e£222+++ttevvxrrrtrrrtrrrrrrrrd 26
1.2.1.4) Các thành phân thực hiện các phép toán số học và logic 27
1.2.1.5) Các bộ đệm một chiều và hai chiễu - 27
Trang 500a 7 29
2.2) GIẢI LƯỢNG TỬ: -# 725522c22cxtrrrtrtrtrrrrrtrrrrirrrrrrrriiirrrrieg 36
2.3) GIẢI QUÉT -. -©5cccczcreree2 thHHngrttrrrrrrrriririnirrirririid 44 2.4) MÃ HÓA VÀ GIẢI MÃ RUNLENGTH -: 46
2.5) MÃ HÓA HUFFMAN LH ri 50
CHƯƠNG 3 : HỆ THÓNG THỰC TẾ VÀ CÁC KÉT QUÁ THỰC
HIỆNN -°-<<©2ee©©©EeeeEEEE+22E22EAEte.E71400773110.0741000140 7111nTTElrttd 62
3.1) ĐÁNH GIÁ VIỆC XÂY DỰNG MỘT HỆ THÓNG THỰC TẾ: 62
3.1.1) Lựa chọn phương thức phù hợp dựa trên chip FPGA sẵn có 62
3.1.2) Hệ thống thực tẾ -©22ccc 22222 62
3.1.3) Cách thức trình bày nội dung trong chương -. -: - 63
3.2) SO DO HE THONG GIẢI NÉN -ccccccsstiiirrerrrrerrrr 63 3.3) CAC THANH PHAN CO BAN? ssessessssssessesssiesscecssnnnesectennnneeeessennen 66
3.3.1) Bộ giải mã Huffman . «nén 67 3.3.1.1) Ứng dụng trên chip Spartan 3 cc-ceereererrreee 67
3.3.1.2) Kết quả tổng hợp -‹-¿-c55cc2srtrrtireertrrrrrrrririrerrrie 68
3.3.2.1) Ứng dụng trên chip Špartan 3 -. -cceeeereerrrre 69
3.3.2.2) Kết quả tổng hợp -2ccccstrtrrrrtrrtritrrrrrrrrrrrrrrrrei 69
3.3.3) Bộ chuyển đổi dạng quét zigzag thành dạng bình thường 70
3.3.3.1) Ứng dụng trên chip Spartan 3 - -cereererrrrrree 70
3.3.3.2) Kết quả tổng hợp - -¿-ccsccerrrrtrrrrttrtrrtrirrrrrrrrrrrre 7I 3.3.4) Bộ giải lượng tử -cccccccrrrtrrrrrrrrtrrirettrrrrrrirrirrrrrrrrrie 7I
3.3.4.1) Ứng dụng trên chip Spartan 3 c-cerrrrrererrriee 7]
3.3.4.2) Kết quả tổng hợp -csssecrrtrrrtetrirrrrritrrrrrrrrrer 72
Trang 63.4) CAC THANH PHAN PHU TRO TRONG HỆ THÓNG: 76
3.4.1) Thanh phan nhoé dém FIFO 8: cccssscsssssesseessesssesssestesesteceeseesseeee 76
3.4.2) Bộ nhớ đệm fifo_huffman LH TT TT HT TH ng 78
3.4.3) Thanh phan giao tiếp SR AM: cóc ng ctrerterree 80 3.4.4) Thành phân giao tiếp VGA ¬ 81 3.4.5) Thành phân giao tiếp thao tác người sử dụng - -:- 83 3.4.6) Phương pháp chuyển đổi từ dạng block 8x8 thành dạng có thể
3.5.1)Mô phỏng đối với bộ giải mã Huffman -22s 22s co 91
3.5.2) Mô phỏng đối với bộ giải mã RLE 5-52 ccccszvcerxeee 92
3.5.3) Mô phỏng đối với bộ giải lượng tử -.-2ssccoc2trceereeerre 92 3.5.4) Mô phỏng đối với bộ chuyền zigzag — quét thường 93 3.5.6) Thực hiện đối với ảnh thực .c 222222trreccevvSEEEEE resrrrrre 94 3.5.6.1) Ảnh được sử dụng trong thử nghiệm: . 95
3.5.6.2) Các công đoạn thực hiện: mm" " 95
3.5.6.3) Các thông SỐ nén: . -:-¿ 5© 22c ct2ververxrrxerrerkrerre 96 3.6) ĐÁNH GIÁ TỎNG HỢP HỆ THÔNG - 22-52 5s+zsccv2 96
'WẪ.):inua ÔÒÔỎ 100
Trang 7Bảng 2.2: Nội dung mã hóa DC: (Mã kích thước, Mã giá trỊ) - 51
Bảng 2.3: Quy định mã hóa đối với kích thước DC - 53
Bang 2.4: Cac tir ma VLC tuong tng voi cap Run/Level cho các block thuộc
ảnh Intra - «+=+++ "— 54
Bảng 2.5: Mã hóa Run va Level theo sau,mã Escape c-csennheree 59 Bảng 3.1: Bảng tổng kết các đặc tính cầu trúc của họ FPGA Spartan3 62
Bảng 3.2: Các chân tín hiệu quan trọng của bộ giải mã Huffman - 68
Bảng 3.3: Bảng các chân tín hiệu quan trọng của bộ giải mã RLE 69
Bảng 3.4: Các chân tín hiệu của bộ giải quét Z1ØZ4E -cccenenrrrrrree 70 Bảng 3.5: Các chân tín hiệu của bộ giải lượng tỬ -+ccteerrrrrtee lại
Bảng 3.6: Các chân tín hiệu của bộ ¡2 73 Bảng 3.7: Khoảng thời gian giữa các tín hiệu - - S2 heehtererrrirre 83
Bảng 3.8: Các chân tín hiệu của khối điều khiển hiển thị màn hình 84
Bảng 3.9: Bảng chức năng các giao diện của khối :- -s++cezvzersrreres 89 Bảng A.]: Bố trí các chân trên giao tiếp mở rộng A-2 -cc+esen 111 Bang A.2: Cach thuc cấu hình block Ram trong SpartanÔÖ - 113
DANH MỤC CÁC HÌNH VẼ, ĐÔ THỊ
Hình 1.1: Sơ đồ khối quá trình mã hóa (nén) ảnh tuần tự dựa trên DCT 12
Hình 1.2: Mã hóa và giải mã MPE? -+ eetrrerrtrerrtttrrrrrterrrrreren 13 Hình 1.3: Khái lược về các thao tác trên các phân tử của một khối đối với nén
và giải nén JPEG . -+srteererrrtrrrrrrrrtrtrrtrtrrrtrdrrrrrrrrrirn 14
Hình 1.4: DCT biến đổi 64 điểm ảnh thành 64 giá trị tổ hợp của chúng 1Š
Hình 1.5: So sánh lượng tử hóa tuyến tính và lượng tử hóa phi tuyến với vùng
chết (dead Zone) -+srrterterttrrtrtrrtrtretrtrtrrrrrrtrttlrrir 17
Hình 1.6: Lượng tử hóa thích ứng theo phân bố Gauss - 18
Hình 1.7: Phân bố xác suất các hệ số 8 x 8 DCT (ame) - 19
Hình 1.8: Phân bố xác suất các hệ số 8 x 8 DCT (field) -: 19
Hình 1.9: Quét zigzag csenerrerererrertrdrrrrtrrrtrrrtrrrlnrnrtrrrdrdtrrtnrr 20 Hình 1.10: Histogram các hệ số DCT tính theo giá trị tuyệt đối 21 Hình 1.11: Histogram các runlength Ú -+reeerrerrrtrrrrrrrrrrrrre 22 Hình 1.12: Ví dụ về tạo cây mã hóa Huffman -+-+trsrtereeerrr 23
Hình 2.1: Biểu diễn một hệ thông 2D-IDCT xây dựng dựa trên hệ 1D-IDCT
31
8 Út 1.80 19101191910 16198 648169819938 155
Trang 8Hình 2.5: Các thành phân đây đủ của một bộ giải lượng tử hóa trong MPEG43 Hình 2.6: quét phân tử theo phương pháp Z1gZag -. 5c cccc cv sccsca 45 Hình 2.7: quét phần tử theo phương pháp luân phiên (MPEG2) 45
Hình 2.8: Sơ đồ quá trình thực hiện mã hóa runlength (rle) 47
Hình 2.9: Sơ đồ quá trình thực hiện giải mã RLE 2: ©cscc+cs5 49
Hình 2.10: Cơ chế mã hóa Huffman động (tạo bảng kích thước và bảng mã
tương ứng) trong JPEG SH n SH HT ng ngu 50 Hình 2.11: Sơ đồ mã hóa Huffinan - 2-2-5: 252 St2EE2 E212 rrkc 60
Hình 2.12: Sơ đồ giải mã Huffman . - TH 22x ưu “esses 61
Hình 3.1: Sơ đồ toàn bộ hệ thống giải nén JPEG th TH Thọ 64 Hình 3.2: Cây thư mục các thành phân của hệ giải mã Huffman 67 Hình 3.3: Thành phần bộ đệm fifo giữa thành phần đọc đữ liệu từ flash và
HUE 117.77 ÀÀ 76
Hình 3.4: Sơ đồ cài đặt của một FIFO với xung đồng hồ vào/ra độc lập 77
Hình 3.5: giản đồ thời gian thể hiện quá trình ghi lên FIFO 77 Hình 3.6: giản đồ thời gian thé hiện quá trình đọc từ ñfo 77
Hình 3.7: Chân giao tiếp của bộ đệm fifo giữa bộ giải mã Huffman và bộ giải
liệu người dùng -:- 6 + S SE ngưng HH Hư 88
Hình 3.18: Cau trúc thành phân của bộ gia diện flash -. -: 88
Hình 3.19: Giản đồ tín hiệu tại các chân của bộ đọc flash 90 Hình 3.20: Tín hiệu báo tìm thấy đoạn dữ liệu trong flash 90 Hình 3.21: Tín hiệu báo vừa hoàn thành đọc hết một byte -s 90 Hình 3.22: Kết quả mô phỏng tín hiệu vào và ra của bộ giải mã Huffiman 9]
Trang 9quét thông thường -cc:-°+vvettrtttiiisertiiiisiiiriiii 03
Hình 3.26: Kết quả mô phỏng bộ IDCT - 04
Hình 3.27: Ảnh thử nghiệm quá trình mã hóa và giải mã 05
Hình A.1: So sánh sô lượng các đơn vị trong các nhóm khác nhau của họ
Virtex4 (nguồn FPOA) cceeenririniiriiiinnrirnririe 101
Hình A.2: Bố trí các thành phân linh kien trên board thử nghiệm XC35200
TH 11111191015811881518514 919991131513 14 THỂN hy ng gà H111 1111111110100 108 Hình A.3: Board mach thử nghiệm sorta 109
Hình A.4: Bồ trí các chân giao tiếp ra của khe mở rộng trên board spartan-3
Hinh A.5: Huong vao ra dữ liệu của Block RAM spartan3 112 Hình A.6: Cấu hình cho Block RAM hoạt động theo chế độ Dual Port hay
Single Port sessscssssssssssesssssesssessesecsssnecesnsecssnnnecesnussnssneceassnsessssssess 113
Hình A.7: Cách thức bó trí RAM trong 1 Block RAM 114
Hình A.8: Bo tri block RAM trong FIFO -ccccccssse 115
Hình A.9: Sơ đồ giao tiếp bộ nhân cUNg sseeesssssssssssssesseesceesssssesssnnennnensee 115
Trang 10nhiều thành tựu nổi bật trong nhiều lĩnh vực chuyên ngành khác nhau Các sản phẩm điện tử cũng được ứng dụng trên nhiều mặt khác nhau của cuộc sông Các hệ thống điện tử xâm nhập vào mọi thiết bị sản xuất và vật dụng của cuộc sống
Các hệ thống điện tử hiện nay đã trở nên phức tạp với mức độ tích hợp linh kiện rất cao Chúng không còn là những hệ thống chỉ thực hiện các chức
năng đơn giản mà ngày càng trở nên phức tạp, tỉnh vi, có thể thực hiện nhiều
yêu câu công việc, đa chức năng và tốc độ đáp ứng rất lớn
Đặt trong sự phát triển chung của công nghệ điện tử trên toàn thế ĐIỚI, CÓ thé thấy ngành điện tử của Việt Nam rất non trẻ Chúng ta không tạo ra được nhiều sản phẩm và nếu có là sản phẩm sản xuất được tại Việt Nam thì mức độ phân trăm đóng góp của chúng ta trong tổng giá trị chung của sản phẩm chưa phải là cao, đặc biệt là về khía cạnh công nghệ Có nhiều nguyên nhân dẫn tới
sự chậm phát triển của điện tử Việt Nam
Trong tương lai lâu dài, để điện tử Việt Nam có được chỗ đứng vững chắc, cần phải xây dựng một ngành điện tử với hệ thống cơ sở hạ tầng và công nghệ tốt, có khả năng chế tạo và sản xuất các sản phẩm có hàm lượng công nghệ cao, tự sản xuất được linh kiện và thiết bị, Tuy nhiên, đề đạt được những thành tựu như vậy trong thời gian ngắn thì là một khó khăn rất lớn do yêu cầu phải đâu tư về tài chính lớn và có lực lượng các nhà khoa học
và công nghệ đông đảo
Vì vậy, ngành điện tử Việt Nam phải chọn những hướng đi khéo léo để
có thể đảm bảo không ngày cảng tụt hậu so với công nghệ điện tử của thế giới Một giải pháp có thể áp dụng là phát triển theo hướng các sản phẩm có
Trang 11thị trường ngày càng mở rộng và đó là cơ hội để chúng ta có thể nâng cao giá trị chất xám trong các sản phẩm tạo ra Các sản phẩm có thể tùy biến chức năng có thể chỉ là các vi xử lý hoặc vi điều khiển đơn giản, hoặc cũng có thể
là các hệ thống có chức năng phức tạp hơn như DSP, PSOC, FPSLIC, PLD,
V.V
Các họ sản phẩm trên đều có đặc điểm chung là cấu trúc chức năng có thể thay đổi mềm dẻo do thay đổi phần mềm điều khiển Tuy nhiên, do có những đặc điểm công nghệ khác nhau, và phương thức tùy biến khác nhau mà chúng có tầm phạm vi ứng dụng khác nhau Ví dụ: các hệ vi điều khiển có thể nhiều chức năng khác nhau, giá rẻ do cấu trúc và mức độ tích hợp đơn giản,
nhưng cũng thường có tốc độ chậm và năng lực tính toán yếu, ngược lại, các
họ DSP có công suất tính toán rất lớn nhưng giá thành thường cao và đòi hỏi các linh kiện ngoại vi phù hợp
PLD là các linh kiện có cấu trúc lập trình được, chúng có đặc điểm là
mềm dẻo về mặt cấu trúc, tốc độ nhanh và giá thành tương đối cao Các chip PLD hiện nay đang được ứng dụng rất rộng rãi trong nhiều trường hợp khác nhau
Bản thân người viết đã được chứng kiến những ứng dụng thực sự của các chip FPGA trong các thiết bị viễn thông (nhất là các thiết bị có số lượng sản xuất tương đối nhỏ) , thiết bị mạng và các thiết bị đo lường Một cơ SỞ nữa cho thấy sự thành công của chip EPGA là doanh thu của các hãng XIlinx
và Altera (Là hai nhà sản xuất lớn nhất và chủ yếu sản xuất các chip PLD)
được xếp vào hàng lớn nhât của các nhà sản xuất linh kiện bán dân trên thê
Trang 12với các chip multimedia chuyên dụng có trên thị trường cả về tốc độ (Tuy nhiên tốc độ xử lý cỡ 400 Mb/s cũng là khá cao), và giá thành (ví dụ 1 chip FPGA Spartan3 XC35400 và một chịp flash cầu hình có giá bán lẻ tổng cộng khoảng 34 USD) do những nhược điểm cô hữu của cdc chip FPGA và CPLD nói chung (tốc độ tương đối thấp, yêu câu tài nguyên dư thừa cao và không tối
ưu nhất cho từng hệ thống cụ thể), nhưng hệ thống lại có khả năng tùy biến
cao theo yêu cầu cụ thể (do đặc tính của FPGA) và quan trọng là nếu chuyên
thành dạng ASIC thì nó hoàn toàn có thể cạnh tranh về mặt tốc độ và giá
thành (nếu sản xuất ở mức độ lớn — Tuy nhiên, cần phải hoàn thiện về nhiều mặt như là giao diện chip hay mức độ tận dụng tài nguyên, v.v )
và phân người thực hiện, việc xây dựng hệ thống giải nén thực sự trên chip cũng cho phép nắm vững các hệ thống giải nén multimedia (đặc biệt là JPEG và MPEG2), vốn có quan hệ trực tiếp tới công việc mà người thực hiện đang làm
Như vậy, những mục tiêu cơ bản cần thực hiện trong luận văn này là:
- Phát triển từ nội dung lý thuyết cơ bản về nén ảnh tĩnh thành các thuật toán có thể ứng dụng trong thực tế |
- Xay dung mot hé théng rut gon trén board phat trién Spartan thực té, với những hạn chế về tài nguyên hệ thống
Do hạn chế về mặt thời gian và năng lực của người thực hiện, cũng như hạn chế về thiết bị phát triển, mà hệ thống này còn rất nhiều điểm phải hoản thiện Tuy nhiên, hy vọng rắng hệ thống cũng có thể góp phần chứng tỏ được khả năng đặc biệt của các chip PLD, cho thấy nó cũng có thê là một hướng
Trang 13giúp giải quyết nhanh chóng nhiều yêu cầu phát triển hệ thông (đặc biệt là
trong các lĩnh vực đòi hỏi hệ thông hoạt động ở tốc độ cao và yêu cầu cấu trúc
có kha nang thay đổi linh hoạt).
Trang 141.1) Tong quan về nén và giải nén thành phân ảnh nội MPEG
1.1.1) Vai trò của nén ảnh
Nén và giải nén ảnh đóng một vai trò quan trọng trong các hệ thông xử
lý multimedia hiện nay Quá trình nén ảnh cho phép duy trì được chất lượng
của ảnh xét về mặt quan sát trực quan, đồng thời làm giảm dung lượng thông
Hiện nay có nhiều phương thức khác nhau được ứng dụng trong việc nén _
và giải nén ảnh (tĩnh và động) Đối với thành phần ảnh tĩnh, có thể được thực
hiện dựa trên các phép chuyển đổi từ dạng biên độ không gian thành dạng
biên độ - tần số hoặc kết hợp Các phép chuyển đổi này đều dựa trên khả năng cảm nhận tốt hơn của mắt đối với các thành phân tần số thấp và kém nhạy cảm đối với thành phần tần số cao (ví dụ như các điểm nhiễu)
Tuy có nhiều kỹ thuật nén ảnh khác nhau, nhưng hiện nay kỹ thuật nén ảnh dựa trên chuyển đổi DCT vẫn là kỹ thuật được áp dung nhiều nhất trong nhiều hệ thống khác nhau, ví dụ như nén JPEG, MPEGI, 2 ,4, Sở dĩ như vậy vì kỹ thuật này tương đối đơn giản, dễ thực hiện, yêu cầu mức độ tích hợp linh kiện (trong tổng hợp các hệ cứng) vừa phải, tốc độ thực hiện cao và cho hiệu quả nén tương đối cao
Hình 1.1 cho thấy sơ đồ thực hiện cơ bản của một quá trình mã hóa (nén)
ảnh tuần tự dựa trên nền tảng DCT
Hình 1.2 trình bày phương thức mã hóa và giải mã trong MPEG2 Trong
đó các thành phần đã gặp trong JPEG là DCT, luong tir héa, Huffman va ma
Trang 15hoa VLC
Cấu trúc cơ bản trên có thé chia làm hai thành phần:
- Thành phần nén ảnh nội: dựa trên kỹ thuật DCT, lượng tử, mã hóa
Huffman
- Thành phần nén liên ảnh: dựa trên kỹ thuật bù chuyển động Đây là
một nội dung rất đặc sắc Tuy nhiện, do khuôn khổ hạn chế của đề tài
mà xin không đề cập tới thành phần này
Hình 1.1: Sơ đồ khối quá trình mã hóa (nén) ảnh tuần tự dựa trên DCT
Trang 16HUFFMHAN /RUH- LENGTH CODER
INVERSE QUANT
Trang 17(trước khi dịch mức) 3 Các hệ sô DCT sau giải lượng tử Các hệ sô DCT lượng tử nhận được
Hình 1.3: Khái lược về các thao tác trên các phân tử của một khôi đôi với nén
và giai nén JPEG
Trang 18
Hình 1.4: DCT biến đổi 64 điểm ảnh thành 64 giá trị tổ hợp của chúng
Hình 1.4 cho thấy hình ảnh trực quan cách tính toán giá trị của một số
trong ma tran 8x8 dugc biến đổi DCT
Phép toán cơ bản biểu diễn DCT:
Phép toán ngược lại với DCT là IDCT Công thức tính IDCT là:
Trang 19M-1N-1 2m+l 2n+]
XC = AN, AE os 74 Tụ YP sạsZ{ : “ )4 (1.2)
1.1.2.2) Bộ lượng tử hóa (quantizer):
Trong phần này chỉ đề cập tới lượng tử hóa vô hướng mà xin không đề
cập tới lượng tử hóa vector vốn nằm ngoài phạm vi thiết kế của đề tài
Bộ lượng tử hóa thực hiện phép chia mỗi phần tử trong block 64 điểm ảnh cho tương ứng một hệ số trong ma trận lượng tử (8 x 8)
Phép toán cơ bản của bộ lượng tử hóa là:
Bộ lượng tử hóa cũng là một hệ thống tiêu thụ khá nhiều tài nguyên
Bộ phận chức năng ngược với bộ lượng tử hóa là bộ giải lượng tử
Công thức giải lượng tử là:
X? = X siquant y q 4)
Ý nghĩa của dấu X” là vì giá trị này có sai khác so VỚI giá trị gốc ban
đầu Xụ Mức độ sai khác phụ thuộc vào thang lượng tử Q¡
Công thức trên là công thức lượng tử cơ sở Tuy nhiên, việc ứng dụng công thức này vào thực tế cần quan tâm tới hai van dé:
- Làm tròn về số nguyên các giá trị thực sau khi đã lượng tử hóa Kỹ thuật làm tròn đơn giản và dễ áp dụng là cắt bỏ phần thập phân
- Giải quyết các giá trị lượng tử có giá trị gần với 0 (lượng tử có bão hòa): các giá trị này thường là thể hiện của nhiễu, chúng thường được làm
Trang 20tròn về 0 `
Trong thực tế MPEG2, sử dụng lượng tử hóa phi tuyến có sử dụng vùng
+L -4 + -4
Hình 1.5: So sánh lượng tử hóa tuyến tính và lượng tử hóa phi tuyến với vùng
chết (dead zone)
Tuy nhiên, có thê cải thiện hơn hiệu năng của lượng tử với hệ số lượng
tử thay đôi theo độ lớn của dữ liệu (lượng tử hóa thích ứng), như trình bay trên hình 1.6
0000200092
Trang 21Hình 1.6: Lượng tử hóa thích ứng theo phân bố Gauss
Trong nén MPEG2, không sử dụng lượng tử hóa thích ứng đối với các giá trị DCT, nhưng có áp dụng kỹ thuật điều chỉnh hệ số lượng tử tuân theo phân bố phi tuyến (hệ số này được áp dụng cho cả block DCT) nhằm thực hiện kỹ thuật điều chỉnh thích ứng để đảm bảo dung lượng nén
1.1.2.3) Bộ chuyển đổi thứ tự quét các phan tu cia mot block
Quá trình DCT thực hiện việc chuyển đổi thành phan ảnh từ dạng biên
độ - không gian hai chiều sang dạng biên độ - tần số Các điểm thành phần trong không gian DCT có mối liên hệ nhất định tương ứng với khả năng cảm nhận của mắt người đối với mỗi thành phần tần số Qua nghiên cứu, người ta nhận thấy rằng, các hệ s6 DCT có ý nghĩa trong một khối ảnh thường có vị trí nằm xung quanh hệ số DCT(0,0) Các hệ số DCT khác 0 thường tập trung xung quanh hệ số DC và phân bố xác suất xuất hiện các hệ số khác 0 này hầu như đối xứng theo hướng ngang và hướng đọc Hình 1.5 biểu diễn phân bố xác suât xuât hiện các hệ sô DC”F khác 0
Trang 22
Hình 1.7: Phân bố xác suất các hệ số 8 x 8 DCT (#ame)
Đó là phân bố trong một frame Tuy nhiên, đối với 1 field, có sự khác
biệt (Vì field có thành phần cao tần mạnh hơn theo trục dọc)
Hình 1.8: Phân bố xác suất các hệ số 8 x 8 DCT (field)
Để thực hiện sắp xếp chuỗi các giá trị sau DCT sao cho các gia tri 0 nam thành một chuỗi dài, cần thực hiện một kỹ thuật quét khác với quét điểm ảnh
thông thường, ví dụ như kỹ thuật quét zigzag trong hình dưới đây:
Trang 23Theo chiều tăng của thánh phần ˆ tấn số hướng đọc
Theo chiều táng của thành phần tần số
hướng ngang
Hinh 1.9: Quét zigzag
Công thức cơ sở của phép quét zigzag là:
Xx, = X 4 jeindex(i,j) q 5)
Phép chuyén déi trén phai dam bdo tinh chat anh xa 1-1
Quá trình sử dụng trong giải nén JPEG là quá trình ngược chuyển từ
dạng zigzag sang dạng bình thường
1.1.2.4) Bộ mã hóa Runlength (RLE)
Nguyên lý cơ bản của thành phần này là dựa trên xác suất xuất hiện nhiều và tạo thành chuỗi dài các giá trị 0 trong giá trị ra sau quá trình mã hóa DCT và quét zigzag Thay vì biểu diễn toàn bộ từng giá trị 0 trong chuỗi 0 này, chỉ cần mã hóa dưới dạng N ‘0’, va vi trong JPEG chi cần rút gọn cho giá trị 0 nên cũng có thể biểu diễn N cũng đủ biết có N số 0 đi liền nhau
Vidu:04000006
có thê mã hóa thành (1,4) (5,6).
Trang 241.1.2.5) Mã hóa Huffman /
Nguyên tắc cơ bản của mã hóa Huffman 1a dua trén phan bố xác suất
khác nhau của các ký tự mã khác nhau Các ký tự có phân bố xác suất cao
được biểu diễn bằng các từ mã ngắn và ngược lại, các ký tự có phân bố xác
suất thấp được biểu diễn bằng các từ mã dài Như vậy, các từ mã huffman có
độ dài khác nhau Để đảm bảo bộ giải mã có thể nhận dạng đúng các từ mã (với độ dài khác nhau), các từ mã Huffman phải có tính chat prefix (ttre 1a các
từ mã đài hơn không có đoạn đầu trùng với từ mã ngắn hơn)
- Hình 1.10 cho thấy histogram các hệ số DCT, qua đó thấy được sự tập
trung các hệ số xung quanh giá trị DC có xác suất xuất hiện cao hơn nhiều các | giá trị khác
Trang 25Số các giá trị 0 liên tiếp -
Hình 1.11: Histogram cac runlength 0
Nhu vay, sau biến đôi DCT, tinh chat phan bố xác suất của các giá trị khác nhau đã thay đổi Có một số giá trị có xác suất xuất hiện nhiều hơn hắn,
và ngược lại, một sỐ gia tri rất ít khi xuất hiện
Nguyên tắc mã hóa Huffnan được thực hiện như sau: xây dựng một cây nhị phân dựa trên xác suất xuất hiện của mỗ ký tự Các ký tự đều phải nằm ở
lá của cây nhị phân này, và các ký tự có xác suất xuất hiện cao hơn sẽ có độ cao nhỏ hơn (nghĩa là càng nằm gân gốc hơn) Các nhánh bên trái trong cây
sẽ tương ứng với nhị phân 0 và các nhánh bên phải tương ứng với nhị phan 1
Mã hóa huffman được thực hiện theo hướng đi từ là tới gốc
Các bước của quá trình mã hóa Huffman như sau:
(1)Bắt đầu với số lá được xác định bằng số ký tự trong bảng mã hóa (2) Xếp thứ tự các là thành hàng đợi đầu tiên (theo thứ tự xác suất)
(3)Nếu vẫn còn một nút trong hàng đợi đầu tiên:
(a) Loại bỏ hai nút có trọng lượng (xác suất) thấp nhất trong hàng đợi
Trang 26(b) Tao một nút trong, với hai nút con chính là hai nút vừa loại bỏ và tính trọng lượng tổng của hai nút con, gán cho nút trong vừa tạo thành (c) Cập nhật các liên kết ở tầng trên đối với hai nút trên
(d) Các nút tổng vừa tạo thành được xếp vào hàng đợi thứ hai Quá trình lặp lại từ bước (a)
(4)Nút duy nhất cuối cùng còn lại sau quá trình lặp trên chính là nút gốc,
và đã hoàn thành việc xây dựng cây nhị phân Huffman
Vĩ dụ cách xáy dựng bảng Huƒffnan đơn giản:
Với các ký tự có xác suất xuất hiện như sau: A-30%, B-25%, C-20%, D- 15%, E— 10%
A 30 W
A - 30 B -25 a7
B - 25
F 25 D -15 100 C20
E - 40 -
Hình 1.12: Ví dụ về tạo cây m4 hoa Huffman
Có một điểm đáng chú ý là mã hóa Huffman dựa trên bảng các từ mã có
sẵn chứ không phải là các bảng từ mã xây dựng theo từng ảnh Như vậy, việc
nén có thể không đạt hiệu quả cao nhất trong từng ảnh tĩnh cụ thể Sở dĩ thực hiện như vậy là vì:
- Tốc độ mã hóa nhanh hơn do không phải xây dựng các bảng
- Không phải xây dựng các bảng mã hóa với kích thước khác nhau cho
từng ảnh Không phải truyền đi các bảng này cho mỗi ảnh
- Nếu tính trung bình cho nhiều ảnh thì bảng mã hóa này sẽ tương đối phù hợp với các phân bô xác suât của các giá trị biên độ
Trang 271.1.3) Nội dung cơ bản cần thực hiện trong hệ thống
Việc phát triển một hệ thống dựa trên FPGA cũng giống việc phát triển của các hệ thống dựa trên các thiết bị khác, bao gồm nhiều giai đoạn: phân tích hệ thống, phân chia chức năng, kiểm định chức năng, tổng hợp hệ thống, đánh giá thực tế, tích hợp hệ thống, kiểm định hệ thống, đóng gói sản phẩm Các công đoạn trên đòi hỏi nhiều thời gian và hàm lượng công việc Trong luận văn này, người viết cố găng thực hiện được nhiều nhất các công đoạn nói trên Những công đoạn thuộc về sản xuất lớn và kiểm định (verification) tạm thời chưa được thực hiện
Phần này trình bày về giai đoạn phân tích hệ thống
1.1.3.1) Những chức năng cơ bản của một hệ giải nén ảnh nội MIPEG
- Phân này đã được trình bày ở chương trước nên không nhac lai
1.1.3.2) Sơ lược đánh giá yêu cầu tài nguyên hệ thống
Việc lựa chọn thuật toán để xử lý sẽ ảnh hưởng rất lớn tới khả năng tiêu thụ tài nguyên hệ thống Khả năng đặc biệt của FPGA là có thể thực hiện xử
lý song song, dựa trên tính cấu trúc song song của các phan tur
Vi ho Spartan3 có sẵn các bộ nhân cứng và các bộ nhớ RAM cứng với dung lượng khá lớn nên việc xây dựng hệ thống cần dựa trên ưu thế này
1.2) FPGA và ứng dụng trong hệ thống multimedia
1.2.1) Sơ lược về ứng dụng của FPGA trong các hệ théng multimedia và DSP:
Khi mới ra đời, các linh kiện PLD không có khả năng ứng dụng trong các hệ thống multimedia và DSP ở mức độ xử lý chính (chỉ đóng vai trò chuyển mạch hoặc tạo nguồn tín hiệu, .) Nguyên nhân cơ bản là các PLD
Trang 28ban đầu có mức độ tích hợp nhỏ và chỉ bao gồm các thành phần cơ bản (là các cell hay các CLB) Tuy nhiên khả năng xử lý song song đã cho thấy phần nào khả năng ứng dụng trong các hệ multimedia và DSP, vốn đòi hỏi năng lực xử
lý rất lớn
Các FPGA hiện nay hoàn toàn có khả năng đáp ứng trong các hệ thống
xử lý multimedia và DSP Sở dĩ như vậy vì các FPGA hiện nay có lượng tài nguyên lớn và tích hợp sẵn nhiều thành phần chuyên dụng như là các bộ nhân
san có và các bộ nhớ tích hợp sẵn Ví dụ họ Spartan3 XC3S400 chứa tới l6
bộ nhân 18x18 và 16 bộ RAM tích hợp sẵn |
1.2.1.1) Cac thanh ghi dich
Cấu trúc các thanh ghi dịch trong FPGA được thực hiện đơn giản
Có ba kỹ thuật xây dựng thanh ghi dịch trong các FPGA hiện thời:
- Sử dụng các flipflop như kỹ thuật hình thành thanh ghi dịch cô điền
- Sử dụng các bộ LUT (Look up table)
- Sử dụng bộ nhớ RAM hai công sẵn có trong các FPGA
Trang 29Trong hệ thống giải nén JPEG sử dụng rất nhiều thành phân nhớ
Thành phần nhớ với nội dung không thay đổi (thành phần ROM) Các
thành phần này được sử dụng để chứa các hệ số cho các thành phần sau:
- Bộ IDCT, yêu cầu số lượng các giá trị cần nhớ là
- Bộ giải lượng tử, yêu cầu số lượng các giá trị cần nhớ là
- Các thành phần chỉ số trong bộ giải mã zigzag
Việc lưu giữ các giá trị cô định nảy có thể thực hiện theo ba cách:
~ Lưu nhớ bằng các dây nỗi với các nguồn đất và dương
- Sử dụng các ô nhớ trong bộ nhớ RAM tích hợp sẵn với vai trò như các
bộ nhớ ROM Đây là cách thức rất phù hợp khi số lượng ô nhớ lớn và việc gọi
ra theo thứ tự tuần tự
- Su dung LUT
Ngoai ra, con co thé str dụng các bộ nhớ ROMI hoặc flash bên ngoài Trong bài này sử dụng một kỹ thuật đặc biệt là sử dụng bộ nhớ ROM cầu hình của FPGA đề chứa lâu dài các byte của ảnh nén
Trang 30Thành phần nhớ với nội dung thay đổi Các thành phần này chủ yếu dựa trên các bộ nhớ RAM sẵn có, chúng có thể được sử dụng với các chức năng
dữ liệu từ Flash và bộ giải mã Huffman (vốn có tốc độ đồng hồ khác nhau);
và bộ FIFO giữa bộ giải mã Huffman và bộ giải mã rle (vốn giữa vùng có tốc
độ giải mã phi tuyến và vùng có tốc độ giải mã tuyến tính
Ngoài ra, trong mạch còn sử dụng nhiều bộ nhớ dung lượng nhỏ (ví dụ
bộ đệm trong IDCT và giải zigzag) Các bộ nhớ RAM này sử dụng các
flipflop
1.2.1.4) Cac thành phan thực hiện các phép toán số học và logic
Trong mạch này sử dụng các thành phan sau:
- Bộ nhân số nguyên
- Bộ cộng — trừ số nguyên
- Bộ xor từng bit - Bộ đảo từng bit
- Bộ or, and, nand
1.2.1.3) Các bộ đệm một chiều và hai chiêu
Thành phần bộ đệm có vai trò quan trọng trong việc truyền dữ liệu Các
bộ đệm có thể phân thành một số loại
- Latch
- Đệm đơn giản một và hai chiêu
Trang 31- Đệm có điều khiển một chiều và hai chiều
Đối với FPGA hién nay, tại các chân tín hiệu vào/ra của chip, có sẵn các mảng đệm tín hiệu Việc sử dụng các mảng đệm có một sỐ mục đích:
+ Đảm bảo an toàn cho thông tin vào ra
+ Giao tiếp điện áp
+ Ngăn chặn tín hiệu truyền n#ược, tạo chân Hi-Z 1.2.2) Các nguyên tắc xây dựng hệ thống multimedia dựa trên FPGA
Qua thực tế thực hiện luận văn và nghiên cứu các tài liệu, người viết
nhận thấy có một số nguyên tắc trong xây dựng thiết kế hệ thống multimedia:
- Xây dựng các modul tổng thê với các giao diện được xác định trước,
bổ xung các đường tín hiệu riêng với mục đích gỡ tối
- Sử dụng tối đa những tài nguyên cứng có sẵn trong các chip vì chúng giúp tiết kiệm rất nhiều các tài nguyên chung, đồng thời cải thiện tốc độ
hệ thống
- Tận dụng tối đa khả năng xử lý song song Xây dựng các hệ xử lý
dưới dạng pipeline nhằm tăng tốc độ xử lý (giảm số xung đồng hỗ
trung bình để thực hiện một công việc)
- Xác định trước các nhân tố thời gian, nhằm đảm bảo hoạt động chính
xác giữa các modul (xây dựng các đồ hình tiến trình)
- Sử dụng duy nhất một nguồn đồng hồ, thực hiện xử lý theo sườn và
hạn chế tới mức tối đa các logic tô hợp
- Xây dựng thuật toán song song tối ưu
Trang 32CHƯƠNG 2 : XÂY DỰNG HỆ GIẢI NÉN THÀNH PHẢN
ANH NOI MPEG TREN FPGA
độ tổ chức bộ nhớ cũng như yêu cầu các tài nguyên khác
Phân tích công thức tinh IDCT:
Công thức trên là công thức cơ sở của việc tính toán 2D-IDCT Tuy
nhiên, nếu áp dụng trực tiếp công thức này sẽ dẫn tới việc tiêu tốn nhiều tài
nguyên (bộ nhân và nhớ), cũng như mất nhiều lượt tính toán dẫn tới thời gian
tính lâu
Quan sát công thức trên có thể rút ra một số kết luận quan trọng Trước hết, có nhận xét rằng trong JPEG cũng như MPEG, thực hiện tính toán DCT (và IDCT) trên các khối vuông 8x8 điểm ảnh
Viết lại công thức tính cho trường hợp 8x8 này:
m=0 n=0
Trong công thức trên, có nhận xét:
- Các hệ số cos ứng với phân tử m và n có môi liên hệ vê mặt biên độ
- Hoàn toàn có thể tách phân ứng với hệ số m và hệ sô n theo công thức
Trang 33sau
Thực hiện phân chia thành các thành phan dòng và cột: Y = C'.X.C
Trong đó thành phần C được viết dưới dạng:
5 (2.vi_tri_cott+ 1)vi_ tri _ hang.z
Ta có phép tính ma trận 8x8 hệ số ra được tính bởi công thức:
Y=CXC (2.5)
Trong đó C là ma trận các hệ sô cosin và CỶ là ma trận chuyên vị của ma
Trang 34trận C
RAM Double Buffer
Hình 2.1: Biểu diễn một hệ thống 2D-IDCT xây dựng dựa trên hệ 1D-IDCT
- Trước hết thực hiện tính toán ma trận trung gian Z = X.C
Nếu viết dưới dạng số thực thì ma trận nhân DCT là:
[03535 0/3535 03535 0.3535 0/3535 0/3535 0/3535 03535 |
04904 04157 0/2778 0/0975 -0,0975 -0,2778 -0.4157 -0.4904
04619 01913 -0,1913 -0,4619 -0,4619 -0,1913 0,1913 0,4619 c-|04l57 -0,0975 -0.4904 -0,2778 0,2778 0.4904 0/0975 -0.4157
~ 10,3535 -0/3535 -0,3535 03535 0/3535 -0,3535 -0,3535 0,3535
02778 -04904 0/0975 04157 -0.4157 -0,0975 0.4904 -0,2778
01913 -0,4619 0/4619 -0/1913 -0,1913 0/4619 -0,4619 0.1913 [0.0975 -0,2778 04157 -0490/4 04904 -04157 0/2778 -0,095Ỉ
Tuy nhiên, không thể thực hiện việc nhân số thực vì làm như vậy rất tốn tài nguyên và làm giảm tốc độ Vì vậy các số thực được chuyền thành dạng nguyên bằng cách, nhân mỗi giá trị trong ma trận số thực với 65536, tức là tăng thêm phần tính toán số nguyên lên 216
23170 23170 23170 23170 23170 23170 23170 23170 |
32138 27246 18205 6393 -6393 -18205 -27246 -32138
30274 12540 -12540 -30274 -30274 -12540 12540 30274 C= 27246 -6393 ~-32138 -18205 18205 32138 6393 -27246
23170 -23170 -23170 23170 23170 -23170 -23170 23170
18205 -32138 6393 27246 -27246 -6393 32138 -18205
12540 -30274 30274 -12540 -12540 30274 -30274 12540 [6393 -l18205 27246 - 32138 32138 -27246 18205 -6393 |
Tương tự, có thê nhận được ma trận hoán vị Ct
Trang 36+ Số Xọo được nhân với các hệ số thuộc hàng đầu tiên của ma trận C Số
Xo, duoc nhân với các hệ số thuộc hàng thứ hai của ma trận C Số Xạ; được nhân với các hệ sô thuộc hàng thứ 1 của ma trận C v.v
+ Nêu thực hiện nhân, cộng đông thời một sô với 8 hệ sô của ma trận C như hình dưới đây, thì các giá trị của Zo(o-;; được tính trong 8 chu kỳ
Việc cộng được thực hiện tại chu kỳ thứ 9.
Trang 37Hình 2.2: Khâu tinh toan 1D-IDCT dau tiên
- Sau khi tính ma trận trung gian Z, việc tính ma trận cuối Y theo Z được
thực hiện như sau: Y = C!Z Trong đó:
Trang 38„ =23170Z,y +32138Z,„ +30274Z,y +27246Z,„ +23170Z,y +18205Z,y +12540Z,y + 6393Z;„
v=23170Z,y +27246Z,y +12540Z,y ~6393Z,y ~23170Z,y -32138Z,y ~30274Z,„ - 18205Z,„
v=23170Z,„ +18205Z,„ -12540Z,y -32138Z;y -23170Z,y + 6393Z,„ +30274Z,y +272462;x
=23170Z,„ -27246Z,„ +12540Z,y +6393Z;y -23170Z,y +32138Z,„ -30274Z,y +18205Z;„
= 23170Z,y 32138Z,y +30274Z,y -27246Z;„ +23110Z,y —18205Z,„ +12540Z,„ - 63932;
Hình 2.3: Khâu tính toán LD-IDCT thứ hai
Cơ chế thực hiện của bộ IDCT như sau:
- Các phần tử được đưa vào lần lượt theo thứ tự quét từ trái sang phải, từ
trên xuông dưới
- Mỗi lần thực hiện phép nhân với 8 phần tử thuộc một dãy (hàng hoặc cột)
Quá trình hiện thực hóa thuật toán trên trong F PGA họ Spartan3 dược
Trang 39thực hiện trên các thành phân:
- Bộ nhớ lưu trữ các hệ số trong các phép nhân Các giá trị hệ số này là các số được biểu diễn trong ma trận hệ số đã trình bày ở trên Các hệ số được lưu dưới dạng 16 bịt
- Các thanh ghi dịch giá trị được đồng bộ với các hệ số vào Đối với mỗi
bộ DCT cột và hàng, đều yêu cầu có 8 bộ ghi dịch song song để nạp lần lượt 8 phân tử trong 8 dãy hệ số vào 8 bộ nhân
- 8 bộ nhân thực hiện việc nhân 8 hệ số vào với 8 hệ số trong mỗi dãy Như vậy, một bộ biến đổi 2 D-DCT và 2D - IDCT cần 16 bộ nhân Do
trong Spartan 3 có sẵn các bộ nhân cứng, nên có thê sử dụng các bộ nhân này
để thực hiện phần tử nhân trong các bộ biến đôi DCT và IDCT
2.2) Giải lượng tử:
Lượng tử hóa và giải lượng tử là hai quá trình ngược nhau cả về nguyên
lý và công đoạn thực hiện
Công đoạn lượng tử và giải lượng tử đối với JPEG và MPEG có điểm khác biệt
JPEG sử dụng ma trận lượng tử Q 8x§ ứng với mỗi khối DCT 8x8 Voi mỗi hé so DCT 8 bit, mỗi phần tử trong ma trận Q có thể là một số tự nhiên nằm giữa I và 255 Ma trận Q trong JPEG được xây dựng dựa trên hai kỹ thuật, một ma trận Q xây dựng trên các thí nghiệm đo đạc trực quan và một
ma trận Q dựa trên lý thuyết về méo và điều khiển tốc độ bit Ma trận Q xác
định dựa trên các thí nghiệm trực quan về các thành phân chói và màu
Ma trận lượng tử Q cho các block của ảnh chói
Trang 40
r16 11 10 l6 24 40 51 16]
12 12 14 19 26 58 60 55
4 14 13 16 24 40 57 69 56 14.17 22 29 51 87 80 62
* Chuẩn MPEG bao gồm ba kiểu ảnh khác nhau là ảnh I, ảnh P và ảnh
Các hệ số AC của ảnh I được lượng tử hóa với ma trận lượng tử Intra mà không sử dụng dead-zone Các ảnh P và B được lượng tử hóa bởi ma trận lượng tử đồng đều và thực hiện quy về 0 trong vùng dead-zone (Vùng dead zone là vùng xung quanh giá trị 0 mà dao động trong vùng này chủ yếu do nhiễu gây ra) Lợi ích của dead zone là tạo ra một chuỗi các số 0 tại đầu ra
_MPEG2 quy định ma trận lượng tử không phải intra và cũng cho phép sử
dụng ma trận lượng tử được định nghĩa bởi người dùng