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

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

119 4 0

Đ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

Tiêu đề 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
Tác giả Nguyễn Tuấn Anh
Người hướng dẫn TS. Nguyễn Phương
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Kỹ Thuật Điện Tử
Thể loại Luận Văn Thạc Sĩ Khoa Học
Năm xuất bản 2006
Thành phố Hà Nội
Định dạng
Số trang 119
Dung lượng 6,31 MB

Nội dung

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 2

nghiê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 3

Tô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 4

Lờ ả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 5

15T2.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 6

15T3.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 7

15TUBả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 8

15TUHì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 9

qué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 10

MỞ ĐẦ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 11

thể 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 12

Trong 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 13

giú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 14

CHƯƠ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 15

hó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 16

Hì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 17

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

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 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 19

N 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 20

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 bày trên hình 1.6

Trang 21

Hì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 22

Hì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 23

Hì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 24

1.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 25

Hì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 27

1.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 28

ban đầ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 29

Trong 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 30

Thà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 32

CHƯƠ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 33

sau

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 34

trậ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 35

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

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 36

02 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 37

Hì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 38

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

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 39

thự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 40

101 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:

Ngày đăng: 26/01/2024, 16:13