You are on page 1of 20

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP. HCM


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

BÁO CÁO BÀI TẬP LỚN


ĐẠI SỐ TUYẾN TÍNH

ĐỀ TÀI 23
1. Giới thiệu phép biến đổi Haar
2. Viết chương trình sử dụng phép
biến đổi Haar để nén dữ liệu

MT1007_L19_N09
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP. HCM
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

BÁO CÁO BÀI TẬP LỚN


ĐẠI SỐ TUYẾN TÍNH

ĐỀ TÀI 23
1. Giới thiệu phép biến đổi Haar
2. Viết chương trình sử dụng phép
biến đổi Haar để nén dữ liệu

NHÓM 09 – ĐSTT(MT1007)_L19
STT Thành viên MSSV
1 Lê Hoàng Phương Uyên 2112628
2 Lê Gia Huy 2111298
3 Phạm Hồ Anh Tuấn 2112586
4 Trần Hoàng Sơn 2114673
5 Đỗ Trần Công Thành 2112290
6 Văn Phú 2114425

1
MỤC LỤC
DANH SÁCH THÀNH VIÊN ……………………………......... 1
MỤC LỤC .……………………………………………………... 2
LỜI MỞ ĐẦU ………………………………………………….. 3

CHƯƠNG I: CƠ SỞ LÝ THUYẾT

I. GIỚI THIỆU CHUNG ……………………………...………….. 4


1. Sơ lược về thuật toán haar ……………………………………… 4
2. Tác dụng ….…………………………………………………….. 4

II. CÁCH GIẢI THUẬT TOÁN ………………………..……….... 4


1. Cách giải thuật toán ………...…………………………………... 4
2. Nén mất dữ liệu …….…………………………………………... 9
3. Nén không mất dữ liệu ……….………………………………… 10

CHƯƠNG II: MATLAB

I. GIỚI THIỆU MATLAB …………………………………...…... 15


II. CÁC LỆNH MATLAB ĐƯỢC SỬ DỤNG ……………………. 15
III. ĐOẠN CODE MATLAB ……………………………………… 16

CHƯƠNG III: TỔNG KẾT

I. KIẾN THỨC …………………………………………………… 17


II. KĨ NĂNG ………………………………………………………. 17
III. TÀI LIỆU THAM KHẢO ……………………………………… 17

LỜI CẢM ƠN ……………………………...……………... 18

2
LỜI MỞ ĐẦU
Cuộc sống càng phát triển thì nhu cầu thông tin của con người càng phong phú, dẫn đến sự
phát triển mạnh mẽ của khoa học kĩ thuật, các loại hình thông tin vô tuyến, các hình thức
xử lí tín hiệu, đặc biệt là công nghệ xử lí ảnh. Xử lí ảnh là một ngành khoa học còn tương
đối mới mẻ so với nhiều ngành khoa học khác nhưng nó đang được tập trung nghiên
cứu và phát triển vì những ứng dụng thực tiễn của nó trong nhiều ngành, lĩnh vực khác
nhau. Trong đó “nén ảnh” là một phần của xử lí ảnh có ứng dụng to lớn trong truyền thông
và trong lưu trữ, đã có rất nhiều phương pháp nén ảnh được ra đời và không ngừng được
cải tiến để ngày càng hoàn thiện đem lại hiệu quả nén cao và cho chất lượng ảnh tốt nhất.
Nén ảnh là một kĩ thuật mã hóa các ảnh số hóa nhằm giảm số lượng các bit dữ liệu cần
thiết để biểu diễn ảnh. Vấn đề này đặt ra yêu cầu ngày càng cao trong việc xử lí tín hiệu để
đảm bảo vừa có thể nén dữ liệu, tiết kiệm dung lượng trên đường truyền tín hiệu, vừa đảm
bảo trừ nhiễu tín hiệu và có khả năng khôi phục lại được tín hiệu với chất lượng tốt.

Có rất nhiều phương pháp xử lí tín hiệu với rất nhiều thuật toán, biến đổi toán học đã được
nghiên cứu. Trong số đó, biến đổi Haar hiện nay đang được xem là một phép biến đổi mới,
có rất nhiều tiềm năng, đang phát triển khá mạnh mẽ với các ưu điểm vượt trội so với các
phép biến đổi truyền thống. Haar cho phép phân tích tín hiệu cả trong miền thời gian và
tần số. Do đó, hiện nay biến đổi Haar đang được ứng dụng khá rộng rãi trong nhiều lĩnh
vực, từ y sinh tới công nghệ xử lí ảnh.

Trong bài báo cáo này, chúng em xin phép được giới thiệu về: “Giới thiệu phép biến đổi
Haar và viết phương trình sử dụng phép biến đổi Haar để nén dữ liệu”.

3
CHƯƠNG I: CƠ SỞ LÝ THUYẾT

I. GIỚI THIỆU CHUNG


1. Sơ lược về thuật toán Haar
Biến đổi Haar là một trong những chức năng biến đổi lâu đời nhất, được đề xuất vào năm
1910 bởi nhà toán học người Hungary, Alfréd Haar. Nó được tìm thấy hiệu quả trong các
ứng dụng như nén tín hiệu và hình ảnh trong kỹ thuật điện và máy tính vì nó cung cấp một
cách tiếp cận đơn giản và hiệu quả về mặt tính toán để phân tích các khía cạnh địa phương
của tín hiệu.

Hàm biến đổi nén Haar là một cách đơn giản để thể hiện cả hai phương pháp nén mất dữ
liệu và nén không mất dữ liệu. Nó phụ thuộc vào trung bình và các giá trị khác nhau trong
ma trận hình ảnh để mà tạo ra những ma trận thưa hoặc gần thưa. Một ma trận thưa được
lưu trữ một cách hiệu quả, dẫn tới việc làm nhỏ đi kích cỡ của ma trận đó.

2. Tác dụng
Việc sử dụng máy tính cho những công việc khác nhau đã tăng lên chóng mặt. Với sự ra
đời của máy ảnh kĩ thuật số, một trong những ứng dụng phổ biến nhất là lưu trữ, thao tác
và truyền hình ảnh kỹ thuật số. Tuy nhiên, các tệp bao gồm những hình ảnh này có thể khá
lớn và có thể nhanh chóng chiếm dung lượng bộ nhớ trên ổ cứng máy tính. Một hình ảnh
tỷ lệ xám 256 x 256 pixel có 65.636 phần tử để lưu trữ hay một hình ảnh màu 640 x 480
điển hình có gần một triệu. Kích thước của những tệp này cũng có thể khiến quá trình tải
xuống từ Internet trở nên lâu chậm hơn. Biến đổi Haar wavelet đã cung cấp phương tiện
mà chúng ta có thể nén hình ảnh để rằng nó chiếm ít không gian lưu trữ hơn, và do đó
truyền điện tử nhanh hơn và ở mức độ chi tiết tăng dần.

II. CÁCH GIẢI THUẬT TOÁN


1. Cách giải thuật toán
Ở đây, chúng ta sẽ tập trung vào thước xám (Gray Scale được hiểu theo tiếng Việt có
nghĩa là thước xám hay còn được gọi là “xám chuẩn”, “thẻ xám”, là một dụng cụ giúp
kiểm tra, đánh giá độ bền màu của các sản phẩm như vải, sản phẩm nhuộm.); tuy nhiên,
những bức ảnh theo dạng rbg có thể kiểm soát bằng cách nén mỗi màu khác nhau theo
từng lớp riêng biệt khác nhau. Phương pháp cơ bản nhất để bắt đầu với một ảnh A, ta có
thể xem như là một ma trận cỡ m  n , với giá trị từ 0 đến 255. Trong matlab, nó sẽ là một
ma trận với 8-bit giá trị nguyên. Chúng ta có thể chia nhỏ ảnh thành 8  8 .

Ví dụ : Dưới đây là hình ảnh thang độ xám 512  512 pixel của các trụ bay của Nhà thờ
Đức Bà Paris:

4
Và đây là ma trận 8  8 từ bức ảnh trên:

 88 88 89 90 92 94 96 97 
 
 90 90 91 92 93 95 97 97 
 
 92 92 93 94 95 96 97 97 
 93 93 94 95 96 96 96 96 
A
 92 93 95 96 96 96 96 95 
 
 92 94 96 98 99 99 98 97 
 
 94 96 99 101 103 103 102 101 
 
 95 97 101 104 106 106 105 105 

Chúng ta sẽ tập trung vào hàng đầu: r1  88 88 89 90 92 94 96 97 

Quá trình chuyển đổi sẽ diễn ra trong 3 bước, với bước đầu tiên là nhóm theo cặp:
[88,88] ; [89,90] ; [92,94] ; [96,97]

Tiếp theo, thay thế 4 cột đầu tiên của r1 bằng giá trị nửa tổng và 4 cột cuối cùng của r1
bằng nửa hiệu của các cặp này. Hàng mới được ký hiệu là r1h1 :
r1h1  88 89.5 93 96.5 0 0.5 1 0.5
4 mục đầu tiên được gọi là hệ số xấp xỉ và 4 mục cuối cùng được gọi là hệ số chi tiết. Tiếp
theo, nhóm 4 cột đầu tiên của hàng mới này [88,89.5] , [93,86.5] và thay thế 2 cột đầu
bằng nửa tổng của 2 cặp số và 2 cột sau bằng nửa hiệu của 2 cặp số đó. Chúng ta giữ
nguyên 4 cột cuối cùng của r1h1 . Và sẽ biểu thị hàng mới thứ hai này là r1h1h2 :
r1h1h2  88.75 94.75 0.75 1.75 0 0.5 1 0.5

5
Cuối cùng, nhóm 2 mục đầu tiên của r1h1h2 lại với nhau [88.75,94.75] và thay thế cột đầu
tiên của r1h1h2 bằng nửa tổng và cột thứ hai của r1h1h2 bằng nửa hiệu của cặp số trên. Ta
giữ nguyên 6 cột cuối cùng của r1h1h2 . Ta ký hiệu hàng mới cuối cùng này là r1h1h2h3 .
r1h1h2h3   91.75 3 0.75 1.75 0 0.5 1 0.5

Ta lặp lại quy trình này cho các hàng còn lại của A. Sau đó, lặp lại quy trình tương tự cho
các cột của A, nhóm các hàng theo cùng một cách với các cột. Ma trận kết quả là:

 96 2.0312 1.5312 0.2188 0.4375 0.75 0.3125 0.125 


 
 2.4375 0.0312 0.7812 0.7812 0.4375 0.25 0.3125 0.25 
 
 1.125 0.625 0 0.675 0 0 0.375 0.125 
 2.6875 0.75 0.5625 0.0625 0.125 0.25 0 0.125 

 0.6875 0.3125 0 0.125 0 0 0 0.25 
 
 0.1875 0.3125 0 0.375 0 0 0.25 0 
 
 0.875 0.375 0.25 0.25 0.25 0.25 0 0 
 
 1.25 0.375 0.375 0.125 0 0.25 0 0.25 

Lưu ý rằng ma trận kết quả này có một số mục nhập 0 và hầu hết các mục nhập còn lại gần
bằng 0. Điều này là kết quả của sự khác biệt và thực tế là các pixel liền kề trong một hình
ảnh nói chung không khác nhau nhiều.

Bây giờ, ta sẽ thảo luận về cách thực hiện quá trình này bằng cách sử dụng phép nhân ma
trận dưới đây, ma trận biến đổi Haar wavelet.
Nếu ta có:
 0.5 0 0 0 0.5 0 0 0 
 
 0.5 0 0 0 0.5 0 0 0 
 
 0 0.5 0 0 0 0.5 0 0 
 0 0.5 0 0 0 0.5 0 0 
