Đề tài Tìm hiểu về các chuẩn nén video ITU và ứng dụng thử nghiệm

- Ưu điểm o Chương trình đã áp dụng kĩ thuật nén theo chuẩn H.261 với khá đầy đủ các bước. o Thực hiện truyền dữ liệu tới địa chỉ IP qua TCP có thể sử dụng truyền video qua mạng (LAN) giữa các máy với nhau o Có khả năng điều khiển thông số, chất lượng - Nhược điểm o Chưa có bộ lọc và mã hóa Huffman sẽ cho hiệu quả nén cao hơn (hiện tại yêu cầu tốc độ còn quá lớn ~3Mbps, sử dụng mã hóa Huffman sẽ giảm đi rất nhiều ~200-500Kbps) o Giải thuật tìm kiếm 3 bước có hiệu năng chưa cao, nên sử dụng các giải thuật tiên tiến hơn trong việc tìm vectơ chuyển động o Sai số lớn dẫn tới chất lượng hình ảnh chưa cao, đặc biệt trong xử lí ảnh RGB o Tốc độ xử lí còn rất chậm, chưa đáp ứng yêu cầu 30 frame/s

pdf29 trang | Chia sẻ: tienthan23 | Lượt xem: 3454 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu về các chuẩn nén video ITU và ứng dụng thử nghiệm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC - ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO MÔN HỌC Xử lý tín hiệu đa phương tiện Đề tài: Tìm hiểu về các chuẩn nén video ITU và ứng dụng thử nghiệm Giảng viên hướng dẫn : PGS.TS. Nguyễn Thị Hoàng Lan Sinh viên thực hiện : Vũ Anh Vũ 20093331 Nguyễn Hồng Lam 20091535 Đào Hà Thanh 20092378 Lê Vinh Hiển 20091059 Nguyễn Lê Khôi 20091485 Nguyễn Anh Tuấn 20092989 Table of Contents Phân công công việc Phần 1: Tìm hiểu về các chuẩn nén ITU Vũ Anh Vũ 20093331 Tổng quan về các chuẩn nén H.26x Đào Hà Thanh 20092378 So sánh chuẩn H.26x với MPEG Nguyễn Hồng Lam 20091535 Phân tích sơ đồ nén của H.261 và MPEG-1 Phần 2: Thử nghiệm nén theo chuẩn H.261 Lê Vinh Hiển 20091059 Nguyễn Anh Tuấn 20092989 Nén video theo chuẩn H.261 trên Matlab Nguyễn Lê Khôi 20091485 Chương trình nén video theo chuẩn H.261 trên Java Phần I. Tổng quan về chuẩn nén video ITU 1.1. Giới thiệu về tổ chức ITU ITU là Tổ chức viễn thông quốc tế thuộc Liên hiệp quốc, được thành lập vào năm 1865 (với tên gọi tiền thân là Liên minh Điện báo quốc tế - International Telegraph Union). Các hoạt động của ITU bao trùm tất cả các vấn đề thuộc ngành Công nghệ Viễn thông và Thông tin gồm có điều phối các quốc gia trên toàn cầu trong việc chia sẻ và sử dụng các tài nguyên Viễn thông như tần số vô tuyến điện, quỹ đạo vệ tinh, hỗ trợ phát triển cơ sở hạ tầng viễn thông tại các nước đang phát triển và xây dựng các tiêu chuẩn chung trên thế giới về kết nối các hệ thống liên lạc. ITU cũng đang tham gia nghiên cứu và tìm giải pháp cho các thách thức chung trên toàn cầu trong thời đại hiện nay như biến đổi khí hậu và bảo mật, an toàn thông tin. ITU có 3 lĩnh vực hoạt động chính gồm: ITU-T (Viễn thông - Telecom), ITU-R (Thông tin vô tuyến - Radio), ITU-D (Phát triển viễn thông - Telecommunications Development). 1.2. Tổng quan về các chuẩn video Hiện nay trên thế giới có hai tổ chức chịu trách nhiệm chính trong việc đưa ra các chuẩn về nén và giải nén video đó là ITU và ISO. • Tổ chức ITU – International Telecommunications Union o Chuyên tập trung vào các ứng dụng truyền thông với dòng video chuẩn H.26x, với dung lượng lưu trữ nhỏ và hiệu quả cao trong việc truyền tải trên mạng. o Dòng H.26x bao gồm các chuẩn H.261, H.262, H.263, và H.264. • Tổ chức ISO – International Standards Organization o Đưa ra dòng MPEG chủ yếu tập trung phát triển các ứng dụng đa người dùng (phim, video,...). o Dòng MPEG bao gồm các chuẩn MPEG-1, MPEG-2, MPEG- 4. Hai tổ chức này cùng nhau lập nên nhóm JVT-Joint Video Team để đưa ra chuẩn H.264 - là chuẩn nén video mới nhất hiện nay và được xem là dòng nén video thế hệ thứ 3. Quá trình phát triển các dòng video H.26x và MPEG 1.3. Các chuẩn nén video của ITU 1.3.1. Chuẩn H.261 Chuẩn H.261 là chuẩn nén video hoàn chỉnh đầu tiên trên thế giới, được giới thiệu vào năm 1993 bởi tổ chức ITU. H.261 nằm trong chuẩn khuyến nghị H.323 của ITU. Ban đầu H.261 được thiết kế cho mạng ISDN, cho những ứng dụng hội nghị trực tuyến video hai chiều với tốc độ truyền dữ liệu bằng cấp số nhân của 64Kbit/s, độ trễ đầu cuối thấp và bitrate cố định. H.261 hỗ trợ hai độ phân giải là CIF (352x288) và QCIF (176x144), sử dụng kĩ thuật lấy mẫu 4:2:0. Thuật toán nén của chuẩn này không phức tạp do yêu cầu việc nén và giải nén phải được thực hiện theo thời gian thực. 1.3.2. Chuẩn H.263 H.263 là chuẩn mã hóa video/audio do nhóm VCEG (Video Coding Experts Group) thuộc tổ chức ITU đưa ra năm 1998. H.263 được coi là thế hệ tiếp theo của chuẩn H.261, cũng được dùng cho các hội nghị video trực tuyến. Năm 1998, ITU cải tiến chuẩn này và cho ra chuẩn H.263v2 (còn gọi là H.263+ hay H.263 1998). Năm 2000, chuẩn H.263v3 ra đời (còn gọi là H.263++ hay H.263 2000). H.263 được phát triển dựa trên những kinh nghiệm được rút ra từ các chuẩn H.261, MPEG-1 và MPEG-2. Thiết kế cơ bản giống với H.261, cộng thêm nhiều cải tiến về khả năng nén và tính linh hoạt. Những cải tiến của H.263 so với chuẩn H.261: • H.263 có chất lượng video tốt hơn và tốc độ bit (lượng bit lưu trữ cho một đơn vị thời gian) nhỏ hơn. • Mục tiêu của H.263 là truyền được video chất lượng chấp nhận được trên đường truyền điện thoại với tốc độ 28.8Kbps. • H.263 hỗ trợ độ phân giải từ 128x96 đến 1408x1152. • H.263 có những cải tiến trong việc dự đoán các chuyển động và thuật toán giảm dữ liệu dư thừa, phân lớp được tối ưu hơn nhiều so với các chuẩn trước đó. • Vector chuyển động có độ chính xác nửa pixel • Thuật toán mã hóa mới, thay thế RLE và Huffman • Tiên đoán nâng cao: sử dụng 4 blocks 8x8 thay vì 1 block 16x16 => chi tiết hơn • Tiên đoán dựa vào frame trước và sau, tương tự như MPEG Các độ phân giải mà H.263 hỗ trợ 1.3.3. Ưu điểm và nhược điểm của các chuẩn video H.26x H.26x được thiết kế với mục đích sử dụng cho dịch vụ hội nghị trực tuyến, vì thế nó co những ưu điểm phù hợp với nhu cầu trên: • Độ trễ thấp • Mã hóa từng khung hình • Chỉ sử dụng một phần nhỏ trong bộ đệm để làm mượt (gây ra một chút trễ) • Bitrate cố định • Chỉ gửi một số lượng ít các block được mã hóa intra trong mỗi khung, do đó sự biến đổi của tốc độ dữ liệu chỉ phụ thuộc vào nội dung của video Bên cạnh đó, chuẩn nén H.26x cũng có một số mặt hạn chế: • Không được thiết kế cho việc ghi lại và xem lại video. o Không có cách nào để quay ngược hoặc tua nhanh video, vì ta không mã hóa các khung từ toàn bộ các block intra-coded của nó. o Tuy vậy vẫn có thể khắc phục được việc này, nhưng nó sẽ ảnh hưởng đến sự cố định của bitrate, nhất là với mạng ISDN • Hạn chế trong việc xử lý bit lỗi. • Những lỗi có thể phá hủy đoạn video (Ví dụ lỗi giải mã Huffman của GOB). Có thể xử lý bằng cách: o Dừng giải mã, tìm đến GOB tiếp theo để giải mã tiếp. o Intra blocks sẽ dần hồi phục vài giây sau đó. Phần II. So sánh chuẩn nén H.26x và MPEG 2.1. Sơ đồ khối của H.261 và MPEG-1 Nhìn chung, quá trình nén và giải nén của H.261 và MPEG-1 không có sự khác biệt nào đáng kể. 2.1.1. Quá trình nén • Control : điểu khiển tốc độ dòng bit • Memory : Sử dụng để chứa các ảnh được tái tạo (block) cho mục đích của vecto chuyển động để tìm ra P-frame tiếp theo. • Quantization: nén tốt hơn bằng các hệ số DCT (Discrete Cosine Transform) để đạt được chất lượng đòi hỏi. • Entropy: gán những từ mã ngắn hơn cho những sự kiện phổ biến và sử dụng những sự kiện ít phổ biến hơn. Quá trình nén theo chuẩn MPEG-1 • Ảnh đầu vào được đưa vào bộ trừ và bộ đoán chuyển động • Bộ đoán chuyển động sẽ so sánh các khối ảnhmới được đưa vào này với các khối ảnh đã được đưa vào trước đó và được lưu lại như là cácảnh dùng để tham khảo (Reference Picture). Kết quả là bộ đoán chuyển động sẽ tìm ra các khốiảnh trong ảnh tham khảo gần giống nhất với khối ảnh mới này .Motion Vector sẽ đặc trưng cho sự dịch chuyểntheo cả hai chiều dọc và ngang của khối ảnh mới cần mã hoá so với ảnh tham khảo • Bộ đoán chuyển động cũng đồng thời gửi các khối ảnh tham khảo này mà chúng thường đượcgọi là các khối tiên đoán (Predicted macroblock) tới bộ trừ để trừ với khối ảnh mới cần mã hoá(thực hiện trừ từng điểm ảnh tương ứng tức là Pixel by pixel) chúng sẽ đặc trưng cho sự sai khác giữa khối ảnh cần tiên đoán và khối ảnh thực tế cần mã hoá • Bộ bù chuyển động gửi các Predicted macroblock đến bộ trừ để tính sai số dự đoán. • Sai số tiên đoán này sẽ đc biến đổi DCT sau đó lượng tử hóa rồi cùng với vector chuyển động được mã hóa entropy Cái gốc của sự khác nhau giữa MPEG1 và H26X là chủ yếu nằm ở khâu tiên đoán các frame mới và cách thức tính toán sai lệch giữa các frame hiện tại và frame phỏng đoán. Điều này sẽ dẫn tới các khác nhau về chất lượng hình ảnh cũng như bit rates. MPEG1 sử dụng B-picture vì thế sơ đồ mã hóa cần dùng đến 2 frame memory để lưu trữ frame cho việc tiên đoán 2 chiều MPEGx có tốc độ quét,độ phân giải cao hơn h26x cùng thế hệ nên tôc độ truyền tín hiệu cao hơn_bit rate cao hơn, chất lượng hình ảnh tốt hơn, điều này thể hiện trong quá trình lấy mẫu và lượng tử hóa 2.2.2. Quá trình giải nén Quá trình giải nén theo chuẩn H.261 Quá trình giải nén theo chuẩn MPEG-1 • Ngược lại với quá trình nén • Vector chuyển động được tách ra và đưa vào bộ bù chuyển động. • Các hệ số được đưa vào bộ lượng tử hóa ngược và bộ biến đổi ngược IDCT để biến tín hiệu từ miền tần số thành tín hiệu ở miền không gian • Kết hợp với ảnh tham khảo để ra được ảnh gốc. 2.2. So sánh với phương pháp nén theo chuẩn H26X với chuẩn MPEG Các chuẩn H26X: H261 ,H262, H263, H264 ... được đưa ra trong các khuyến nghị của ITU-T. Còn các chuẩn MPEG: MPEG1, MPEG2, MPEG3, MPEG4 - Part2, MPEG4- Part 10 được đưa ra trong các khuyến nghị của ISO. Tuy nhiên, các chuẩn MPEG và H26X lại có quan hệ chặt chẽ với nhau: cả MPEG1 và MPEG2 cùng có nguồn gốc từ chuẩn H261; chuẩn MPEG2 giống chuẩn H262; chuẩn MPEG 4- part10 giống chuẩn H264. 2.2.1. Những điểm giống nhau Các phương pháp nén theo chuẩn MPEG và H26x có nhiều điểm giống nhau. Có thể kể ra một số điểm giống nhau cơ bản như : • Do mắt người có thể phân biệt sự thay đổi về độ sáng của ảnh (brightness) tốt hơn so với sự thay đổi về màu (chromaticity) nên hầu hết các sơ đồ nén theo chuẩn MPEG và H26X đều tiến hành chia bức ảnh thành một thành phần về độ sáng Y (luminance) và hai thành phần về độ màu UV (chrominance). • Các tín hiệu video thành phần được lấy mẫu (samples) và số hoá (digitised) để tạo nên các điểm ảnh rời rạc theo tỷ lệ 4 : 2 : 2, 4 : 2 : 0 và 4 : 1 : 1. • Các sơ đồ nén theo MPEG, H26X đều dùng kỹ thuật subsampling và lượng tử hoá trước khi mã hoá nhằm giảm kích thước bức ảnh đầu vào theo cả chiều ngang và chiều dọc Những điểm giống nhau trong quá trình nén: • Đều tiến hành chia khung hình thành các khối điểm ảnh để việc xử lý các khung hình có thể được thực hiện ở cấp độ block. • Giảm thời gian phụ thuộc giữa các khối trong các khung hình kế tiếp. Điều này thực hiện bằng các kỹ thuật ước lương chuyển động và bù chuyển động . Đối với bất kì khối nào, việc tìm kiếm được thực hiện trong các khung mã hóa trước đó để xác định vector chuyển động mà sau đó được sử dụng bởi bộ mã hóa và giải mã để dự đoán khối chủ đề. • Giảm độ dư thừa không gian trong các khung hình video bằng cách mã hóa một số khối gốc thông qua việc dự báo về không gian, lượng tử hóa, các phép biến đổi và mã hóa dữ liệu ngẫu nhiên, mã hóa độ dài thay đổi. • Giảm không gian dư thừa còn lại tồn tại trong các khung hình video bằng cách mã hóa các khối còn lại tức là sự sai khác giữa các khối tương ứng ban đầu và các khối dự đoán , một lần nữa thông qua biến đổi, lượng tử hóa và mã hóa dữ liệu ngẫu nhiên. 2.2.3. Những điểm khác nhau Các chuẩn H26X thường được tối ưu hóa cho truyền tải video thời gian thực như hội nghi truyền hình, truyền tải video giữa các thiết bị di động. Còn chuẩn MPEG chủ yếu thiết kế cho việc lưu trữ và trình chiếu nên có chất lượng tốt hơn. Những điểm khác nhau trong quá trình nén theo chuẩn H26X và MPEG: • MPEG có tốc độ quét, độ phân giải cao hơn H26X cùng thế hệ nên tốc độ truyền tín hiệu cao hơn_bit rate cao hơn, chất lượng hình ảnh tốt hơn, điều này thể hiện trong quá trình lấy mẫu và lượng tử hóa. • Trong H26X có điều chỉnh tốc độ dòng bít, phù hợp với môi trường truyền dẫn tin mạng viễn thông. Kỹ thuật nén trong hầu hết các phiên bản H26X dựa trên việc nén theo đối tượng, các đối tượng trong các cảnh video được theo dõi riêng rẽ và được nén lại cùng nhau. H26X sử dụng bit rate control dùng để quản lý bộ đệm,kiểm soát quá trình lượng tử hóa. Đây là công đoạn dùng để kiểm soát chất lượng video cũng như bit rate đầu ra thông qua kiểm soát quá trình lượng tử hóa và quản lý dữ liệu nén trong bộ đệm. Chìa khoá để điều khiển tốc độ truyền là trật tự dữ liệu đã nén trong bộ đệm (buffer). Việc nén có thể được tiến hành với việc loại bỏ một vài thông tin đã được lựa chọn. Ảnh hưởng nhỏ nhất đối với chất lượng toàn bộ khung hình có thể đạt được bằng cách bỏ bớt các thông tin chi tiết. Điều này đảm bảo giới hạn tỉ lệ nén dữ liệu trong khi chất lượng của khung hình suy giảm tối thiểu. • Trong H26X, các bộ mã hóa video thường hỗ trợ một khoảng khá rộng tốc độ nén, điều này cho phép những lựa chọn khác nhau giữa chất lượng và băng thông. Phần lớn các phương pháp nén video đều dựa vào việc mã khác nhau giữa các frame (inter-frame). Điều này có nghĩa là, thay vì phải gửi đi tất cả các frame, thì chỉ gửi đi sự sai khác của một frame với frame trước đó. Phương pháp mã hóa này làm việc tốt với những video có những thay đổi hình ảnh ít, tuy nhiên sẽ là ảnh hưởng đáng kể đến chất lượng hình ảnh và băng thông nếu có sự thay đổi lớn giữa các frame hình ảnh. Đa số các chuẩn mã hóa vừa cho phép mã hóa với tốc độ bít cố định (chất lượng hình ảnh thay đổi) hay tốc bít thay đổi (chất lượng hình ảnh ít thay đổi). Các phương pháp mã hóa video nói chung thường kết hợp cảkiểu mã hóa intra-frame và inter-frame. Trong kiểu mã hóa intra-frame, một frame ảnh được chia thành các khối, mỗi khối này được biến đổi thành tập các hệ số thông qua biến đổi Cosin rời rạc. Một nhóm các khối được kết hợp lại thành một thực thể duy nhất (slice), và đôi khi được đóng gói vào một gói. Nếu có lỗi trên đường truyền xảy ra thì có thể cảmột nhóm các khối sẽ bị mất, tạo nên “sọc” trong các ảnh giải mã. Điều này xảy ra bởi vì các hệ số của biển đổi Cosin rời rạc trong mỗi khối được tính toán dựa trên khối đầu tiên trong slice, nếu lỗi làm mất thông tin của khối đầu tiên thì tất cả các khối còn lại trong slice là không xác định. Một vài lỗi có thể làm hỏng cấu trúc của frame, do đó không có khả năng tái tạo lại frame. Với kiểu mã hóa inter-frame (motion based coding), các vector chuyển động được xác định và mã hóa cho mỗi khối. Trong các hệ thống mã hóa kiểu inter-frame, việc mất một frame có thể làm cho các frame theo sau nó trở nên không sử dụng được cho đến khi I-frame tiếp theo được nhận, kết quả là có thể thu được hình ảnh video trắng hay hình ảnh bị đông cứng, chất lượng video bị suy giảm đáng kể. • Trong hầu hết các trường hợp các tiêu chuẩn mã hóa video H26X đều cung cấp khả năng linh động ở cả bộ mã hóa và giải mã cho việc cân bằng giữa chất lượng và tốc độ. Việc hiểu biết rõ ràng về ảnh hưởng của các bộ mã hóa và giải mã video là yếu tố quan trọng góp phần vào việc đánh giá chính xác các ảnh hưởng của mạng đến chất lượng truyền video trên mạng. Tóm lại, chuẩn nén H26X thường có tốc độ mã hoá tín hiệu thấp hơn MPEG (khoảng 1.5 Mbit/s với độ phân giải hình 352 x 288) do dùng chủ yếu trong viễn thông, truyền tải video giữa các thiết bị di động. Trong khi đó, chuẩn MPEG dùng cho thị trường giải trí hay truyền hình chất lượng cao nên có độ phân giải hình cao hơn, và mang lại chất lượng hình ảnh tốt hơn. Phần III. Cài đặt thử nghiệm 3.1. Mô phỏng nén video theo chuẩn H.261 bằng Matlab 3.1.1. Mô hình thực nghiệm: INPUT Video OUTPUTSYSTEM Video Pattern Input H.261 Compression Video Compressed 3.1.2. Kịch bản mô phỏng - Như đã trình bày ở sơ đồ trên, kịch bản thử nghiệm sẽ được xây dựng như sau: • Đầu vào Input sẽ là file video mẫu để nén cho qua khối nén theo chuần H.261 . Ở đây file mẫu đầu vào chúng em đã phân tích thành 181 ảnh liên tục của video, là dạng file .bmp và có độ phân giải là 352x288 • Khối nén theo chuẩn H.261 sẽ được trình bày theo mô hình kết hợp với phần kết quả mô phỏng ở dưới. • Kết quả output: 1 là dòng video mẫu không đổi (tức không cho qua khối nén H.261), 2 là dòng video đã nén bởi H.261 sẽ được so sánh với dòng video mẫu ban đầu. 3.1.3. Kết quả mô phỏng - Sơ đồ cấu trúc nén H.261: - Chương trình mô phỏng gồm có 9 file định dạng code của Matlab, sự tương ứng của nó với chức năng của các khối trong sơ đồ nén sẽ được trình bày dưới đây: o Khối DCT và Quantize: hàm DCT_Quantize trong file DCT_Quantize.m o Khối IDCT và DeQuantize: hàm I_DCT_Quantize trong file I_DCT_Quantize.m o Khối ước lượng chuyển động: có 2 hàm tương ứng với 2 giải thuật tìm kiếm vector chuyển động khác nhau:  Hàm MCPredict_3Step: tìm kiếm vector chuyển động bằng giải thuật 3 bước (Three Step Search-TSS). Hàm này sử dụng hàm TSS để tìm kiếm vector chuyển động cho 1 MacroBlock trong 1 cửa sổ kích thước 30x30  Hàm MCPredict_Full: tìm kiếm vector chuyển động bằng giải thuật tìm kiếm toàn bộ (Full Search) o Khối bù chuyển động: hàm MotionCompenstion o Phần mã hóa Runlength và Huffman: phần này chưa làm được, mới chỉ quét ZigZac, hàm ZigzacScan o Hàm phụ trợ:  Hàm ShowMotionVector: vẽ vector chuyển động vừa tìm ra tường ứng với mỗi MacroBlock của ảnh Frame tham chiếu. o Chương trình chính: file H261_Compress: sử dụng các khối trên mô phỏng lại quy trình nén video H261. - Kết quả mô phỏng: o Ví dụ 1 frame được xem xét đầu tiên: o Ước lượng chuyển động trong frame đó bằng vector chuyển động: ( các nét gạch chính là hướng di chuyển của các MacroBlock 16x16) o So sánh bù chuyển động của giá trị Y giữa 2 frame liên tiếp: o So sánh bù chuyển động của 2 giá trị Cr và Cb giữa 2 frame liên tiếp: o So sánh giữa 2 video trước và sau khi nén H261: 3.2. Chương trình nén video theo chuẩn H.261 trên Java 3.2.3. Sơ đồ mã hóa Trong chương trình chưa có bộ lọc. Đầu vào là ảnh hệ màu YUV 4:2:0 (Chương trình Converter với file video tại “C:\foreman_qcif.y4m”) hoặc RGB24 (Chương trình Converter_RGB với file video tại “C:\ foreman_qcif.y4m.176x144.RGB24.avi” - chương trình chưa hoàn chỉnh). File có độ dài 10 giây, 30 frame/s => tổng số 300 frame Đối với hệ RGB24 có thêm phần chuyển đổi hệ màu RGB sang YUV 4:2:0. Hoạt động của chương trình bên phía server có nhiệm vụ đọc file, nén và truyền TCP: Vòng lặp: 1 Đọc file: 1 frame sẽ có 176x144=25344 byte dữ liệu kênh Y và 88x72=6336 dữ liệu cho mỗi kênh Cb & Cr 2 Trường hợp Intraframe: thực hiện lần lượt a Chia thành các macroblock 16x16 b Thực hiện biến đổi DCT (khối DCT) i hàm DCT() nhận đầu vào là giá trị từng điểm trong macroblock ii trả về mảng phần tử đã biến đổi DCT c Thực hiện lượng tử hóa (khối Q) i hàm Q() nhận đầu vào là mã tương ứng với mỗi kênh (Y=0; Cb & Cr=1) cùng với dữ liệu sau khi biến đổi DCT. Sử dụng bảng lượng tử qtableY hoặc qtableCb, qtableCr tương ứng. ii trả về mảng phần tử đã lượng tử hóa d Thực hiện quét zigzag i Hàm Z() nhận đầu vào là mảng sau khi lượng tử hóa rồi thực hiện sắp xếp lại theo thứ tự zigzag nhờ bảng ztable ii trả về mảng phần tử đã sắp xếp zigzag e Thực hiện mã hóa RLE (khối VLC) i Tách riêng thành phần DC, áp dụng DPCM và lưu sang 1 mảng riêng ii 63 phần tử AC còn lại được mã hóa RLE, đầu ra là mảng byte tương ứng f Truyền dữ liệu dòng qua socket g Chuyển sang bước 4 3 Trường hợp Intraframe: a Ước lượng chuyển động (khối Motion Estimation) i Chia thành từng macroblock 16x16, sử dụng tính toán MAD bằng hàm mad() để tìm ra vectơ chuyển động b Bù chuyển động (khối Motion Compensation) i Sử dụng dữ liệu kênh Y trong mảng nhớ trong bước 4 của vòng lặp trước ii dịch chuyển các khối theo vectơ iii chỉ lấy sự sai khác kênh Y giữa khung hình tham chiếu và khung hình tính toán được (đối với dữ liệu 2 kênh Cb & Cr lấy giá trị vectơ bằng ½ giá trị vectơ của kênh Y và thực hiện tương tự, tuy nhiên trong chương trình không thực hiện bù chuyển động cho 2 kênh Cb & Cr) c Lặp lại các bước từ 2a đến 2g 4 Lưu dữ liệu kênh Y vào mảng nhớ để so sánh trong trường hợp interframe (khối Frame Memory) 3.2.2. Sơ đồ giải mã Việc giải mã được thực hiện bên phía client với các thao tác ngược lại so với bên phía server, chỉ khác là client không thực hiện đọc file mà sau khi nhận dữ liệu sẽ thực hiện chuyển đổi hệ màu từ YUV 4:2:0 sang RGB888 bằng hàm YcbCr2RGB() để hiển thị bằng hàm showimage(). Bên phía server cũng sử dụng hàm này để hiển thị kết quả để so sánh với bên client. Một điểm nữa là khác với bên server đã biết trước số lượng frame thì bên client chỉ liên tục nhận dữ liệu cho đến hết. 3.2.3. Điều khiển thông số Một đặc điểm của chương trình là ta có thể điều khiển các thông số như chất lượng (dựa trên kiểu dữ liệu truyền đi hay giá trị lượng tử hóa), số lượng khung hình dự đoán p-frame từ phía client. • Data Type: giá trị 0 cho kiểu short (2 byte) hay giá trị 1 cho kiểu byte (1 byte). Thông số này liên quan tới giá trị các phần tử bảng lượng tử hóa. Nếu giá trị bảng lượng tử hóa nhỏ, sau khi thực hiện tính toán bằng hàm trong chương trình các giá trị sau khi lượng tử hóa sẽ đủ nhỏ để giới hạn trong khoảng 1 byte [0,255]. Tuy nhiên trường hợp ngược lại khi giá trị vượt quá khoảng này, kiểu short sẽ phải được sử dụng để tránh sự mất mát thông tin quá lớn. Với kiểu short sẽ thực hiện với bảng lượng tử hóa toàn các giá trị 1, khi đó chất lượng ảnh sẽ rất tốt, gần với ảnh gốc nhưng tốc độ xử lí rất chậm. • Q Value: giá trị số thực dương, mặc định là 1. Tăng giá trị lượng tử hóa đồng nghĩa với việc kết quả sau khi lượng tử hóa cũng tăng (quyết định bởi chương trình) giúp làm giảm thiểu sự sai lệch và mất mát nhưng có thể sẽ vượt quá phạm vi thế hiện của kiểu dữ liệu byte. Giá trị từ 1.5-2 cho kết quả chất lượng chấp nhận được. • P-frame: số frame dự đoán (predicted frame) giữa 2 i-frame (intra frame). Chất lượng của p-frame không bằng i-frame do tồn tại sai số, tuy nhiên kích thước giảm đi đáng kể. 3.2.4. Demo chương trình Chương trình Converter Khởi động với server cửa sổ màu ghi, client cửa sổ màu xanh Click Load bên phía server rồi click Wait bên phía client để bắt đầu Ta có thể thấy chất lượng với kiểu dữ liệu byte, giá trị Q là 1 tại i-frame là không tốt, điều này do sai số trong việc tính toán, làm tròn cũng như lưu trữ của java (ví dụ ở các điểm ảnh màu trắng (R=G=B=255) có sự sai lệch rất lớn, điều này là do khi tính toán chỉ cần sai lệch 1 đơn vị ta đã có 0 => 0 & -1 => 255) Kích thước dữ liệu gửi đi có giảm so với không nén: Y=25344 Cb=6336 Cr=6336 (đơn vị: byte) Y=18696 Cb=2296 Cr=1018 Intraframe=true Tại p-frame Chất lượng giảm đi hơn so với i-frame, tuy nhiên kích thước (kênh Y) cũng giảm đi đáng kể, giúp làm tăng tỉ lệ nén Y=8274 Cb=2050 Cr=900 Intraframe=false Tạm dừng bằng click Pause, thay đổi giá trị Q Value thành 2, Submit rồi Continue (quá trình áp dụng cho mọi lần thay đổi thông số:Pause-thay đổi-Submit-Continue) Ta thấy chất lượng có tăng lên, tuy nhiên vấn đề này sinh là một số macroblock có giá trị sai khác hoàn toàn do phạm vi lượng tử hóa vượt quá phạm vi biểu diễn của byte Tuy nhiên kích thước dữ liệu còn lớn, hiệu quả nén thấp Y=24938 Cb=3618 Cr=2278 Intraframe=true Giảm giá trị Q về mức 0.5 Chất lượng ảnh giảm đi đáng kể, tuy nhiên kích thước dữ liệu cũng giảm Y=12770 Cb=1486 Cr=912 Intraframe=true Thay đổi kiểu dữ liệu Data Type về 0 Ta thấy chất lượng rất tốt, không khác nhiều so với ảnh gốc Tuy nhiên do bảng lượng tử lúc này đã gồm toàn giá trị 1 (coi như bỏ qua bước lượng tử hóa) thì kích thước dữ liệu là rất lớn, thậm chí còn lớn hơn cả ảnh không nén (do kích thước kiểu short lớn gấp đôi kiểu byte) Y=40844 Cb=8286 Cr=5848 Intraframe=true Chương trình Converter_RGB Do sai số ngay từ quá trình chuyển đổi hệ màu dẫn tới chất lượng ảnh phía bên server (sau khi thực hiện RGB2YCbCr-DCT-Q-Z-RLE-IRLE-IZ-IQ-IDCT-YCbCr2RGB) đã không có được chất lượng tốt dẫn tới ảnh nhận được bên client cũng không tốt.Ngoài ra thì chương trình vẫn chưa hoàn chỉnh. 3.2.5. Nhận xét - Ưu điểm o Chương trình đã áp dụng kĩ thuật nén theo chuẩn H.261 với khá đầy đủ các bước. o Thực hiện truyền dữ liệu tới địa chỉ IP qua TCP có thể sử dụng truyền video qua mạng (LAN) giữa các máy với nhau o Có khả năng điều khiển thông số, chất lượng - Nhược điểm o Chưa có bộ lọc và mã hóa Huffman sẽ cho hiệu quả nén cao hơn (hiện tại yêu cầu tốc độ còn quá lớn ~3Mbps, sử dụng mã hóa Huffman sẽ giảm đi rất nhiều ~200-500Kbps) o Giải thuật tìm kiếm 3 bước có hiệu năng chưa cao, nên sử dụng các giải thuật tiên tiến hơn trong việc tìm vectơ chuyển động o Sai số lớn dẫn tới chất lượng hình ảnh chưa cao, đặc biệt trong xử lí ảnh RGB o Tốc độ xử lí còn rất chậm, chưa đáp ứng yêu cầu 30 frame/s o Tài liệu tham khảo 1. Video Compression and Communications: From Basics to H.261, H.263, H.264, MPEG4 for DVB and HSDPA-Style Adaptive Turbo-Transceivers – Wiley – 11/2007 2. H.263 - Germain Adriaan – 2/2012 3. Introduction to MPEG; MPEG-1, MPEG-2 and MPEG-4 - Lawrence Harte - 8/2006

Các file đính kèm theo tài liệu này:

  • pdf_123doc_vn_tim_hieu_cac_chuan_nen_itu_0316.pdf