Tải bản đầy đủ (.docx) (11 trang)

BÁO cáo kỹ THUẬT MULTIMEDIA báo cáo KHOA học 2014 đại học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (884.28 KB, 11 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
KHOA ĐIỆN TỬ- VIỄN THÔNG
BÁO CÁO MÔN HỌC KỸ THUẬT MULTIMEDIA
Tên đề tài: NÉN / GIẢI NÉN ẢNH KHÔNG TỔN HAO BẰNG GIẢI THUẬT
HUFFMAN
Nhóm sinh viên thực hiện:
1. Nguyễn Xuân Cường Lớp 10DT3
2. Lê Đức Tuấn Lớp 10DT3
3. Nguyễn Quốc Biển Lớp 10DT3
Giảng viên hướng dẫn: PGS.TS. Phạm Văn Tuấn
TÓM TẮT :
Mục đích đề tài nhằm tìm hiểu các giải thuật làm giảm số lượng các bit dữ liệu cho truyền tải
và lưu trữ. Báo cáo khái quát về các loại nén với trọng tâm tập trung phân tích nén và giải nén
ảnh không tổn hao bằng giải thuật Huffman.Ý tưởng nén dựa trên việc tính xác xuất xuất hiện
của các điểm ảnh, xây dựng cây mã Huffman, sau đó thực hiện nén ảnh .Quá trình giải nén ảnh
là quá trình được thực hiện ngược lại so với quá trình nén ảnh .
PHẦN A: Tổng quan về nén dữ liệu ảnh
Phần này nhằm cung cấp một số khái niệm (thuật ngữ) như: nén , tỷ lệ nén, các ý tưởng dẫn
tới các phương pháp nén khác nhau, và phân loại, đánh giá các phương pháp nén .
1. Một số khái niệm
1.1. Nén dữ liệu ( data compression )
Nén dữ liệu là quá trình làm giảm lượng thông tin dư thừa trong dữ liệu gốc và do vậy lượng
thông tin thu được sau khi nén thường nhỏ hơn rất nhiều so với dữ liệu gốc.Với dữ liệu ảnh, kết
quả thường là 10:1 .
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

Ngoài thuật ngữ ‘nén dữ liệu’, do bản chất của kỹ thuật này nó còn có thêm một số tên gọi
khác như: giảm độ dư thừa, mã hoá ảnh gốc.


1.2. Tỷ lệ nén (compression rate)
Tỷ lệ nén là một trong các đặc trưng quan trọng nhất của mọi loại phương pháp nén . Nhìn
chung ta định nghĩa về tỷ lệ nén như sau : Tỷ lệ nén=(1/r)*%
Với r là tý số nén được định nghĩa: r=kích thước dữ liệu gốc/kích thước dữ liệu thu được sau
nén.Trong các trình bày, khi nói đến kết quả nén, chúng ta dùng tý số nén, ví dụ như nói ở trên là
10:1 thì kích thước dữ liệu gốc là 10 thì kích thước dữ liệu nén chỉ có 1 .
1.3. Các loại dư thừa dữ liệu
Việc xác định bản chất kiểu dư thừa dữ liệu rất có ích cho việc xây dựng các phương pháp
nén khác nhau. Nói theo cách khác, sử dụng các phương pháp nén khác nhau là do sử dụng các
dạng dư thừa khác nhau. Có 4 kiểu dư thừa chính sau:
1.3.1. Sự phân bố ký tự
Trong một dãy ký tự, có một ký tự có tần xuất xuất hiện lớn hơn trong một dãy khác . Do vậy
ta có thể mã hoá dữ liệu một cách cô đọng. Các ký tự có tần xuất cao hơn được thay bởi một từ
mã nhị phân với số bit nhỏ. Ngược lại, các dãy có tần xuất thấp hơn sẽ được thay bởi một từ mã
nhị phân có số bit lớn hơn .Đây chính là bản chất của phương pháp mã hoá Hufman sẽ được
phân tích kỹ hơn ở mục sau.
1.3.2. Sự lặp lại của các ký tự
Một số ký hiệu được lặp đi lặp lại một số lần . Ký thuật nén dung trong trường hợp này là
thay dãy đó bởi dãy mới gồm hai thành phần :số lần lặp và ký hiệu dung để mã hoá . Phương
pháp mã hoá kiểu này có tên là mã hoá loạt dài RLC (Run Length coding )
1.3.3. Những mẫu sử dụng tần xuất
Có thể có dãy ký hiệu nào đó xuất hiện với tần xuất tương đối cao. Do vậy, có thể mã hoá bởi
ít bit hơn. Đây là cơ sở của phương pháp mã hoá kiểu từ điển do Lempel-Ziv đưa ra và có cải
tiến vào năm 1977,1978 và do đó có tên gọi là phương pháp nén LZ77,LZ78. NĂm 1984 ,Terry
Welch đã cải tiến hiệu quả hơn và đặt tên là LZW (Lempel-Ziv-Welch).
1.3.4.Độ dư thừa vị trí
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển


Do sự phụ thuộc lẫn nhau của dữ liệu,đôi khi biết được kí hiệu (giá trị) xuất hiện tại một vị
trí,đồng thời có thể đoán trước sự xuất hiện của các giá trị ở các vị trí khác nhau một cách phù
hợp.Chẳng hạn,ảnh biểu diễn trông một lưới hai chiều,một số điểm ở hàng dọc trông một khối dữ
liệu lại xuất hiện trong cùng vị trí ở các hàng khác nhau.Do vậy,thay vì lưu trữ dữ liệu,ta chỉ cần
lưu trữ vị trí hàng và cột.Phương pháp nén dựa trên sự dư thừa này gọi là phương pháp mã hóa
dự đoán
Cách đánh giá độ dư thừa như trên hoàn toàn mạng tính trực quan nhằm biểu thị một cái gì đó
xuất hiện nhiều lần.Đối với dữ liệu ảnh, ngoài đặc thù chung đó,nó còn có những đặc thù
riêng.Thí dụ như có ứng dụng không cần toàn bộ dữ liệu thô của ảnh mà chỉ cần các thông tin
đặc trưng biểu diễn ảnh như biên ảnh hay vùng đồng nhất.Do vậy,có những phương pháp nén
riêng cho ảnh dựa vào biển đổi ảnh hay dựa vào biểu diễn ảnh.
1.4. Phân loại các phương pháp nén
Có nhiều cách phân loại các phương pháp nén khác nhau.Cách thứ nhất dựa vào nguyên lý
nén.Cách này phân các phương pháp nén thành 2 họ lớn:
1.4.1. Nén chính xác hay nén không mất thông tin
Họ này bao gồm các phương pháp nén mà sau khi giải nén ta thu được chính xác dữ liệu gốc.
1.4.2. Nén có mất mát thông tin
Họ này bao gồm các phương pháp mà sau khi giải nén ta không thu được dữ liệu như bản
gốc.Trong nén ảnh, người ta gọi các phương pháp "tâm lý thị giác". Các phương pháp này lợi
dụng tính chất của mắt người,chấp nhận một số vặn xoắn trong ảnh khi khôi phục lại.Tuy
nhiên,các phương pháp này chỉ có hiệu quả khi mà độ vặn xoắn là chấp nhận được bằng mắt
thường hay với dung sai nào đó.
PHẦN B: Phương pháp mã hóa Huffman
1. Tìm hiểu phương pháp mã hoá Huffman
1.1. Nguyên tắc
Phương pháp mã hóa Huffman là phương pháp dựa vào mô hình thống kê. Dựa vào dữ liệu
gốc, người ta tính tần suất xuất hiện của các ký tự.Việc tính tần xuất được thực hiện bằng cách
duyệt tuần tự tệp gốc từ đầu đến cuối.Việc xử lý ở đây tính theo bit.Trong phương pháp này,
người ta gán cho các ký tự có tần suất cao một từ mã ngắn, các ký tự có tần xuất thấp từ mã dài.

Nói một cách khác, các ký tự có tần xuất càng cao được gắn mã càng ngắn và ngược lại. Rõ ràng
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

23
với cách thức này, ta đã làm giảm chiều dài trung bình của từ mã hóa hằng cách dùng chiều dài
biến đổi.Tuy nhiên, trong một số tình huống khi tần suất là rất thấp, ta có thể không được lợi một
chút nào, thậm chí còn bị thiệt một ít bit.
1.2.Thuật toán
Thuật toán bao gồm 2 bước chính:
* Giai đoạn tính tần suất của các ký tự trong dữ liệu gốc:
Duyệt tệp gốc một cách tuần tự từ đầu đến cuối để xây dựng bảng mã.Tiếp sau đó là sắp xếp
lại bảng mã theo thứ tự tần suất giảm dần.
* Giai đoạn thứ hai:
Mã hóa:
Duyệt bảng tuần suất từ cuối lên đầu để thực hiện ghép 2 phần tử có tần suất thấp nhất thành
một phần tử duy nhất.Phần tử này có tần xuất bằng tổng 2 tần suất thành phần.Tiến hành cập
nhật lại bảng và đương nhiên loại bỏ 2 phần tử đã xét.Quá trình được lặp lại cho đến khi bảng chỉ
có một phần tử với xác xuất là 1.Quá trình này gọi là quá trình tạo cây mã Huffman vì việc tập
hợp được tiến hành nhờ một cây nhị phân với 2 nhánh.Phần tử có tần suất ở bên phải,phần tử kia
ở bên trái.Với cách tạo cây này, tất cả các bit dữ liệu/ ký tự là nút lá ;các nút trong là các nút tổng
hợp.Sau khi cây đã tạo xong,người ta tiến hành gán mã cho các nút lá.Việc mã hóa rất đơn
giản:mỗi lần xuống bên phải ta thêm 1 bit "1" vào từ mã; mỗi lần xuống bên trái ta thêm 1 bit
"0".Tất nhiên có thể làm ngược lại, chỉ có giá trị mã thay đổi còn tổng chiều dài là không đổi.
Cũng chính do lý do này mà cây có tên gọi là cây mã Huffman như trên đã gọi.
Quá trình giải nén :
Tiến hành theo chiều ngược lại khá đơn giản.Người ta cũng phải dựa vào bảng mã tạo ra
trong giai đoạn nén ( bảng này được giữ lại trong cấu trúc đầu của tệp nén cùng với dữ liệu nén).


1.3.Ví dụ về mã hoá Huffman
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

Tính toán xác suất của mỗi
Tạo bảng mã (tính toán
Sơ đồ khối:
28
Mã hóa kí tự nguồn theo kí
tự (symbol by symbol)
Thêm xác suất đã tính vào
bảng mã
Bảng 1: Cây mã Huffman
Ta có các mã như sau:
a1=001; a2=1; a3=00001; a4=0000; a5=00000; a6=01
Lavg=1(0.4)+2(0.3)+4(0.1)+3(0.1)+5(0.06)+5(0.04)=2.2 bits .
H(p)=P(i)log2P(i)=2.14 bits/ký tự .
Hiệu suất của việc mã hoá này là : H(p)/Lavg=97.27 % .
2. Kết quả thực nghiệm nén ảnh bằng giải thuật Huffman .
2.1. Demo matlab
Đầu tiên nhóm chúng em xây dựng một giao diện như sau bằng GUI mat lab:
2.1.1. Giải thuật của chương trình: Các giá trị( Symbol_y)
Xác suất( Prob_y)
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển


Cây mã
Human
Ma trận RGB
ảnh gốc
Từ mã(codeword)
Codeword+y+symboys code
2.1.2. Chức năng của từng nút lênh:
2.1.2.1. Nút Select Image -> chọn ảnh cần mã hóa
Khi nhấn nút Select Image để chọn ảnh thì ở WorkSpace của Matlab sẽ xuất hiện thêm biến
anh_goc, biến này sẽ chứa ma trận điểm ảnh và giá trị thang xám của nó.
Ở đây ảnh được chọn có kích thước 126x189 pixel và là ảnh màu, tương ứng với ma trận S có
kích thước 126x189x3, vì là ảnh màu nên anh_goc là ma trận 3 chiều R G B ( ta dễ dàng quan sát
trên WorkSpace của Matlab)
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

Mã Hoá ảnh
Ảnh Khôi Phục Ma trận RGB
Giải mã ảnh
2.1.2.2. Nút Creat Huffman :có chức năng tạo mã nén Huffman dựa trên thống kê xác xuất
của các thang xám trong ma trận S.
Trên WorkSpace xuất hiện thêm các biến mới: - Sysmbol_y là ma trận chứa giá trị của thang
xám, Prob_y là xác suất xuất hiện của thang xám tương ứng trong ảnh , Table có kiểu cấu trúc,
sẽ chứa 2 giá trị tương ứng là thang xám và mã huffman của thang xám đó.
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn

Nguyễn Quốc Biển

2.1.2.3. Nút Encode: có chức năng mã hóa thông tin ảnh và tính tỉ số nén dựa trên cây
Huffman đã xây dựng . Sau khi lệnh Encode được thực hiện xong thì trên giao diện sẽ xuất hiện
mã Huffman và tỉ số nén của ảnh.
2.1.2.4. Nút Decode :có chức năng giải mã dựa trên code mã hóa (image_code) và cây
Huffman đã xây dựng
Sau khi lệnh này được thực thi trên cửa sổ WorkSpace của Matlab sẽ xuất hiện ma trận
anh_giainen (image_decode) chứa thông tin ảnh sau khi giải mã.
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

Dễ nhận thấy ma trận anh_giainen cũng sẽ có kích thước giống ma trận anh_goc ( ma trận ảnh
gốc S ban đầu ) 126x189x3
Kiểm chứng lại thông tin chứa trong 2 ma trận anh_goc và anh_gainen nhận thấy giá trị hoàn
toàn giống nhau (do kĩ thuật nén Huffman là kĩ thuật nén không có tổn hao).
2.1.2.5: Kết quả Demo với một ảnh khác nhiều chi tiết hơn
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

2.2. Kết quả đạt được
-Hiểu được các phương pháp nén khác nhau từ việc xác định các dạng dư thừa khác nhau.
-Biết phân biệt các loại nén khác nhau như nén mất dữ liệu và nén không mất dữ liệu, từ đó biết
được phạm vi áp dụng của chúng.
-Tìm hiểu sâu về phương pháp nén không mất dữ liệu bằng giải thuật Huffman:
Hiểu được nguyên tắc của giải thuật Huffman, từ đó xây dựng cây Huffman từ tần xuất xuất

hiện của các điểm ảnh, mã hoá ảnh từ cây đã xây dựng .
-Bước đầu thực hiện thành công chương trình nén và giải nén sử dụng giải thuật Hufman, với
giao diện là GUI của matlab
-Xác minh được tỷ số nén phụ thuộc vào dữ liệu : Hình ảnh có càng nhiều chi tiết thì tỷ số nén sẽ
càng nhỏ hơn.
Hạn Chế : Giao diện chương trình đang còn xấu ,thời gian xử lý nén ảnh và giải nén ảnh đang
còn dài và chưa khắc phục được với laoij ảnh nhiều chi tiết
2.3.Ứng dụng của phương pháp nén bằng giải thuật Huffman.
Một số lĩnh vực ứng dụng yêu cầu không mất dữ liệu trong khi nén:
Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

-Y khoa, kinh tế : các văn bản lưu trữ
-Xử lý hình ảnh vệ tinh: việc mất mát thong tin là điều không muốn.
-Chụp ảnh số bằng tia X: Thông tin bị mất có thể bao gồm các chẩn đoán chính xác
2.4. Nhận xét
Trong mọi phương pháp nén, hiệu quả nén không chỉ mình do tỷ số nén phản ánh, mà còn
phụ thuộc vào nhiều yếu tố khác như kiểu dữ liệu định nén….Tỷ số nén cũng chỉ là một trong
các đặc trưng cơ bản của phương pháp nén. Nhiều khi tỷ số nén cao cũng chưa thể nói rằng
phương pháp đó là hiệu quả hơn các phương pháp khác, vì còn các chi phí khác như không gian,
thời gian, và cả độ phức tạp của việc tính toán .
Tuỳ theo mục đích nén mà ta sử dụng phương pháp nén sao cho phù hợp.
Ưu điểm của nén bằng giải thuật Huffman: Hệ số nén tương đối cao , Phương pháp thực
hiện tương đối đơn giản , Đòi hỏi ít bộ nhớ.
Nhược điểm của nén bằng giải thuật Huffman: Mất 2 lần duyệt file khi nén: một lần để xác
định tần suất & dựng cây mã, một lần nữa để mã hóa
Phải lưu trữ thông tin giải mã vào file nén.
THANKS FOR WATCHING!!

Nhóm Sinh Viên:
Nguyễn Xuân Cường
Lê Đức Tuấn
Nguyễn Quốc Biển

×