H1  
 0 0 0.5 0 0 0 0.5 0 
 
 0 0 0.5 0 0 0 0.5 0 
 
 0 0 0 0.5 0 0 0 0.5 
 
 0 0 0 0.5 0 0 0 0.5 
thì AH1 tương đương với bước đầu tiên ở trên được áp dụng cho tất cả các hàng của A .

6
 88 89.5 93 96.5 0 0.5 1 0.5 
 
 90 91.5 94 97 0 0.5 1 0 
 
 92 93.5 95.5 97 0 0.5 0.5 0 
 93 94.5 96 96 0 0.5 0 0 
AH1  
 92.5 95.5 96 95.5 0.5 0.5 0 0.5 
 
 92 97 99 97.5 1 1 0 0.5 
 
 95 100 103 101.5 1 1 0 0.5 
 
 96 102.5 106 105 1 1.5 0 0 

Tương tự, xác định H 2 bằng:

 0.5 0 0.5 0 0 0 0 0
 
 0.5 0 0.5 0 0 0 0 0
 
 0 0.5 0 0.5 0 0 0 0
 0 0.5 0 0.5 0 0 0 0 
H2  
 0 0 0 0 1 0 0 0
 
 0 0 0 0 0 1 0 0
 
 0 0 0 0 0 0 1 0
 
 0 0 0 0 0 0 0 1 

Sau đó, AH1H 2 tương đương với hai bước trên được áp dụng cho tất cả các hàng của A:

 88.75 94.75 0.75 1.75 0 0.5 1 0.5 


 
 90.75 95.5 0.75 1.5 0 0.5 1 0 
 
 92.75 96.25 0.75 0.75 0 0.5 0.5 0 
 93.75 96 0.75 0 0 0.5 0 0 
AH1 H 2  
 94 95.75 1.5 0.25 0.5 0.5 0 0.5 
 
 95 98.25 2 0.75 1 1 0 0.5 
 
 97.5 102.25 2.5 0.75 1 1 0 0.5 
 
 99.25 105.5 3.25 0.5 1 1.5 0 0 

Cuối cùng, ta sẽ xác định:

7
 0.5 0.5 0 0 0 0 0 0
 
 0.5 0.5 0 0 0 0 0 0
 
 0 0 1 0 0 0 0 0
 0 0 0 1 0 0 0 0 
H3  
 0 0 0 0 1 0 0 0
 
 0 0 0 0 0 1 0 0
 
 0 0 0 0 0 0 1 0
 
 0 0 0 0 0 0 0 1 

Sau đó AH1H 2 H 3 tương đương với ba bước trên được áp dụng cho tất cả các hàng của A.
Cụ thể là:
 91.75 3 0.75 1.75 0 0.5 10 0.5 
 
 93.125 2.375 0.75 1.5 0 0.5 10 0 
 
 94.5 1.75 0.75 0.75 0 0.5 0.5 0 
 94.875 1.125 0.75 0 0 0.5 0 0 
AH1 H 2 H 3  
 94.875 0.875 1.5 0.25 0.5 0.5 0 0.5 
 
 96.625 1.625 20 0.75 10 10 0 0.5 
 
 99.875 2.375 2.5 0.75 10 10 0 0.5 
 
102.375 3.125 3.25 0.5 10 1.5 0 0 

Nếu ta đặt H là tích của 3 ma trận này, thì:

 0.125 0.125 0.25 0 0.5 0 0 0 


 
 0.125 0.125 0.5 0 0.5 0 0 0 
 
 0.125 0.125 0.25 0 0 0.5 0 0 
 0.125 0.125 0.25 0 0 0.5 0 0 
H  H1 H 2 H 3  
 0.125 0.125 0 0.25 0 0 0.5 0 
 
 0.125 0.125 0 0.25 0 0 0.5 0 
 
 0.125 0.125 0 0.25 0 0 0 0.5 
 
 0.125 0.125 0 0.25 0 0 0 0.5 

