.9 Sơ đồ biến đổi ngược Wavelet rời rạc 2-D

Một phần của tài liệu Các kĩ thuật nâng cao chất lượng và nén ảnh (Trang 40)

Trong trường hợp này, các bộ lọc cho phân chia và khơi phục nói chung có các độ dài lẻ khác nhau. Bằng việc chèn các chữ số khơng, bốn bộ lọc có thể mở rộng theo cách để ta có được cùng độ dài chẵn.

2.1.7 Các tiêu chuẩn nén ảnh

Các tiêu chuẩn quan trọng bao gồm:

- JPEG (Joint Photographic Experts Group: Liên hiệp các nhóm chuyên gia về hình ảnh): dùng cho nén ảnh tĩnh, phát triển bởi sự kết hợp giữa ITU-TS và ISO. JPEG là định dạng nén ảnh có tổn thất và được ứng dụng trong nhiều lĩnh vực như lưu trữ ảnh, Fax màu, truyền ảnh báo chí, ảnh cho y học, camera số... Kĩ thuật này có thể đạt được hệ số nén hơn 80 lần so với ảnh gốc.

- JPEG2000: dùng cho nén ảnh tĩnh, là định dạng nén ảnh có tởn thất, có thể nén nhỏ từ 100-200 lần mà hình ảnh khơng sai sót bao nhiêu so với hình ảnh gốc, được ứng dụng vào các hệ xử lí và phân phối.

- MPEG-1, MPEG-2, MPEG-4, MPEG-7: dùng cho nén ảnh động, do Ủy ban ISO IEC/JTC1/SC29 – /WG11 phát triển cho mã hóa kết hợp giữa video và audio. MPEG- 1 dùng cho nén ảnh động có kích thước 320x240 và tốc độ bit 1-1,5 Mbit/s đối với ghi hình trên băng từ và đĩa quang (CD), 250 Kbps đối với mã hóa audio stereo. MPEG-2 được sử dụng cho các ứng dụng cao hơn với tốc độ ≤ 10 Mbit/s cho viễn thông, truyền thông thông thường và truyền hình có độ phân giải cao (HDTV). MPEG-4 mã hóa video/audio với tốc độ thấp (khoảng 9-14 Kbps). MPEG-7 là chuẩn mô tả thông tin của rât nhiều loại đa phương tiện.

- H.261: do Nhóm nghiên cứu XI phát triển và được biết rộng rãi như tiêu chuẩn mã hóa video cho các dịch vụ nghe nhìn tốc độ n x 64Kbps.

- ITU-TS H.263 cho các ứng dụng điện thoại thấy hình với tốc độ dưới 64Kbps.

2.2. Giới thiệu JPEG và JPEG20002.2.1 JPEG2.2.1 JPEG2.2.1 JPEG 2.2.1 JPEG

2.2.1.1 Giới thiệu sơ lược

JPEG (Joint Photographic Experts Group) là tên một tổ chức nghiên cứu về các chuẩn nén ảnh (trước đây là ISO) được thành lập vào năm 1982. Năm 1986, JPEG chính thức được thiết lập nhờ sự kết hợp giữa nhóm ISO/IEC và ITU. Đến năm 1994,

JPEG được khẳng định với tiêu chuẩn ISO 10918-1. JPEG là định dạng nén ảnh có tổn thất. Tiêu chuẩn này có có thể được ứng dụng trong nhiều lĩnh vực: lưu trữ ảnh, Fax màu, truyền ảnh báo chí, ảnh cho y học, camera số... Nó còn có các định dạng mở rộng khác như .jpg, .jpeg, .jpe, .jfif và .jif. Kỹ thuật này có thể đạt được hệ số nén hơn tám mươi lần so với ảnh gốc. Tuy nhiên, hệ số nén càng cao thì hình ảnh sau khi giải nén sẽ càng bị sai lệch nhiều hơn, nó chỉ gần giống như ban đầu chứ khơng đạt hồn tồn như hình ảnh gốc.

