Biến đổi Wavelet 1-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 hình ảnh (Trang 38 - 73)

− Các hệ số chi tiết theo ngưỡng: Đối với mỗi mức phân tích từ 1 đến N đều sư dụng một ngưỡng cho các hệ số chi tiết.

− Khôi phục.

Nén ảnh có hai phương pháp thực hiện. Thứ nhất là giãn rộng Wavelet theo tín hiệu và lưu giữ chúng bởi một số lượng rất lớn các hệ số nguyên bản. Trường hợp này ta có thể thiết lập ngưỡng toàn cục và tất cả các mức phân tích đều sư dụng ngưỡng này để thiết lập cho việc phân tích. Phương pháp thứ hai là cho phép thiết lập ngưỡng tự động có thể thay đổi giá trị tùy thuộc vào các mức.

a. Biến đổi Wavelet 1-DPhân tích Wavelet 1-DPhân tích Wavelet 1-DPhân tích Wavelet 1-D Phân tích Wavelet 1-D

Bước phân tích: Tín hiệu được cho đi qua các bộ lọc thông cao và thông thấp rồi được lấy mẫu xuống (down sampling) hệ số 2 tạo thành biến đổi DWT mức 1.

Hình 2.6 minh họa quá trình phân tích Wavelet 1 chiều.

Hình 2.6 Sơ đồ khối phân tích tín hiệu mức j

Biến đổi ngược Wavelet 1-D

Thực hiện biến đổi ngược, bắt đầu từ cAj và cDj, IDWT khôi phục cAj-1, đảo ngược các bước phân chia bằng việc chèn vào các giá trị 0 và kết hợp các kết quả với các bộ lọc khôi phục.

Các bước khôi phục: Lấy mẫu lên (up sampling) hệ số 2 rồi sư dụng các bộ lọc khôi phục thông thấp và thông cao.

Hình 2.7 minh họa quá trình biến đổi ngược Wavelet 1 chiều.

Hình 2.7 Sơ đồ biến đổi ngược Wavelet mức j

Đối với hình ảnh, áp dụng giải thuật tương tự đối với các Wavelet hai chiều và các hàm tỷ lệ nhận được từ các Wavelet một chiều bởi kết quả cắt xén.

DWT hai chiều điển hình cho ta sự phân chia của các hệ số xấp xỉ tại mức j

thành bốn thành phần, bao gồm: xấp xỉ tại mức j + 1 và các chi tiết trong ba hướng (ngang, thẳng đứng, và đường chéo).

b. Biến đổi Wavelet rời rạc 2-D Phân tích Wavelet rời rạc 2-D Bước phân tích:

Ta sư dụng các bộ lọc riêng biệt, thực hiện biến đổi DWT một chiều dữ liệu vào (ảnh) theo hàng, lấy mẫu xuống, giữ lại các cột có chỉ số chẵn. Rồi ta tiếp tục thực hiện biến đổi DWT một chiều dữ liệu vừa thu được theo cột, lấy mẫu xuống, giữ lại các hàng có chỉ số chẵn. Theo cách này nếu thực hiện biến đổi DWT ở mức 1, sẽ tạo ra 4 nhóm hệ số biến đổi. Quá trình biến đổi DWT hai chiều có thể minh hoạ như hình 2.8.

Hình 2.8 Sơ đồ phân tích Wavelet rời rạc 2-D

b. Biến đổi ngược Wavelet 2-D

Hình 2.9 Sơ đồ biến đổi ngược Wavelet rời rạc 2-D

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à JPEG2000 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 hoàn toà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 toá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 toá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 quá 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 toá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ã hoá:

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ã hoá 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; ngoà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ư luôn 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ã hoá ả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ã hoá 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 toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toá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 toá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 toá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

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 hình ảnh (Trang 38 - 73)

Tải bản đầy đủ (DOC)

(73 trang)
w