Để áp dụng quy trình cho các cột, chỉ cần nhân A ở bên trái với H T . Ma trận kết quả là:

8
 96 2.0312 1.5312 0.2188 0.4375 0.75 0.3125 0.125 
 
 2.4375 0.0312 0.7812 0.7812 0.4375 0.25 0.3125 0.25 
 
 1.125 0.625 0 0.625 0 0 0.375 0.125 
 2.6875 0.75 0.5625 0.0625 0.125 0.25 0 0.125 
H AH  
T
 0.6875 0.3125 0 0.125 0 0 0 0.25 
 
 0.1875 0.3125 0 0.375 0 0 0.25 0 
 
 0.875 0.375 0.25 0.25 0.25 0.25 0 0 
 
 1.25 0.375 0.375 0.125 0 0.25 0 0.25 

Phần quan trọng của quá trình này là phép biến đổi nghịch đảo được. Đặc biệt, H là một
ma trận khả nghịch. Nếu như B  H T AH thì A   H T  BH 1 . Vậy B chính là kết quả ảnh
1

nén của A. Hơn nữa, vì H khả nghịch nên đây là phép nén không mất dữ liệu.

2. Nén mất dữ liệu


Phép biến đổi Haar có thể biểu diễn ma trận nén mất dữ liệu để giữ lại chất lượng hình
ảnh. Đầu tiên, tỷ lệ nén của hình ảnh là tỷ lệ của các phần tử khác 0 trong ảnh gốc với các
phần tử khác 0 trong ảnh nén.
Gọi A là một ma trận dạng 8  8 và H T AH là ảnh nén của A qua phép biến đổi Haar
wavelet. H T AH chứa nhiều hệ số chi tiết gần bằng 0. Chọn những số có trị tuyệt đối trong
phạm vi từ 0 đến  biến thành số 0. Ma trận này hiện có nhiều giá trị 0 hơn và thể hiện
một hình ảnh được nén nhiều hơn. Khi chúng ta giải nén hình ảnh này bằng cách sử dụng
biến đổi Haar wavelet ngược, chúng ta thu được kết quả với một hình ảnh gần với bản gốc.
Ví dụ, với ma trận A của chúng ta lấy từ ví dụ, nếu chọn   0.25 , sẽ có kết quả với ma
trận:
 96 2.0312 1.5312 0 0.4375 0.75 0.3125 0 
 
 2.4375 0 0.7812 0.7812 0.4375 0 0.3125 0 
 
 1.125 0.625 0 0.625 0 0 0.375 0 
 2.6875 0.75 0.5625 0 0 0 0 0 

 0.6875 0.3125 0 0 0 0 0 0
 
 0 0.3125 0 0.375 0 0 0 0
 
 0.875 0.375 0 0 0 0 0 0
 
 1.25 0.375 0.375 0 0 0 0 0 

48
Ma trận này đại diện cho một tỉ lệ nén là  1.7 (phần tử số 48 tức là số trên cùng 96
27
chia đôi và phần mẫu số là 27 số khác 0 của ma trận trên).

9
Các ảnh dưới đây là một ví dụ về hình ảnh ban đầu, được nén theo các tỷ lệ khác nhau:

Ảnh gốc Tỷ lệ nén 10:1

Tỷ lệ nén 30:1 Tỷ lệ nén 50:1

3. Nén không mất dữ liệu


Ví dụ: Xét một phép nén dữ liệu dựa trên biến đổi Haar. Giả sử ta có đoạn dữ liệu
X 0  154 150 156 152 160 160 152 156 . Ta chia dữ liệu thành từng cặp và
T

tìm nửa tổng a và nửa hiệu d của các cặp. Khi đó ta được dãy
X1  152 154 160 154 2 2 0 2  với 4 số đầu tiên là nửa tổng và 4 số tiếp
T

theo là nửa hiệu của các cặp.


Có thể dùng ma trận để mô tả quá trình này như sau:

10
 0.5 0.5 0 0 0 0 0 0 
 
 0 0 0.5 0.5 0 0 0 0 
 
 0 0 0 0 0.5 0.5 0 0 
 0 0 0 0 0 0 0.5 0.5 
A
 0.5 0.5 0 0 0 0 0 0 
 
 0 0 0.5 0.5 0 0 0 0 
 
 0 0 0 0 0.5 0.5 0 0 
 
 0 0 0 0 0 0 0.5 0.5 

Các cột của A tạo nên họ trực giao. Nếu ta chia mỗi cột cho độ dài của chúng ta được họ
trực chuẩn và ma trận tương ứng là ma trận trực giao H như sau:

 2 2 
 0 0 0 0 0 0 
 2 2 
 2 2 
 0 0 0 0 0 0 
 2 2 
 
 0 0 0 0
2 2
0 0 
 2 2
 
 2 2 
 0 0 0 0 0 0
 2 2 
 2 2 
  0 0 0 0 0 0 
 2 2 
 
 2 2
0 0  0 0 0 0 
 2 2 
 

0 
2 2
 0 0 0 0  0
2 2
 
 2 2
 0 0 0 0 0 0  
 2 2 

Khi đó nghịch đảo của H là H T . Ta dùng ma trận H để nén dữ liệu thay cho A. Ta có
Y1  HX 0 . Giải nén dữ liệu ta được, X 0  H T Y1 . Phép biến đổi trực giao H có tính chất
quan trọng là nó bảo toàn khoảng cách và góc. Thực vậy, ta có:
HX   HX  ( HX )  X T H T HX  X T X  X
T

Tức là độ dài vectơ X và độ dài vectơ HX như nhau.

Ngoài ra góc giữa hai vectơ u và v thỏa cos 


 u, v 
u.v
Qua phép biến đổi H, góc giữa hai vectơ H u và H v thỏa
11
 Hu, Hv    Hu   Hv   uT H T Hv   u, v   cos
T
uT v
cos   
Hu . Hv u.v u.v u.v u.v
Hay góc giữa hai vectơ u và v bằng với góc giữa hai ảnh của nó là Hu và Hv
Phép biến đổi trực giao H bảo toàn góc và khoảng cách nên nó không làm thay đổi hình
dạng của ảnh trong quá trình nén.
Tiếp tục quá trình nén ở trên như sau.
Vector Y1  H1 X 0  2 152 154 160 154 2 2 0 2 
T

Với H1 là ma trận H ở ví dụ trước, có 4 phần tử sau nhỏ còn 4 phần tử đầu là những số lớn.
Giữ bốn số sau của dãy lại. Đối với bốn số đầu, ta chia làm hai cặp, tìm nửa tổng và nửa

 
T
hiệu của các cặp ta được Y2  H 2Y1  306 314 2 6 2 2 2 2 0 2 2 , với

 2 2 
 0 0 0 0 0 0
 2 2 
 2 2 
 0 0 0 0 0 0
 2 2 
 2  2 
 0 0 0 0 0 0
2 2
H2   
 2  2 
 0 0 0 0 0 0
 2 2 
 0 0 0 0 1 0 0 0
 0 0 0 0 0 1 0 0 

 0 0 0 0 0 0 1 0
 
 0 0 0 0 0 0 0 1

Tiếp tục quá trình trên, giữ 6 số cuối của Y2 lại. Hai số đầu được thay bởi nửa tổng và nửa

 
T
hiệu của chúng, ta có Y3  H3Y2  310 2 4 2 2 6 2 2 2 2 0 2 2 , với

12
 2 2 
 0 0 0 0 0 0
 2 2 
 2  2 
 0 0 0 0 0 0
 2 2 
 0 0 1 0 0 0 0 0
H3  
 0 0 0 1 0 0 0 0 
 0 0 0 0 1 0 0 0
 
 0 0 0 0 0 1 0 0
 0 0 0 0 0 0 1 0
 
 0 0 0 0 0 0 0 1

Tóm lại ta có Y3  H3 H 2 H1 X 0  Y3  QX 0
Véctơ Y3 chứa 7 số sau nhỏ.
Giải nén dãy dữ liệu Y3 tìm lại dãy X 0  Q1Y3  X 0  QT Y3 , với

 2 2 2 2 2 2 2 2 
 
 4 4 4 4 4 4 4 4 
 2 2 2 2  2  2  2  2
 
 4 4 4 4 4 4 4 4 
 1 1 1 1 
 0 0 0 0 
2 2 2 2
 
 1 1 1 1 
0 0 0 0
 2 2 2 2 
Q 
  2
0 
2
0 0 0 0 0
 2 2 
 
  2
0 
2
0 0 0 0 0
 2 2 
 
  2
0 
2
0 0 0 0 0
 2 2 
 
 2  2
0 0 0 0 0 0 
 2 2 

Dưới đây là ảnh minh họa cho phép biến đổi nén không mất dữ liệu:

13
Ảnh gốc Ảnh sau 1 lần biến đổi

Ảnh sau 2 lần biến đổi Ảnh sau 3 lần biến đổi

14
CHƯƠNG II: MATLAB

I. GIỚI THIỆU MATLAB


MATLAB là môi trường tính toán số và lập trình, được thiết kế bởi công ty MathWorks.
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 diện 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. MATLAB giúp đơn giản hóa việc giải quyết các
bài toán tính toán kĩ thuật so với các ngôn ngữ lập trình truyền thống như C, C++, và
Fortran.
MATLAB được sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh, truyền
thông, thiết kế điều khiển tự động, đo lường kiểm tra, phân tích mô hình tài chính, tính
toán sinh học, bên cạnh đó, MATLAB còn được sử dụng để phát triển thuật toán. Với
hàng triệu kĩ sư và nhà khoa học làm việc trong môi trường công nghiệp cũng như ở môi
trường hàn lâm, MATLAB là ngôn ngữ của tính toán khoa học.
Thông qua bài báo cáo này chúng em đã tìm hiểu về ứng dụng của MATLAB trong Đại số
tuyến tính, cụ thể hơn là tìm hiểu về phép biến đổi Haar ứng dụng vào việc nén dữ liệu,
đồng thời viết chương trình MATLAB sử dụng phép biến đổi Haar để nén hình ảnh.

15
II. CÁC LỆNH MATLAB ĐƯỢC SỬ DỤNG

Lệnh Tác dụng


clc Xóa command window
clear all Xóa biến
close all Đóng các cửa sổ phụ
imread('filename') Đọc hình ảnh từ tệp đồ họa
Chuyển đổi hình ảnh hoặc bản đồ màu RGB
rgb2gray(image)
sang thang độ xám
imresize(A,[NUMROWS NUMCOLS]) Thay đổi kích thước hình ảnh
imagesc(...) Hiển thị hình ảnh với màu sắc được chia tỷ lệ
Chuyển đổi hình ảnh thành độ chính xác gấp
im2double(...)
đôi
imwrite(A,'filename') Xuất ảnh A thành tệp đồ họa
Đặt bản đồ màu của ảnh hiện tại thành bản
colormap gray
đồ màu xám
axis off Không hiển thị các đường trục và nền
Sử dụng các đường trục có độ dài bằng nhau.
axis square Điều chỉnh gia số giữa các đơn vị dữ liệu cho
phù hợp.
title('text') Thêm tiêu đề cho ảnh
length(X) Kích thước mảng lớn nhất
norm(...) Độ dài vector hoặc hàng / cột của ma trận
zeros(N) Tạo ma trận 0 có kích thước N  N
Chia figure window thành 2 phần theo chiều
subplot(2,1,n)
ngang, ảnh hiển thị ở phần thứ n.

16
III. ĐOẠN CODE MATLAB

clc
clear all
close all

IM = imread('anh.jpg');

