Tuy rằng, hệ thống này không thể so sánh được vớ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
Trang 1-
LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH : KỸ THU T ĐI N TỬ Ậ Ệ
MÃ SỐ : NGUYỄN TUẤN ANH
HÀ N - Ộ I 2006
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
Tai ngay!!! Ban co the xoa dong chu nay!!! 17061131476681000000
Trang 2nghiên cứu, kết quả làm việ ủa c nhân tôi Nếu ph t hiệ ấ ứ ực c á á n b t c s gian lận, man trá nào tôi xin ho n to chịu trách nhiệm à àn
Hà Nội, th g 11 năm 2006 ánNgười th c hiện ự
Nguyễn Tuấn Anh
Trang 3Tôi xin chân th h gàn ử ời l i cảm ơn tới toàn th các th y cô và các b n
bè nđồ g 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 thànàn h 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 h của ìnTiế ỹ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à ỏ tìũ ố y t nh cảm vô cùng trân trọng biết ơn t i cha mẹớ và nh nữ g 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 đề tài ú, gi p đỡ tôi trong những lúc khó khăn tưởng như không thể vượt qua để tôi c thể đạó t được kết quả như ngày
hồm nay
Trang 4Lờ ải c m ơn
Danh mục các b ng ả
Danh mục c c há ình vẽ, đồ ị th
15TMỞ ĐẦU: MỤC ĐÍCH ĐỀ TÀI 715T
15TCHƯƠNG 1 : 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 FPGA15T 11
15T1.1) TỔNG QUAN VỀ NÉN VÀ GIẢI NÉ THÀNH PHẦN ẢNH NỘI N MPEG15T 11
15T1.1.1) Vai trò của nén ảnh15T 11
15T1.1.2) Kỹ thuật nén thành phần ảnh tĩnh trong MPEG15 T 13
15T1.1.2.1) Phép biến đổi DCT.15T 13
15T1.1.2.2) Bộ lượng tử hóa (quantizer):15T 16
15T1.1.2.3) Bộ chuyển đổi thứ tự quét các phần tử của một block15T 18
15T1.1.2.4) Bộ mã hóa Runlength (RLE)15 T 20
15T1.1.2.5) Mã hóa Huffman15T 21
15T1.1.3) Nội dung cơ bản cần thực hiện trong hệ thống15 T 24
15T1.1.3.1) Những chức năng cơ bản của một hệ giải nén ảnh nội MPEG15T 24
15T1.1.3.2) Sơ lược đánh giá yêu cầu tài nguyên hệ thống15T 24
15T1.2) FPGA VÀ ỨNG DỤNG TRONG HỆ TH NỐ G MULTIMEDIA15T 24
15T1.2.1) Sơ lược về ứng dụng của FPGA trong các hệ thống multimedia và DSP:15T 24
15T1.2.1.1) Các thanh ghi dịch15T 25
15T1.2.1.2) Các bộ đếm:15T 25
15T1.2.1.3) Thành phần nhớ15 T 26
15T1.2.1.4) Các thành phần thực hiện các phép toán số học và logic15T 27
15T1.2.1.5) Các bộ đệm một chiều và hai chiều15T 27
Trang 515T2.1) IDCT (DCT): 2915T
15T2.2) GIẢI LƯỢNG TỬ:15T 36
15T2.3) GIẢI QUÉT 4415T 15T2.4) MÃ HÓA V GIẢI M RUNLENGTHÀ Ã 15T 46
15T2.5) MÃ HÓA HUFFMAN 1 5 T 50
15TCHƯƠNG 3 : HỆ THỐNG THỰC TẾ VÀ CÁC KẾT Q UẢ THỰC HIỆN15T 62
15T3.1) ĐÁNH GIÁ VIỆC XÂY DỰNG MỘT HỆ THỐNG TH C T : Ự Ế15T 62
15T3.1.1) Lựa chọn phương thức phù hợp dựa trên chip FPGA sẵn có.15T 62
15T3.1.2) Hệ thống thực tế15T 62
15T3.1.3) Cách thức trình bày nội dung trong chương15T 63
15T3.2) SƠ ĐỒ Ệ H THỐNG GI I NÉN Ả 15T 63
15T3.3) CÁC TH NH PHẦÀ N CƠ BẢN:15T 66
15T3.3.1) Bộ giải mã Huffman15T 67
15T3.3.1.1) Ứng dụng trên chip Spartan 315T 67
15T3.3.1.2) Kết quả tổng hợp15T 68
15T3.3.2) Bộ giải mã RLE15T 69
15T3.3.2.1) Ứng dụng trên chip Spartan 315T 69
15T3.3.2.2) Kết quả tổng hợp15T 69
15T3.3.3) Bộ chuyển đổi dạng quét zigzag thành dạng bình thường15T 70
15T3.3.3.1) Ứng dụng trên chip Spartan 315T 70
15T3.3.3.2) Kết quả tổng hợp15T 71
15T3.3.4) Bộ giải lượng tử15T 71
15T3.3.4.1) Ứng dụng trên chip Spartan 315T 71
15T3.3.4.2) Kết quả tổng hợp15T 72
Trang 615T3.4) CÁC TH NH PHẦN PHỤÀ TR TRONG H TH NG:Ợ Ệ Ố 15T 76
15T3.4.1) Thành phần nhớ đệm FIFO_8:15T 76
15T3.4.2) Bộ nhớ đệm fifo_huffman15T 78
15T3.4.3) Thành phần giao tiếp SRAM:15T 80
15T3.4.4) Thành phần giao tiếp VGA15T 81
15T3.4.5) Thành phần giao tiếp thao tác người sử dụng15T 83
15T3.4.6) Phương pháp chuyển đổi từ dạng block 8x8 thành dạng có thể đưa ra màn hình15T 83
15T3.4.7) Lưu trữ dữ liệu nén trước khi đưa vào giải nén:15T 86
15T3.4.7.1) Quản lý đồng hồ15T 89
15T3.4.7.2) Thanh ghi dịch và bộ so sánh15T 90
15T3.5) KẾT QU MÔ PH NGẢ Ỏ 15T 91
15T3.5.1)Mô phỏng đối với bộ giải mã Huffman15T 91
15T3.5.2) Mô phỏng đối với bộ giải mã RLE15T 92
15T3.5.3) Mô phỏng đối với bộ giải lượng tử15T 92
15T3.5.4) Mô phỏng đối với bộ chuyển zigzag quét thường– 15T 93
15T3.5.6) Thực hiện đối với ảnh thực15T 94
15T3.5.6.1) Ảnh được sử dụng trong thử nghiệm:15T 95
15T3.5.6.2) Các công đoạn t ựh c hiện:15T 95
15T3.5.6.3) Các thông số nén:15 T 96
15T3.6) ĐÁNH GIÁ T NỔ G HỢP H THỐNGỆ 15T 96
15TA PHỤ LỤC15T 100
Trang 715TUBảng 2.3: Quy định mã hóa đối với kích thước DCU15T 53
15TUBảng 2.4: Các từ mã VLC tương ứng với cặp Run/Level cho các block thuộc ảnh IntraU15 T 54
15TUBảng 2.5: Mã hóa Run và Level theo sau mã Escape 59 U15 T 15TUBảng 3.1: Bảng tổng kết các đặc tính cấu trúc của họ FPGA Spartan3.U15T 62
15TUBảng 3.2: Các chân tín hiệu quan trọng của bộ giải mã HuffmanU15T 68
15TUBảng 3.3: Bảng các chân tín hiệu quan trọng của bộ giải mã RLEU15T 69
15TUBảng 3.4: Các chân tín hiệu của bộ giải quét zigzag.U15T 70
15TUBảng 3.5: Các chân tín hiệu của bộ giải lượng tửU15T 71
15TUBảng 3.6: Các chân tín hiệu của bộ IDCT.U15T 73
15TUBảng 3.7: Khoảng thời gian giữa các tín hiệuU15T 83
15TUBả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 U15T 15TUBảng 3.9: Bảng chức năng các giao diện của khốiU15T 89
15TUBảng A.1: Bố trí các chân trên giao tiếp mở rộng A-2 U15T 111
15TUBảng A : Cách thức cấu hình block Ram trong Spartan3 2 U15T 113
R DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 15TUHình 1.1: Sơ đồ khối quá trình mã hóa (nén) ảnh tuần tự dựa trên DCTU15T 12
15TUHình 1.2: Mã hóa và giải mã MPEG2U 15T 13
15TUHì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.U15 T 14
15TUHình 1.4: DCT biến đổi 64 điểm ảnh thành 64 giá trị tổ hợp của chúngU 15T 15
15TUHì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).U15 T 17
15TUHình 1.6: Lượng tử hóa thích ứng theo phân bố Gauss.U15T 18
15TUHình 1.7: Phân bố xác suất các hệ số 8 x 8 DCT (frame)U15T 19
15TUHình 1.8: Phân bố xác suất các hệ số 8 x 8 DCT (field)U15T 19
15TUHình 1.9: Quét zigzag 20 U15 T 15TUHình 1.10: Histogram các hệ số DCT tính theo giá trị tuyệt đốiU15T 21
15TUHình 1.11: Histogram các runlength 0U15T 22
15TUHình 1.12: Ví dụ về tạo cây mã hóa Huffman.U15T 23
15TUHình 2.1: Biểu diễn một hệ thống 2D-IDCT xây dựng dựa trên hệ 1D-IDCTU15T 31
Trang 815TUHình 2.5: Các thành phần đầy đủ của một bộ giải lượng tử hóa trong MPEGU15T
43
15TUHình 2.6: quét phần tử theo phương pháp zigzagU 15 T 45
15TUHình 2.7: quét phần tử theo phương pháp luân phiên (MPEG2)U15 T 45
15TUHình 2.8: Sơ đồ quá trình thực hiện mã hóa runlength (rle)U15T 47
15TUHình 2.9: Sơ đồ quá trình thực hiện giải mã RLEU15T 49
15TUHì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.U15T 50
15TUHình 2.11: Sơ đồ mã hóa HuffmanU15T 60
15TUHình 2.12: Sơ đồ giải mã HuffmanU15T 61
15TUHình 3.1: Sơ đồ toàn bộ hệ thống giải nén JPEGU15 T 64
15TUHình 3.2: Cây thư mục các thành phần của hệ giải mã HuffmanU15 T 67
15TUHình 3.3: Thành phần bộ đệm fifo giữa thành phần đọc dữ liệu từ flash và huff_decU15 T 76
15TUHình 3.4: Sơ đồ cài đặt của một FIFO với xung đồng hồ vào/ra độc lập.U15T 77
15TUHình 3.5: giản đồ thời gian thể hiện quá trình ghi lên FIFOU15 T 77
15TUHình 3.6: giản đồ thời gian thể hiện quá trình đọc từ fifo.U15T 77
15TUHình 3.7: Chân giao tiếp của bộ đệm fifo giữa bộ giải mã Huffman và bộ giải mã rle.U15 T 78
15TUHình 3.8: Cài đặt bộ đệm fifo_huffmanU15T 79
15TUHình 3.9: Giản đồ thời gian thể hiện chức năng chân prog_full (với giá trị ngưỡng = 6)U15T 79
15TUHình 3.10: Giản đồ thời gian thể hiện chức năng chân prog_empty (với giá trị ngưỡng = 3)U15T 80
15TUHình 3.11: Cấu trúc của thành phần giao tiếp RAM 81 U15T 15TUHình 3.12: Dạng tín hiệu VGAU15T 82
15TUHình 3.13: Khoảng thời gian giữa các tín hiệuU15T 82
15TUHình 3.14: Dạng block 8x8 trong ảnh giải nén.U15 T 85
15TUHình 3.15: Dạng quét tín hiệu của màn hìnhU15T 86
15TUHình 3.16: Phân bố dữ liệu trong bộ nhớ FlashU15T 87
15TUHình 3.17: Giao tiếp chân giữa FPGA và flash cấu hình ở trạng thái đọc dữ liệu người dùng.U15 T 88
15TUHình 3.18: Cấu trúc thành phần của bộ gia diện flashU1 5T 88
15TUHình 3.19: Giản đồ tín hiệu tại các chân của bộ đọc flash.U15T 90
15TUHình 3.20: Tín hiệu báo tìm thấy đoạn dữ liệu trong flashU15T 90
15TUHình 3.21: Tín hiệu báo vừa hoàn thành đọc hết một byte.U15T 90
Trang 9quét thông thường.U15 T 93
15TUHình 3.26: Kết quả mô phỏng bộ IDCT.U15T 94
15TUHình 3.27: Ảnh thử nghiệm quá trình mã hóa và giải mã.U15T 95
15TUHì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 FPGA).U15T 101
15TUHình A.2: Bố trí các thành phần linh kiện trên board thử nghiệm XC3S200.U15T 108
15TUHình A.3: Board mạch thử nghiệm spartan 3U15T 109
15TUHình A.4: Bố trí các chân giao tiếp ra của khe mở rộng trên board spartan-3U15T 110
15TUHình A.5: Hướng vào ra dữ liệu của Block RAM spartan3U15T 112
15TUHình A.6: Cấu hình cho Block RAM hoạt động theo chế độ Dual Port hay single Port.U15T 113
15TUHình A.7: Cách thức bố trí RAM trong 1 Block RAM.U15T 114
15TUHình A.8: Bố trí block RAM trong FIFO.U15 T 115
15TUHình A.9: Sơ đồ giao tiếp bộ nhân cứng.U15T 115
Trang 10MỞ ĐẦU: MỤC ĐÍCH ĐỀ TÀI
Hiện nay, công nghệ điện tử đã phát triển ở trình độ cao và đạt được nhiề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, tinh 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ế giớ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ể tận dụng được hàm lượng chất xám cao, có thị trường tương đối lớn và mức độ đầu tư vừa phải
Hiện nay, các sản phẩm dạng cấu trúc chức năng tùy biến được đang có thị 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 FPGA 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 12Trong luận văn này thực hiện một hệ thống giải nén thành phần ảnh tĩnh MPEG trên FPGA Spartan 3 Tuy rằng, hệ thống này không thể so sánh được vớ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 XC3S400 và một chip 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 các chip FPGA và CPLDnó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ênchip 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ế
- Xây dựng một hệ thống rút gọn trên board phát 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ó khả năng thay đổi linh hoạt)
Trang 14CHƯƠNG 1 : 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
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 tin cần để biểu diễn ảnh
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 dụng nhiều nhất trong nhiều hệ thống khác nhau, ví dụ như nén JPEG, MPEG1, 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ấ sơ đồ ựy th c hiện cơ bản của một quá ìntr h 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, lượng tử hóa, Huffman và mã
Trang 15hóa 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 16Hình 1.2: Mã hóa và giải mã MPEG2
1.1.2) Kỹ thuật nén thành phần ảnh tĩnh trong MPEG
1.1.2.1) Phép biến đổi DCT
Đây được coi là thành phần yêu cầu nhiều tài nguyên hệ thống nhất, và thường là nút cổ chai trong quá trình nén hoặc giải nén JPEG
Trang 17Hì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
Trang 18Hì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 trận 8x8 được biến đổi DCT
Phép toán cơ bản biểu diễn DCT:
N
q n M
p m q
c p c XN
Phép toán ngược lại với DCT là IDCT Công thức tính IDCT là:
Trang 19N n mn pq
N
q n M
p m q
c p c XN
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à:
ij ijquant
Trang 20Tuy 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 bày trên hình 1.6
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 phần tử của một block
Quá trình DCT thực hiện việc chuyển đổi thành phần ả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ệ số 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 dọc Hình 1.5 biểu diễn phân bố xác suất xuất hiện các hệ số DCT khác 0
Trang 22Hình 1.7: Phân bố xác suất các hệ số 8 x 8 DCT (frame)
Đó 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 giá trị 0 nằm 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 23Hình 1.9: Quét zigzag Công thức cơ sở của phép quét zigzag là:
) ( , , j X k l index j
X = = 5) (1
Phép chuyển đổi trên phải đảm bảo tính chất ánh xạ 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’, và vì trong JPEG chỉ 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
Ví dụ: 0 4 0 0 0 0 0 6
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 là dựa trên phân 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 chất prefix (tức là các
từ mã dà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
Hình 1.10: Histogram các hệ số DCT tính theo giá trị tuyệt đối
Hình 1.11 cho thấy xác suất xuất hiện khác nhau của các dãy số không liên tiếp (với số số 0 khác nhau)
Trang 25Hình 1.11: Histogram các runlength 0 Như vậy, sau biế đổn i DCT, t h chất phân bố c suất của c c gi trịín xá á á khác nhau đ hay đổã t 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 giá tr r íị ất t khi xuấ ệt hi n
Nguyên tắc mã hóa Huffman đượ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ị phân 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) Tạo 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 Huffman đơ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%
-Hình 1.12: Ví dụ về tạo cây mã hóa 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 MPEG
- Phần này đã được trình bày ở chương trước nên không nhắc lại
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 phần tử
Vì họ 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.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 sẵn có và các bộ nhớ tích hợp sẵn Ví dụ họ Spartan3 XC3S400 chứa tới 16
bộ nhân 18x18 và 16 bộ RAM tích hợp sẵn
1.2.1.1) Các thanh ghi dịch
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ànhphầ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ự
- Sử dụng LUT
Ngoài ra, còn có thể sử dụng các bộ nhớ ROM 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 sau:
- Bộ nhớ đệm dữ liệu (ví dụ như nhớ đệm giữa vào và ra màn hình) Trong bài sử dụng RAM ngoài có sẵn trên board
- Bộ nhớ FIFO, nhằm điều tiết giữa các vùng có tốc độ xử lý khác nhau Trong bài sử dụng hai bộ nhớ đệm dạng này là bộ nhớ đệm FIFO giữa bộ đọc
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) Các thành phần 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 phần 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.5) 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 ngượ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ỡ rố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
đồng h c n tíồ ầ để nh toán một điể ảm nh (liên hệ với tốc độ thực hiện) và mức
độ 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 tính IDCT:
) 1 2 ( cos 4
) ( ) (
M m
N n mn pq
N
q n M
p m q
c p c XN
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:
16 1)
2 ( cos
16 1)
2 ( cos
4( )
) (
7 0
7 0
q n p
m q
c p c XN XC
pq
+ +
=∑∑
ππ
(2.2) 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 phần dòng và cột: Y = CP t
P.X.C Trong đó thành phần C được viết dưới dạng:
M
hang tri
vi tri
vi K
C
2
_ _ ).
1 cot _ _ 2 ( cos
vi K
C t
2 1). _ _cot.
_ _ 2 ( cos
P là ma trận chuyển vị của ma
Trang 34trận C.
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à:
0,3535 0,3535 0,3535 0,3535 0,3535 0,3535 0,3535 0,3535 0.4904 0.4157 0,2778 0,0975 0,0975 0,2778 0.4157 0.4904 0,4619 0,1913 0,1913 0,4619 0,4619 0,1913 0,1913 0,4619 0.4157 0,0975 0.4904 0,2778 0,2778 0.4904 0,0975
27246 32138
32138 27246
18205 6393
12540 30274
30274 12540
12540 30274
30274 12540
18205 32138
6393 27246
27246 6393
32138
1820523170 23170 23170 23170 23170 23170 23170 23170
27246 6393
32138 18205
18205 32138
6393 27246
30274 12540
12540 30274
30274 12540
12540 30274
32138 27246
18205 6393
6393 18205
27246 32138
23170 23170
23170 23170
23170 23170
23170 23170
Tương tự, có thể nhận được ma trận hoán vị Ct
Trang 3518205 23170
27246 30274
32138 23170
18205 30274
32138 23170
6393 12540
27246 23170
27246 30274
6393 23170
32138 12540
18205 23170
32138 12540
27246 23170
18205 30274
6393 23170
32138 12540
27246 23170
18205 30274
6393 23170
27246 30274
6393 23170
32138 12540
18205 23170
18205 30274
32138 23170
6393 12540
27246 23170
6393 12540
18205 23170
27246 30274
32138 23170
Nếu có ma trận giá trị các điểm ảnh như sau:
67 66 65 64 63 62 61 60
57 56 55 54 53 52 51 50
47 46 45 44 43 42 41 40
37 36 35 34 33 32 31 30
27 26 25 24 23 22 21 20
17 16 15 14 13 12 11 10
07 06 05 04 03 02 01 00
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
x x x x x x x x
X
Vậy thì ta nhận được các giá trị sau lần chuyển đổi 1D-IDCT thứ nhất:
07 06
05 04
03 02
01 00
05 04
03 02
01 00
05 04
03 02
01 00
05 04
03 02
01 00
05 04
03 02
01 00
05 04
03 02
01 00
05 04
03 02
01 00
05 04
03 02
01 00
18205 23170
27246 30274
32138 23170
18205 30274
32138 23170
6393 12540
27246 23170
27246 30274
6393 23170
32138 12540
18205 23170
32138 12540
27246 23170
18205 30274
6393 23170
32138 12540
27246 23170
18205 30274
6393 23170
27246 30274
6393 23170
32138 12540
18205 23170
18205 30274
32138 23170
6393 12540
27246 23170
6393 12540
18205 23170
27246 30274
32138 23170
x x
x x
x x
x x
Z
x x
x x
x x
x x
Z
x x
x x
x x
x x
Z
x x
x x
x x
x x
Z
x x
x x
x x
x x
Z
x x
x x
x x
x x
Z
x x
x x
x x
x x
Z
x x
x x
x x
x x
Z
− +
− +
− +
−
=
+
− +
− +
+
−
=
− +
−
− +
+
−
− +
=
+ +
+
−
−
− +
+
=
+ +
+ +
+ +
+
=
(2.6)
Tương tự, có thể nhận được:
Trang 3602 01
12
11
22 21
32 31
32 31
) 32138 27246
18205 6393
( ) 12540 23170
30274 23170
(
22 21
) 27246 6393
32138 18205
( ) 30274 23170
12540 23170
(
12 11
) 18205 32138
6393 27246
( ) 30274 23170
12540 23170
(
02 01
) 6393 18205
27246 32138
( ) 12540 23170
30274 23170
3 1
6 4
2 0
3 1
6 4
2 0
3 1
6 4
2 0
3 1
6 4
2 0
x x
x x
x x
x x
Z
P P
x x
x x
x x
x x
Z
P P
x x
x x
x x
x x
Z
P P
x x
x x
x x
x x
k k
k k
k k
k
k k
k k
k k
k k
k
k k
k k
k k
k k
k
k k
k k
k k
k k
− +
− +
− +
−
− +
=
+
=
+ +
+ +
+ +
+ Số XR 00 R được nhân với các hệ số thuộc hàng đầu tiên của ma trận C Số
XR 01 R được nhân với các hệ số thuộc hàng thứ hai của ma trận C Số XR 0i R được nhân với các hệ số thuộc hàng thứ i 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 ZR 0(0-7) R đượ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 tính toán 1D-IDCT đầu 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 = CP
70 61 62 63 64 65 66 67
60
57 56 55 54 53 52 51 50
47 46 45 44 43 42 41 40
37 36 35 34 33 32 31 30
27 26 25 24 23 22 21 20
17 16 15 14 13 12 11 10
07 06 05 04 03 02 01 00
z z z z z z z
z
z z z z z z z z
z z z z z z z z
z z z z z z z z
z z z z z z z z
z z z z z z z z
z z z z z z z z
Z
Trang 38X X
X X
X X
X X
X
X X
X X
X X
X X
X
X X
X X
X X
X X
X
X X
X X
X X
X X
X
X X
X X
X X
X X
X
X X
X X
X X
X X
X
X X
X X
X X
X X
X
X X
X X
X X
X X
X
Z Z
Z Z
Z Z
Z Z
Y
Z Z
Z Z
Z Z
Z Z
Y
Z Z
Z Z
Z Z
Z Z
Y
Z Z
Z Z
Z Z
Z Z
Y
Z Z
Z Z
Z Z
Z Z
Y
Z Z
Z Z
Z Z
Z Z
Y
Z Z
Z Z
Z Z
Z Z
Y
Z Z
Z Z
Z Z
Z Z
Y
7 6
5 4
3 2
1 0
7
7 6
5 4
3 2
1 0
6
7 6
5 4
3 2
1 0
5
7 6
5 4
3 2
1 0
4
7 6
5 4
3 2
1 0
3
7 6
5 4
3 2
1 0
2
7 6
5 4
3 2
1 0
1
7 6
5 4
3 2
1 0
0
6393 12540
18205 23170
27246 30274
32138 23170
18205 30274
32138 23170
6393 12540
27246 23170
27246 30274
6393 23170
32138 12540
18205 23170
32138 12540
27246 23170
18205 30274
6393 23170
32138 12540
27246 23170
18205 30274
6393 23170
27246 30274
6393 23170
32138 12540
18205 23170
18205 30274
32138 23170
6393 12540
27246 23170
6393 12540
18205 23170
27246 30274
32138 23170
− +
− +
− +
−
=
+
− +
− +
+
−
=
+ +
−
− +
+ +
+
−
− +
=
+ +
+
−
−
− +
+
=
+ +
+ +
+ +
+
=
(2.8)
Hình 2.3: Khâu tính toán 1D-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 FPGA họ Spartan3 đượ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 lcác s ố được biểu diễn trong ma trận hệ ố đ tr h b y ở trên C c hệ ố được s ã ìn à á slưu dướ ại d ng 16 bit
- Các thanh ghi dịch gi tr á ịđược đồng bộ ới c c hệ ố o Đối với mỗi v á s và
b Dộ CT 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 t tần ử rong 8 dãy hệ ố s vào 8 bộ hân 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ộ hân cứng, nên có th sá n ể ử d n áụ g 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 8x8 ứng với mỗi khối DCT 8x8 Với mỗi hệ số 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 1 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 40101 120 121 103 87 78 64 49
92 113 104 81 64 55 35 24
77 103 109 68 56 37 22 18
62 80 87 51 29 22 17 14
56 69 57 40 24 16 13 14
55 60 58 26 19 14 12 12
16 51 40 24 16 10 11 16
Và ma trận lượng tử Q cho các block của ảnh màu
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 66 47
99 99 99 99 99 56 26 24
99 99 99 99 66 26 21 18
99 99 99 99 47 24 18 17
Việc tính toán hệ số sau lượng tử đối với JPEG được tính theo công thức: