You are on page 1of 15

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 14
Nén ảnh bằng phép biến đổi Haar

N14_MT1007_L05
Báo cáo bài tp ln

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 14
Nén ảnh bằng phép biến đổi Haar

Nhóm 14 – ĐSTT (MT1007)_L05 1


Báo cáo bài tp ln

Danh sách thành viên

Nhóm 14 – ĐSTT (MT1007)_L05


STT Họ và tên MSSV
1 Nguyễn Xuân Quyết 2312889
2 Phạm Ngọc Như Quỳnh 2312920
3 Nguyễn Hoàng Sâm 2312946
4 Đặng Thành Tài 2312989
5 Trần Thanh Tâm 2313040
6 Hồ Ngọc Tân 2313047
Mục 7 Phan Quỳnh Thái 2313105 lục
8 Mai Phương Thảo 2313152
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......................................................................4
I. Phép biến đổi Haar:.............................................................................................4
1. Giới thiệu chung:.............................................................................................4
2. Ứng dụng:........................................................................................................4
II. Nén ảnh bằng phép biến đổi Haar:....................................................................4
1. Thuật toán:......................................................................................................4
2. Nén mất dữ liệu:..............................................................................................4
3. Nén không mất dữ liệu:...................................................................................4
4. Quá trình nén ảnh:...........................................................................................4
Chương II. Lập trình Matlab................................................................4
I. Giới thiệu chung:................................................................................................4
II. Các lệnh được dung:..........................................................................................4
III. Đoạn code:........................................................................................................4

Nhóm 14 – ĐSTT (MT1007)_L05 2


Báo cáo bài tp ln

Chương III. Tổng kết..............................................................................4


I. Nhận xét chung:..................................................................................................4
II. Kết luận:............................................................................................................4
III. Tài liệu tham khảo:...........................................................................................4
Lời cảm ơn.......................................................................................5

Nhóm 14 – ĐSTT (MT1007)_L05 3


Báo cáo bài tp ln

Lời mở đầu
Trong những năm gần đây, tài nguyên và dữ liệu máy tính đang có xu hướng tăng
theo cấp số nhân. Mặc dù cả tài nguyên máy tính và dữ liệu đều đang phát triển,
nhưng có một sự tương phản hoàn toàn giữa các tốc độ tăng trưởng giống nhau.
Giờ đây, chúng ta có khối lượng dữ liệu rất lớn và không đủ tài nguyên máy tính
để xử lý chúng trong một khoảng thời gian thích hợp. Điều này dẫn chúng ta đến
một trong những vấn đề chính mà thế giới đang phải đối mặt ngay bây giờ. Làm
thế nào chúng ta có thể nén thông tin dữ liệu trong khi vẫn duy trì hầu hết các
thông tin có trong dữ liệu?
Hiện nay, các nhà nghiên cứu đã có đa dạng phương pháp xử lý tín hiệu với nhiều
thuật toán khác nhau để khắc phục vấn đề. Trong số đó, 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, phép biến đổi lâu đời Haar đang được ứng
dụng rộng rãi trong nhiều lĩnh vực, từ y sinh đến công nghệ xử lý ảnh.
Trong bài báo cáo này, chúng tôi xin được phép giới thiệu về “Nén ảnh bằng
phương pháp Haar”.
Chương I. Cơ sở lý thuyết
I. Phép biến đổi Haar:

1. Giới thiệu chung:

Biến đổi Haar là một phương pháp toán học được sử dụng rộng rãi cho các ứng
dụng xử lý 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. Phép biến đổi Haar được đề xuất năm 1909 bởi nhà toán học
người Hungary, Alfréd Haar. Đây được xem là phép biến đổi lâu đời nhất.
Phép biến đổi Haar dựa trên khái niệm wavelet, cụ thể là wavelet Haar. Trong toán
học, Haar wavelet là một chuỗi các hàm “hình vuông” được điều chỉnh tỷ lệ, cùng
nhau tạo thành một họ hoặc cơ sở wavelet. Dựa vào giá trị và trung bình khác nhau
trong ma trận hình ảnh mà Haar có thể tạo ra những ma trận thưa hoặc gần thưa.
Bằng việc làm nhỏ đi kích cỡ của ma trận thưa, chúng ta có thể lưu trữ một cách
hiệu quả. Có hai loại nén dữ liệu, đó là nén mất dữ liệu và nén không mất dữ liệu,
hàm biến đổi nén Haar là một cách để thể hiện cả hai phương pháp đó.

Nhóm 14 – ĐSTT (MT1007)_L05 4


Báo cáo bài tp ln

2. Ứng dụng:

Trong những năm gần đây đã có sự gia tăng đáng kể trong việc sử dụng máy tính
cho nhiều công việc khác nhau. 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 chứa 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ớ quý giá trên ổ cứng máy tính. Một hình ảnh thang màu
xám có kích thước 256 x 256 pixel có 65.536 phần tử để lưu trữ và một hình ảnh
màu 640 x 480 thông thường có gần một triệu phần tử! 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 kéo dài. Biến đổi
wavelet Haar cung cấp một phương tiện để chúng ta có thể nén hình ảnh sao cho
nó chiếm ít không gian lưu trữ hơn và do đó truyền tải điện tử nhanh hơn và ở mức
độ chi tiết tăng dần.
II. Nén ảnh bằng phép biến đổi Haar:

1. Thuật toán:

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

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

4. Quá trình nén ảnh:

Chương II. Lập trình Matlab


I. Giới thiệu chung:

Matlab (tên viết tắt của Matrix laboratory) là phần mềm cung cấp môi trường tính
toán số và lập trình, do công ty MathWorks thiết kế. Matlab cho phép tính toán số

Nhóm 14 – ĐSTT (MT1007)_L05 5


Báo cáo bài tp ln

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 được sử dụng bởi các kỹ sư và nhà khoa học trong nhiều lĩnh vực như
xử lý hình ảnh và tín hiệu, truyền thông, hệ thống điều khiển cho ngành công
nghiệp, thiết kế lưới điện thông minh, người máy cũng như tài chính.
Trong 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 để viết phương trình nén ảnh bằng phép biến đổi Haar.
II. Các lệnh được dùng:

Lệnh Tác dụng


clc; clear Xóa các biến
input = 'inputHaar.jpg'; Đầu vào địa chỉ hình ảnh
output = 'outputHaar.jpg'; Đầu ra hình ảnh
if(exist(input)==2) Nếu tồn tại địa chỉ hình ảnh tại đầu vào
imread(input); Đọc file ảnh thành một ma trận
imreasize(a,[NUMROWS NUMCOLS]); Thay đổi kích thước của ảnh
subplot(2,1,n); Chia figure window thành 2 phần theo
chiều ngang, ảnh hiển thị ở phần thứ n
imshow(a); Hiển thị hình ảnh được định dạng
length(a); Kích thước mảng lớn nhất
zeros(n,n); Tạo ma trận 0 có kích thước lớn nhất
Title(‘text’) Tiêu đề cho ảnh
Imwrite(input,output); Lưu ghi địa chỉ hình ảnh
Norm(...) Độ dài vector hoặc hàng/cột cảu ma trận
im(:,:,n) = Q*double(a(:,:,n)): Chuyển đổi hình ảnh n thành độ chính
xác gấp Q

III. Đoạn code:

clc, clear

image_dir = 'D:\...\image.jpg'

Nhóm 14 – ĐSTT (MT1007)_L05 6


Báo cáo bài tp ln

c = 1;

img = imread(image_dir);
img = rgb2gray(img);
img = double(img);

sz = size(img);

n = ceil(log2(max(sz)));
N = 2^n;

X = imresize(img, [N N]);

Y = haar_tran(X, c, 0);

Nc = N/2^c;
R = 1:Nc;
F = zeros(N, N);
F(R, R) = 1;

Yc = Y.*F;
Xc = haar_tran(Yc, c, 1);

subplot(221)

Nhóm 14 – ĐSTT (MT1007)_L05 7


Báo cáo bài tp ln

imagesc(X)
title('Anh goc');

subplot(222)
imagesc(Y)
title('Bien doi Haar goc');

subplot(223)
imagesc(Xc)
title('Anh nen');

subplot(224)
imagesc(Yc)
title('Bien doi Haar nen');

function Y = haar_tran(X, c, ih)

N = size(X, 1);
K = N/2;

A = haar_mod(K, 1);
D = haar_mod(K, -1);
H = [A D];
if ih == 0

Nhóm 14 – ĐSTT (MT1007)_L05 8


Báo cáo bài tp ln

Y = H^c'*X*H^c;
elseif ih == 1
Y = H^c*X*H^c';
end
end

function M = haar_mod(N, q)
M = zeros(2*N, N);

for i = 1:N
x = 2*i -1;
M(x, i) = 1;
M(x+1, i) = q;
end
M = M /sqrt(2);
End
Upload ảnh lên matlab trước khi chạy và chỉ chạy với ảnh được up lên matlab
Ví dụ:
clc, clear

image_dir = 'D:\...\image.jpg'
c = 1;

img = imread(image_dir);

Nhóm 14 – ĐSTT (MT1007)_L05 9


Báo cáo bài tp ln

img = rgb2gray(img);
img = double(img);

sz = size(img);

n = ceil(log2(max(sz)));
N = 2^n;

X = imresize(img, [N N]);

Y = haar_tran(X, c, 0);

Nc = N/2^c;
R = 1:Nc;
F = zeros(N, N);
F(R, R) = 1;

Yc = Y.*F;
Xc = haar_tran(Yc, c, 1);

subplot(221)
imagesc(X)
title('Anh goc');

Nhóm 14 – ĐSTT (MT1007)_L05 10


Báo cáo bài tp ln

subplot(222)
imagesc(Y)
title('Bien doi Haar goc');

subplot(223)
imagesc(Xc)
title('Anh nen');

subplot(224)
imagesc(Yc)
title('Bien doi Haar nen');

function Y = haar_tran(X, c, ih)

N = size(X, 1);
K = N/2;

A = haar_mod(K, 1);
D = haar_mod(K, -1);
H = [A D];
if ih == 0
Y = H^c'*X*H^c;
elseif ih == 1
Y = H^c*X*H^c';

Nhóm 14 – ĐSTT (MT1007)_L05 11


Báo cáo bài tp ln

end
end

function M = haar_mod(N, q)
M = zeros(2*N, N);

for i = 1:N
x = 2*i -1;
M(x, i) = 1;
M(x+1, i) = q;
end
M = M /sqrt(2);
end

Chương III. Tổng kết


I. Nhận xét chung:

 Ưu điểm:
- Ưu điểm chính của Wavelet Haar nằm ở tính đơn giản và hiệu quả tính
toán của chúng.
- Chúng không có tham số, nghĩa là chúng không dựa vào các giả định cơ
bản về dữ liệu, khiến chúng cực kỳ linh hoạt.
 Nhược điểm:
- Vấn đề chính là hạn chế của chúng đối với việc phân chia dữ liệu nhị
phân. Ràng buộc này thường hạn chế tính chính xác của Haar trong việc
thu thập dữ liệu tần số cao hơn.

Nhóm 14 – ĐSTT (MT1007)_L05 12


Báo cáo bài tp ln

- Wavelet Haar không liên tục và do đó không khả vi. Tuy nhiên, đặc tính
này có thể là một lợi thế cho việc phân tích các tín hiệu có sự chuyển đổi
đột ngột (tín hiệu rời rạc).
 Nhận xét dung lượng nén:
- Trong trường hợp dữ liệu hình ảnh, chúng ta có thể loại bỏ một tỷ lệ khá
lớn hệ số chi tiết và thu được kết quả có thể chấp nhận bằng mắt, đây có
thể là kiểu nén không mất dữ liệu.
- Trong một số ví dụ về nén hình ảnh, sử dụng phép biến đổi Haar (còn
được gọi là chuẩn hoá) với tỉ lệ 10:1 hoặc 2:1 được xem là rất gần với
nguyên bản => Với một tỉ lệ nén nhất định, việc chuẩn hoá dẫn đến các
giá trị gần đúng tốt hơn.
II. Kết luận:

 Thông qua đề tài này nhóm chúng tôi đã rút ra được những kết luận hữu ích:
- Nhóm đã nắm được một số khái niệm cơ bản về phép biến đổi Haar và
các ứng dụng của Haar liên quan đến công nghệ xử lý ảnh, y sinh , …
- Được giới thiệu và học cách sử dụng công cụ Matlab.
- Tìm hiểu thêm về phương pháp nén dữ liệu và quá trình sử dụng phép
biến đổi Haar để nén dữ liệu bằng công cụ Matlab.
- Biết được cách trình bày cấu trúc đầy đủ của một bài báo cáo, bài tiểu
luận.
- Rèn luyện được kỹ năng làm việc nhóm và tinh thần trách nhiệm.
III. Tài liệu tham khảo:

 https://web.archive.org/web/20110125080404/http://
online.redwoods.cc.ca.us/instruct/darnold/laproj/Fall2002/ames/paper.pdf
 https://fr.scribd.com/document/597644623/Btl-%C4%90stt-Haar
 https://en.wikipedia.org/wiki/Haar_wavelet

Nhóm 14 – ĐSTT (MT1007)_L05 13


Báo cáo bài tp ln

Lời cảm ơn
Nhóm 14 kính gửi lời cảm ơn chân thành và sâu sắc nhất đến cô Nguyễn Xuân
Mỹ, người đã giảng dạy trực tiếp bộ môn này và cung cấp cho chúng em những tư
liệu tham khảo quý báu từ đó góp phần cho chúng em có thể định hình và hoàn
chỉnh cho bài báo cáo này.
Bên cạnh đó, xuyên suốt thời gian làm bài báo cáo này, nhóm cũng đã nhận được
rất nhiều sự động viên và cổ vũ, hướng dẫn và chỉ bảo nhiệt tình của thầy cô, các
anh chị đi trước cùng lớp. Qua đó chúng em đã học được kỹ năng làm việc nhóm
và tự tin hơn trong học tập lẫn làm việc.
Mặc dù nhóm đã cố gắng song vẫn có một vài sai sót, thiếu kinh nghiệm khiến bài
báo cáo này không tránh được những sai sót trong cách viết, cách hiểu và lỗi trình
bày. Vì vậy, nhóm em rất mong nhận được sự góp ý và đánh giá chân thành của
quý thầy cô và các bạn.

Nhóm 14 – ĐSTT (MT1007)_L05 14

You might also like