Tiêu chuẩn JPEG được định ra cho nén ảnh tĩnh đơn sắc và màu. Tuy nhiên nó cũng được sử dụng cho nhiều ứng dụng với ảnh động bởi vì nó cho chất lượng khôi phục khá tốt và ít tính toán hơn so với nén MPEG. Nén JPEG có thể thực hiện bởi bốn mode mã hóa: mã hóa tuần tự, mã hóa lũy tiến, mã hóa không tổn thất và mã hóa phân cấp. Mã hóa không tổn thất không sử dụng cho video động bởi vì tỉ lệ nén của nó không đủ cao. Khai triển DCT được chọn là kĩ thuật then chốt trong JPEG vì nó cho ảnh nén chất lượng tốt nhất tại số bit thấp nhất và giải thuật chuyển đổi nhanh, dễ dàng thực hiện bằng phần cứng.

Định dạng nén JPEG được sử dụng trong tất cả máy ảnh kỹ thuật số có kích thước rất nhỏ nên thường chụp được nhiều ảnh trên một thẻ nhớ, JPEG dễ hiển thị trên màn hình, ảnh có thể chuyển nhanh qua thư điện tử (dung lượng từ 300KB đến 700KB), ảnh JPEG chất lượng cao có dung lượng khoảng vài MB hay lớn hơn.

2.2.1.2 Sơ đờ khới

Hình 2.10 Sơ đồ khối bộ mã hóa và giải mã JPEG dựa trên biến đởi DCT

Bước đầu tiên trong xử lí nén JPEG là chia nhỏ ảnh vào thành các khối pixel khơng chồng lấn có kích thước 8x8. Chúng tạo thành chuỗi nhỏ được xử lí từ trái qua phải, từ trên xuống dưới. Khi mỗi khối 8x8 hoặc ảnh con được xử lí thì 64 pixel của nó bị dịch chuyển -2m-1 mức. trong đó 2m là số mức xám trong ảnh và biến đổi cosin rời rạc 2 chiều của nó được tính tốn. Các hệ số kết quả sau đó được chuẩn hóa và lượng tử hóa. Sau khi các hệ số DCT của mỗi khối được lượng tử hóa, các phần tử lượng tử

được sắp xếp lại rồi mã hóa kí hiệu. Chuẩn JPEG cung cấp các bảng mã hóa Huffman AC và DC.

Bộ giải mã thì ngược lại, ảnh nén lần lượt được giải mã hóa, giải lượng tử, biến đổi DCT ngược và ghép các khối 8x8 lại thành ảnh khôi phục.

2.2.2 JPEG2000

2.2.2.1 Giới thiệu sơ lược

JPEG2000 không phải là một chuẩn mới hoàn toàn mà được phát triển chuẩn JPEG đã có. JPEG2000 dùng cho nén ảnh tĩnh, là định dạng nén ảnh có tổn thất, được ứng dụng vào các hệ xử lí và phân phối. Với JPEG2000, kỹ thuật xử lý hình ảnh sẽ đạt được những kết quả rất ngoạn mục vì có thể nén nhỏ từ 100-200 lần mà hình ảnh khơng sai sót bao nhiêu so với hình ảnh gốc.

JPEG2000 là hệ thống mã hóa hình ảnh mà kỹ thuật nén dựa trên kỹ thuật sóng ngắn. Là một tiện ích tốn học cho phép mơ tả bằng một cơng thức đơn giản những gì xảy ra tại một thời điểm chính xác của tín hiệu. Với một chuỗi sóng ngắn, chỉ cần biểu diễn bằng vài công thức, đường biểu diễn không đều mà khơng cần phải mơ tả đặc tính của từng điểm một. Và lẽ dĩ nhiên sẽ rất đắc lực khi phân tích tỉ mỉ một file ảnh kỹ thuật số.

2.2.2.2 Sơ đờ khới bộ mã hóa và bộ giải mã JPEG 2000

Hình 2.11 biểu diễn hệ thống mã hóa JPEG 2000 đơn giản.

Bước đầu tiên của q trình mã hóa, như trong chuẩn JPEG, là để dịch chuyển 2m-1 mức các pixel của ảnh, trong đó 2m là số mức xám trong ảnh. Sau đó, biến đổi wavelet rời rạc 1 chiều các hàng và cột của ảnh có thể được tính tốn. Ngoài việc ảnh vào được chia thành các dải băng con và được xử lí lần lượt thì quá trình mã hóa và giải mã JPEG2000 tương đối giống với JPEG. Chỉ có sự khác biệt là phép biến đổi sử dụng ở đây là biến đổi wavelet chứ khơng phải là DCT.

2.2.3 So sánh JPEG và JPEG2000

– JPEG2000 đưa ra cả hai kỹ thuật nén có tổn thất và khơng tổn thất theo cùng một cơ chế mã hố:

JPEG2000 thực hiện tất cả các dạng thức của JPEG chỉ bằng một cơ chế mã hố duy nhất. Có thể thấy rằng JPEG2000 có tính mềm dẻo hơn JPEG. Hơn thế, chúng ta đã thấy rằng tất cả các phương pháp thiết kế cho chuẩn JPEG2000 đều ưu việt và có nhiều tính năng hơn so với JPEG; ngồi ra những thống kê và thực tế cho thấy với cùng một tỷ lệ nén và một loại ảnh thì ảnh được nén bởi JPEG2000 hầu như ln có chất lượng tốt hơn so với JPEG. Chúng ta xem xét hai ảnh trên hình 2.12 để thấy rõ điều này.

Hình 2.12 So sánh JPEG, JPEG2000

– Trong dạng thức nén có tổn thất thơng tin, JPEG2000 có thể đưa ra tỷ lệ nén cao hơn nhiều so với JPEG. Các phần mềm nén ảnh JPEG hiện tại (kể cả photoshop) cũng chỉ thiết kế để có thể nén ảnh được với tỷ lệ 40:1 nhưng với JPEG2000 thì tỷ lệ nén có thể lên tới 200:1. Theo cơng thức tính PSNR trong đơn vị dB, ta có b là số bít dùng biểu diễn một pixel trên ảnh gốc.

PSNR(dB) = – 20 log[RMSE/2b – 1] (2.7)

Với hai ảnh ở hình 2.12, so sánh về tham số PSNR cho trên bảng 2.1. Để có thể so sánh dễ dàng hơn, ta xét ảnh được nén với các tỷ lệ khác nhau (đo lường bởi hệ số bit/pixel hay bpp). Tất cả các số liệu trên bảng đều cho thấy JPEG2000 nén ảnh tốt

hơn là JPEG; hơn thế hệ số PSNR mà chúng ta xét trong bảng được đo trong hệ đơn vị logarit.

Bảng 2.1 Số bit mỗi pixel

Bit per pixel 0,125 0,50 2,00

Ảnh 1 theo Jpeg 24,12 31,17 35,15

Ảnh 1 theo Jpeg2000 28,12 32,95 37,35

Ảnh 2 theo Jpeg 22,6 28,92 35,99

Ảnh 2 theo Jpeg2000 24,85 31,13 38,80

Hình 2.13 Tỉ lệ nén của JPEG2000 và JPEG

– Chuẩn nén ảnh JPEG2000 có thể hiển thị được các ảnh với độ phân giải và kích thước khác nhau từ cùng một ảnh nén. Với JPEG thì điều này là khơng thể thực hiện được. Sở dĩ có điều này là do JPEG2000 sử dụng kỹ thuật phân giải ảnh và mã hoá đính kèm.

Tính năng này là một lợi thế đặc biệt quan trọng của JPEG2000, trong khi JPEG cũng như các chuẩn nén ảnh tĩnh trước đây phải nén nhiều lần để thu được chất lượng với từng lần nén khác nhau thì với JPEG2000 ta chỉ cần nén một lần cịn chất lượng ảnh thì sẽ được quyết định tuỳ theo người sử dụng trong quá trình giải nén ảnh theo

JPEG2000. Một tính năng ưu việt nữa của JPEG2000 là tính năng mã hố ảnh quan trọng theo vùng (ROI). Chất lượng của toàn bộ ảnh có thể được thấy rõ trong hình.

Hình 2.14 Minh hoạ tính năng ROI

Như chúng ta thấy trên hình 2.14, chất lượng của vùng ảnh được lựa chọn tăng cao hơn khi vùng đó được áp dụng phương pháp ROI.

– JPEG2000 cịn có một khả năng đặc biệt ưu việt hơn so với JPEG, đó chính là khả năng vượt trội trong khơi phục lỗi. Đó là khi một ảnh được truyền trên mạng viễn thơng thì thơng tin có thể bị nhiễu, với các chuẩn nén ảnh như JPEG thì nhiễu này sẽ được thu vào và hiển thị, tuy nhiên với JPEG2000, do đặc trưng của phép mã hố có thể chống lỗi, JPEG2000 có thể giảm thiểu các lỗi này tới mức hầu như khơng có.

2.3 Kết luận chương 2

Chương này đã giới thiệu cho ta một số vấn đề liên quan đến kĩ thuật nén ảnh và giới thiệu và so sánh hai chuẩn nén ảnh phổ biến hiện nay JPEG và JPEG 2000. Tận dụng các ưu điểm của hai kĩ thuật nén ảnh này, người ta đã sử dụng chúng rất nhiều trong các ứng dụng không dây. Ngoài hai chuẩn này ra, nếu quan tâm ta có thể tìm hiểu về một số kĩ thuật nén ảnh khác mới xuất hiện gần đây như định dạng Windows Media Photo (HD Photo), chương trình My Photo Zip dùng cho nén ảnh đờ họa.

CHƯƠNG 3

CHƯƠNG TRÌNH MƠ PHỎNG

Trong hai chương trên, ta đã đề cập đến các kĩ thuật nâng cao chất lượng ảnh và nén ảnh và đã nhận thấy được tầm quan trọng của vấn đề này. Ngày nay, khi mà khoa học kĩ thuật và công nghệ ngày càng phát triển thì người ta càng nghĩ đến chuyện làm thế nào để đưa các vấn đề trên ứng dụng vào thực tiễn. Vì vậy, cần thiết phải xây dựng được chương trình mô phỏng cho các vấn đề này. Đồ án này xây dựng chương trình mô phỏng bằng ngôn ngữ Matlab.

3.1 Ngôn ngữ Matlab

Hiện nay, có rất nhiều ngôn ngữ lập trình đang được quan tâm và ứng dụng. Các ngôn ngữ lập trình như Basic, Pascal, C, Java... được sử dụng rộng rãi trong nhiều lĩnh vực. Trong số đó, Matlab là một ngôn ngữ rất mạnh được sử dụng rộng rãi trong nhiều lĩnh vực. Nó dễ dàng sử dụng hơn các ngơn ngữ khác. Matlab cho phép tính tốn số với ma trận, vẽ đồ thị hàm số hay biểu đồ thơng tin, thực hiện thuật tốn, tạo các giao tiếp người dùng và liên kết với những chương trình máy tính viết trên nhiều ngơn ngữ lập trình khác. Phần mềm MATLAB cịn được trang bị thêm thư viện cho các lĩnh vực ứng dụng rất đa dạng như xử lí tín hiệu, nhận dạng hệ thống, xử lí ảnh, mạng nơ ron, logic mờ, tài chính, tối ưu hóa, phương trình đạo hàm riêng, sinh tin học, ... Đây là các tập hợp mã nguồn viết bằng chính MATLAB dựa theo các thuật tốn mới, hữu hiệu mà người dùng có thể chỉnh sửa hoặc bổ sung thêm các hàm mới. Với thư viện Toolbox, Matlab cho phép mơ phỏng tính tốn, thực nghiệm nhiều mơ hình trong thực tế và kỹ thuật. Chính vì các ưu điểm đó mà trong đồ án này, em quyết định chọn ngôn ngữ lập trình Matlab để mô phỏng các kĩ thuật nâng cao chất lượng và nén ảnh.

3.1.1 Sơ lược lịch sử Matlab