coverIM = rgb2gray(IM);
s=size(coverIM);
coverIM = imresize(im2double(coverIM),[s(1,1)/2 s(1,1)/2]);
subplot(2,1,1);
figure(1)
imagesc(coverIM)
colormap gray
title('Hinh anh ban dau')
axis off
axis square

dim=length(coverIM);

m=dim/2;
At=zeros(dim);

for i=1:m
At(i,2*i-1)=1/2;
At(i,2*i)=1/2;
At(i+m,2*i-1)=1/2;
At(i+m,2*i)=-1/2;
end
for i=1:dim
H1(:,i)=At(:,i)/(norm(At(:,i)));
end

Y=H1*coverIM;

figure(1)
subplot(2,1,2);
imagesc(Y)
colormap gray
title('Hinh anh sau khi bien doi Haar')
axis off
axis square
imwrite(Y,'anh_sau.jpg')

17
CHƯƠNG III: TỔNG KẾT
I. KIẾN THỨC
- Dựa vào các kiến thức lí thuyết đã được học để thực hiện phép biến đổi Haar.
- Tìm hiểu và sử dụng phần mềm Matlab viết chương trình sử dụng phép biển dổi Haar để
nén dữ liệu.

II. KĨ NĂNG
Sau thời gian làm việc chung, nhóm đã đạt được kết quả sau:
+ Nhóm hoạt động ổn định, có tổ chức, tôn trọng lẫn nhau, thường xuyên tương tác, trao
đổi qua lại giữa các thành viên.
+ Thành viên có trách nhiệm, tham gia tất cả các cuộc bàn luận và hoàn thành nhiệm vụ
được phân công.
+ Mọi công việc đều rõ ràng nên nhóm đã hoạt động một cách tối ưu và đạt được hiệu quả
công việc cao.
+ Các thành viên đã nâng cao được kĩ năng làm việc nhóm như khả năng giao tiếp, thảo
luận với nhau, đưa ra quan điểm cá nhân,…
+ Giữa các thành viên có sự thống nhất, mọi người đều có tính kỷ luật, tuân theo nội quy
của nhóm.

III. TÀI LIỆU THAM KHẢO


Đặng Văn Vinh, Giáo trình Đại Số Tuyến Tính, NXB Đại học Quốc Gia TP. Hồ Chí
Minh, 2020.

David R. Bull and Fan Zhang, Intelligent Image and Video Compression Comunicating
Pictures, Second Edition.

Greg Ames, Image Compression, 07/12/2002

https://web.archive.org/web/20110125080404/http://online.redwoods.cc.ca.us/instruct/dar
nold/laproj/Fall2002/ames/paper.pdf

Help Center for MATLAB, Simulink and other MathWorks products

18
LỜI CẢM ƠN
Trước tiên với tình cảm chân thành nhất, chúng em xin được bày tỏ lòng biết ơn đến tất cả
các cá nhân và tổ chức đã tạo điều kiện hỗ trợ, giúp đỡ chúng em trong suốt quá trình học
tập và nghiên cứu đề tài này. Trong thời gian từ khi bắt đầu học tập tại trường đến nay,
chúng em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô và bạn bè.

Với lòng biết ơn sâu sắc nhất, chúng em xin gửi lời cảm ơn đến thầy Bùi Anh Tuấn đã
truyền đạt vốn kiến thức quý báu cho chúng em trong thời gian học môn Đại số tuyến tính.
Nhờ có những lời hướng dẫn, giảng dạy của Thầy nên đề tài bài tập lớn của chúng em mới
có thể được hoàn thành. Bản báo cáo thực hiện trong khoảng thời gian ngắn nên còn hạn
chế và chúng em còn nhiều bỡ ngỡ, không tránh khỏi những thiếu sót, rất mong nhận được
những ý kiến đóng góp quý báu của quý Thầy Cô và các bạn để kiến thức của chúng em
được cải thiện đồng thời có điều kiện bổ sung, nâng cao các kĩ năng của mình.

Chúng em xin chân thành cảm ơn!

19

You might also like