Matlab là từ viết tắt của "MATrix LABoratory", được phát minh vào cuối thập niên 1970 bới Cleve Moler.

Ban đầu, MATLAB được viết bởi ngôn ngữ Fortran. Cho đến 1980, nó vẫn chỉ là một bộ phận được dùng nội bộ của Đại Học Standford.

Năm 1983, Jack Little đã viết lại MATLAB bằng ngơn ngữ C và nó được xây dựng thêm các thư viện phục vụ cho thiết kế hệ thống điều khiển, hệ thống Hộp Công Cụ (Tool box), mô phỏng ... Jack xây dựng MATLAB trở thành mơ hình ngơn ngữ lập trình cơ sở ma trận (matrix-based programming language). Steve Bangert là người đã thực hiện trình thơng dịch cho MATLAB. Cơng trình này tốn gần mợt năm rưỡi. Sau này, Jack Little kết hợp với Moler và Steve Bangert quyết định đưa Matlab thành dự án thương mại - công ty The MathWorks ra đời thời gian này - năm 1984.

Phiên bản đầu tiên MATLAB 1.0 ra đời năm 1984 viết bằng C cho MS-DOS PC được phát hành đầu tiên tại IEEE Conference on Design and Control (hội nghị IEEE về thiết kế và Điều khiển) tại Las Vegas, bang Nevada Hoa Kì.

Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX. Năm 1987, MATLAB 3 phát hành.

Năm 1990 Simulink 1.0 được phát hành chung với MATLAB

Năm 1992 MATLAB 4 thêm vào hỗ trợ 2-D và 3-D đồ họa màu và các ma trận truy tìm. Năm này cũng cho phát hành phiên bản MATLAB Student Edition (MATLAB ấn bản cho học sinh)

Năm 1993 MATLAB cho MS Windows ra đời. Đồng thời cơng ty này có WEB site là mathwork.com.

Năm 1995 MATLAB cho LINUX ra đời. Trình dịch MATLAB có khả năng chuyển dịch từ ngôn ngữ MATLAB sang ngôn ngữ C cũng được phát hành trong dịp này.

Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ liệu, phát triển hình ảnh hố, bộ truy sửa lỗi (debugger), và giao diện đồ họa GUI.

Năm 2002 MATLAB 6.5 phát hành, sử dụng phương pháp dịch JIT (Just in Time) và tái hỗ trợ MAC.

Năm 2004 MATLAB 7 phát hành, có khả năng chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và phát triển thuật toán tương tác.

Hiện nay, đã là phiên bản 14 với SP3 cải thiện Simulink cùng với hơn 75 sản phẩm khác.

Matlab được dùng rộng rãi trong giáo dục, phổ biến nhất trong lĩnh vực đại số tuyến tính và giải tích.

3.1.2 Đặc điểm của Matlab và các ứng dụng

MATLAB – phần mềm nổi tiếng của công ty MathWorks, là một ngôn ngữ hiệu năng cao cho tính tốn kỹ thuật như được viết trong logo của phần mềm này. Nó tích hợp tính tốn, hiển thị và lập trình trong một mơi trường dễ sử dụng. Các ứng dụng tiêu biểu của MATLAB bao gồm:

 Hỗ trợ tốn học và tính tốn.

 Phát triển thuật tốn.

 Mơ hình, mơ phỏng.

 Phân tích, khảo sát và hiển thị số liệu.

 Đồ họa khoa học và kỹ thuật

 Phát triển ứng dụng với các giao diện đồ họa.

Tên của phần mềm MATLAB bắt nguồn từ thuật ngữ “Matrix Laboratory”. Đầu tiên nó được viết bằng FORTRAN để cung cấp truy nhập dễ dàng tới phần mềm ma trận được phát triển bởi các dự án LINPACK và EISPACK. Sau đó nó được viết bằng ngơn ngữ C trên cơ sở các thư viện nêu trên và phát triển thêm nhiều lĩnh vực của tính tốn khoa học và các ứng dụng kỹ thuật.

Một phần của tài liệu Các kĩ thuật nâng cao chất lượng và nén ảnh (Trang 40)