Phép biến đổi Haar với tác dụng nén hình ảnh để nó chiếm ít không gian lưu trữ hơn, Nén tín hiệu 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ề
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
BÁO CÁO BÀI TẬP LỚN MÔN HỌC: ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI 14: NÉN ẢNH BẰNG PHÉP BIẾN ĐỔI HAAR
GVHD: Th.S Nguyễn Xuân Mỹ Lớp L16- Nhóm 14 – Học kì 241
Thành phố Hồ Chí Minh, Tháng 11 Năm 2024
Trang 2DANH SÁCH THÀNH VIÊN
thành
Trang 3MỤC LỤC
1 GIỚI THIỆU CHUNG 4
1.1 SƠ LƯỢC VỀ THUẬT TOÁN HAAR: 4
1.2 TÁC DỤNG CỦA PHÉP BIẾN ĐỔI HAAR: 4
1.3 ĐÔI NÉT VỀ ẢNH 5
2.ỨNG DỤNG PHÉP BIẾN ĐỔI HAAR TRONG NÉN ẢNH 5
2.1 GIẢI THÍCH THUẬT TOÁN 5
2.2 NÉN MẤT DỮ LIỆU 7
2.3 NÉN KHÔNG MẤT DỮ LIỆU 8
CHƯƠNG II: MATLAB VÀ GIẢI THÍCH 8 1 TỔNG QUAN VỀ MATLAB 8
2 CÁC DÒNG CODE ĐƯỢC SỬ DỤNG: 8
3 CODE MATLAB VÀ THỰC TẾ 9
4 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM CỦA NÉN ẢNH BẰNG PHƯƠNG PHÁP BIẾN ĐỔI HAAR 12
4.1 ƯU ĐIỂM CỦA NÉN MẤT DỮ LIỆU BẰNG PHÉP BIẾN ĐỔI HAAR 12
4.2 HẠN CHẾ CỦA NÉN MẤT DỮ LIỆU BẰNG PHÉP BIẾN ĐỔI HAAR 12
CHƯƠNG III: TỔNG KẾT 13 1 KIẾN THỨC 13
1.1 ỨNG DỤNG CỦA KHÔNG GIAN VECTOR TRONG PHÉP BIẾN ĐỔI HAAR 13
2 ĐIỂM CẦN CẢI THIỆN 15
3 KẾT LUẬN 16
Trang 4CHƯƠNG I: CƠ SỞ LÝ THUYẾT
1 GIỚI THIỆU CHUNG
1.1SƠ LƯỢC VỀ THUẬT TOÁN HAAR:
Alfred Haar (1885-1933) là một nhà toán học người Hungary đã làmviệc trong phân tích nghiên cứu các hệ thống trực giao của các hàm, phương trình vi phân một phần, xấp xỉ Chebyshev và bất bình đẳng Năm 1909, Haar giới thiệu lý thuyết sóng Haar Ở dạng rời rạc sóng Haar có liên quan đến một hoạt động toán học được gọi là biến đổi Haar
Biến đổi Haar là biến đổi đơn giản nhất trong số các biến đổi wavelet Biến đổi này nhân chéo một hàm với Haar wavelet với nhiều lần thay đổi và trải dài khác nhau, giống như biến đổi Fourier nhân chéo một hàm chống lại sóng hình sin với hai pha và nhiều đoạn trải dài
Biến đổi Haar là một trong những hàm 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 cục bộ của tín hiệu
Biến đổi Haar có nguồn gốc từ ma trận Haar Một ví dụ về ma trận biến đổi Haar 4x4 được hiển thị dưới đây:
H4 = 12 [111111−1−1√❑]
1.2TÁC DỤNG CỦA PHÉP BIẾN ĐỔI HAAR:
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.
Phép biến đổi Haar với tác dụng nén hình ảnh để nó chiếm ít không gian lưu trữ hơn,
Nén tín hiệu 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.
Truyền điện tử nhanh hơn và ở mức độ chi tiết tăng dần.
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 và được sử dụng rộng rãi trong nhiều ứng dụng khác nhau Phát hiện biên độc lập với tỷ lệ, phân tích tín hiệu.
Trang 5� Phép biến đổi Haar phụ thuộc vào trung bình và các giá trị 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 đó
1.3 ĐÔI NÉT VỀ ẢNH
Gốc của ảnh (ảnh tự nhiên):Ảnh liên tục về không gian và độ sáng Để xử lí bằng máy tính, ảnh cần được phải số hóa
Số hóa ảnh : sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợpvới ảnh thật về vị trí (không gian) và độ sáng (mức xám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh ( PEL : PictureElement) hay gọi tắt là Pixel Trong khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x,y)
Điểm ảnh (Pixel):là một phần tử của ảnh số tại toạ độ (x,y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọilà một phần tử ảnh
Mức xám : cường độ sáng của nó được gán bằng giá trị số tại điểm đó
Ảnh số : tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gầnvới ảnh thật
2.Ứ NG DỤNG P HÉP BIẾN ĐỔI HAAR TRONG N ÉN ẢNH
2.1 GIẢI THÍCH THUẬT TOÁN
2.1.1 Chuẩn bị ảnh
Ảnh gốc (có thể là ảnh xám hoặc ảnh màu) được chia thành các khối nhỏ hơn Thường thì ảnh được chuyển về dạng ma trận hai chiều để dễ xử lý
2.1.2 Phép biến đổi Haar một chiều
Phép biến đổi Haar đơn giản nhất là biến đổi một chiều, được áp dụng theo từng dòng và từng cột của ảnh Cụ thể: Với một dãy số (các giá trị pixel) của ảnh, phép biến đổi Haar lấy trung bình và độ chênh lệch giữa các cặp giá trị liên tiếp
Công thức cho một dãy số [x_1;x_2;x_3;…;x_n ]
Trang 6Trung bình : s_i=(x_(2i-1)+x_2i)/2
Độ chênh lệch : d_i=(x_(2i-1)-x_2i)/2
Kết quả là dãy đã được chuyển đổi sẽ bao gồm các giá trị trung bình sss và các giá trị chi tiết ddd, trong đó sss giữ lại thông tin chính của dãy ban đầu và ddd là thông tin chi tiết
2.1.3 Phép biến đổi Haar hai chiều
Để áp dụng phép biến đổi Haar cho ảnh hai chiều (ma trận pixel), thuật toán áp dụng biến đổi một chiều lần lượt theo từng dòng và từng cột Quá trình này bao gồm:
● Bước 1: Áp dụng phép biến đổi Haar một chiều cho từng dòng của ma trận pixel để
tạo ra một ma trận mới gồm phần thô và phần chi tiết
● Bước 2: Áp dụng tiếp phép biến đổi Haar một chiều cho từng cột của ma trận mới để
thu được các hệ số thô và chi tiết cuối cùng
● Kết quả là một ma trận với bốn vùng chính:
Góc trên trái: chứa các hệ số thô nhất của ảnh, giữ lại các đặc điểm quan trọng nhất
Ba vùng còn lại: chứa các hệ số chi tiết (theo chiều ngang, dọc, và chéo) biểu diễn thông tin chi tiết của ảnh
2.1.4 Nén dữ liệu
Sau khi áp dụng phép biến đổi Haar, các hệ số nhỏ (thường là các hệ số chi tiết) có thể
bị loại bỏ (hoặc làm tròn về 0) mà không ảnh hưởng nhiều đến chất lượng tổng thể của ảnh Việc loại bỏ các hệ số này giúp giảm kích thước dữ liệu lưu trữ
2.2 Nén mất dữ liệu
Là một phương pháp sử dụng phép biến đổi Haar (Haar Wavelet Transform - HWT) để giảm kích thước tệp ảnh, trong đó một phần thông tin không quan trọng sẽ bị loại bỏ Đây
là một ứng dụng của phép biến đổi sóng con trong nén ảnh mà không yêu cầu phải giữ lại mọi chi tiết của ảnh, đồng thời vẫn đạt được tỷ lệ nén cao và duy trì chất lượng hình ảnh
đủ tốt cho người dùng
Trang 7Quy trình nén mất dữ liệu bằng phép biến đổi Haar
2.2.1 Chia ảnh thành các khối nhỏ:
o Trước tiên, ảnh được chia thành các khối nhỏ, thường là các khối 2x2 pixel hoặc 4x4 pixel Từ đó, mỗi khối sẽ được xử lý riêng biệt trong phép biến đổi Haar
2.2.2 Áp dụng phép biến đổi Haar lên các khối:
o Phép biến đổi Haar trên mỗi khối được tách sẵn để tính toán giá trị trung bình
và hiệu giữa các điểm ảnh trong khối
o Tính giá trị trung bình của các điểm ảnh trong mỗi khối
o Tính hiệu giữa các giá trị điểm ảnh trong mỗi khối
Ví dụ: Với một khối 2x2 ảnh, phép biến đổi Haar sẽ tạo ra một giá trị trung bình và một giá trị khác đại diện cho sự khác biệt giữa các pixel trong khối
2.2.3 Biến đổi tiếp tục theo nhiều mức:
o Sau khi thực hiện phép biến đổi Haar trên các khối nhỏ, các thành phần tần số cao (các chi tiết không quan trọng của ảnh) sẽ được loại bỏ
o Tiếp tục áp dụng phép biến đổi Haar trên các thành phần còn lại của ảnh, từ
đó giảm dần độ phân giải của các chi tiết nhỏ
2.2.4 Lọc và loại bỏ các thành phần không quan trọng:
o Các thành phần có giá trị gần bằng 0 (thường là các chi tiết tần số cao mà mắt người không nhận thấy) sẽ bị loại bỏ hoặc mã hóa
o Quá trình này giúp giảm bớt thông tin dư thừa, làm giảm kích thước ảnh mà không làm mất đi các chi tiết quan trọng
2.2.5 Mã hóa và nén:
o Sau khi đã loại bỏ các thành phần không quan trọng, ảnh sẽ được mã hóa với các kỹ thuật nén dữ liệu như Huffman coding hoặc Run-Length Encoding (RLE) để giảm kích thước tệp ảnh
o Kết quả là một tệp ảnh có kích thước nhỏ hơn so với ảnh gốc, nhưng vẫn giữ lại những phần quan trọng của hình ảnh
Trang 82.2.6 Tái tạo ảnh (giải nén):
Để tái tạo lại ảnh, quá trình ngược lại sẽ được thực hiện: giải mã dữ liệu nén và áp
dụng phép biến đổi Haar ngược (Inverse Haar Transform) để phục hồi ảnh
Tuy nhiên, vì trong quá trình nén mất dữ liệu, thông tin đã bị loại bỏ, ảnh tái tạo
sẽ không hoàn toàn giống ảnh gốc
2.3 Nén không mất dữ liệu
2.3.1 Khái niệm nén không mất dữ liệu
Xét một đoạn dữ liệu:
X0 = (154 150156152160160152156)T
Thực hiện chia dữ liệu thành từng cặp và tính trung bình cộng và sự khác biệt của các
cặp Khi đó ta thu được:
X1 = (152154 160154 220−2)T 4 số đầu tiên là thành phần tần số thấp, 4 số tiếp theo là
thành phần tần số cao
Ta có thể sử dụng ma trận để mô tả quá trình sau:
A=(1
2
1
20 0 0 0 0 0 0 0
1 2
1
20 0 0 0 0 0 0 0
1 2
1
20 0 0 0 0 0 0 0
1 2
1 2
1
2−1
20 0 0 0 0 0 0 0
1
2−1
20 0 0 0 0 0 0 0
1
2−1
20 0 0 0 0 0 0 0
1
2−1
2)
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:
Khi đó nghịch đỏa của H là HT Ta dùng ma trận H để nén dữ liệu thay cho A Ta có
Y1 = HX0 Giải nén dữ liệu ta được X0 = HtY1 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|=√❑
Trang 9Tức là độ dài của vector X và vector HX là như nhau.
Ngoài ra góc giữa hai vector u và v thỏa mãn cos cos θ= (u , v )
Qua phép biến đổi H, góc giữa hai vector Hu và Hv thỏa
( H v)
T
H T H v
¿u ∨×∨v∨¿=cos cos θ¿¿
¿
¿
¿
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=H1X0=152154 160154 220−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
hiệu của các cặp ta được:
Y1=H2Y1=(306 314−26 2√❑)❑
, với
H2=(√❑
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 hiệu của chúng, ta có
Y3=H3Y2=(310√❑)❑
, với
H3=(√ 2
2
√ 2
2 0 0 0 0 0 0
√ 2
2 −√ 2
2 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 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 = H3H2H1X0 ↔ Y3 = QX0
Giải nén dãy dữ liệu Y3 tìm lại dãy X0 = Q-1Y3 ↔ X0 = QTY3, với:
Q=(√❑
Trang 10Ví dụ: Dưới đây là hình khi nén không mất dữ liệu:
Trang 11Nén không mất dữ liệu trong phép biến đổi haar là một phương pháp sử dụng phép biến đổi haar để giảm kích thước của dữ liệu mà không làm mất đi thông tin quan trọng của chúng Có thể hiểu phép biến đổi haar sử dụng để phân tích tín hiệu thành các thành phần tần số khác nhau thông qua một chuỗi các phép toán thay đổi giá trị các dữ liệu ban đầu
2.3.2 Một số đặc điểm của nén không mất dữ liệu
▪ Bảo toàn chất lượng dữ liệu
▪ Giảm kích thước nhưng không làm ảnh hưởng đến dữ liệu quan trọng
▪ Tiết kiệm được không gian lưu trữ
▪ Có khả năng phục hồi hoàn toàn sau khi nén dữ liệu như âm thanh, hình ảnh, video, văn bản,
2.3.3 Ứng dụng phổ biến
▪ Nén không mất dữ liệu được sử dụng trong các chệ thống điều khiên tự động( ví dụ như điều khiến Robot, hệ thống điều khiển thông minh), tín hiệu đầu vào có thể được nén bằng phép biến đổi haar nhằm giảm tải cho hệ thống xử lý trong khi vẫn bảo toàn được các đặc trưng quan trọng
▪ Trong các hệ thống nhận dạng hình ảnh, chẳng hạn như nhận dạng khuôn mặt, vân tay hoặc các hệ thống an ninh sử dụng phép biến đổi haar nhằm giảm bớt dung lượng
mà không giảm khả năng nhận diện
▪ Nén không mất dữ liệu còn được sử dụng rộng rãi trong các lĩnh vực như đang phương tiện, truyền thông và lưu trữ thông tin
MATLAB là một hệ thống tương giao, các phần tử dữ liệu là một mảng (mảng này không đòi hỏi về kích thước) Chúng cho phép giải quyết các vấn đề liên quan đến lập trình bằng máy tính, đặc biệt sử dụng các phép tính về ma trận hay vector và có
Trang 12thể sử dụng ngôn ngữ C hoặc Fortran lập trình rồi thực hiện ứng dụng lập trình đó bằng các câu lệnh goị từ MATLAB MATLAB được viết tắt từ chữ "MATrix
LABoratory" tức là thư viện về ma trận, từ đó phần mềm MATLAB được viết nhằm cung cấp cho việc truy cập vào phần mềm ma trận một cách dễ dàng, phần mềm ma trận này được phát triển bởi các công trình Linpack và Eispack Ngày nay MATLAB được phát triển bởi Lapack và Artpack tạo nên một nghệ thuật phần mềm cho ma trận
2 C ÁC DÒNG CODE ĐƯỢC SỬ DỤNG :
clear all Xóa tất cả các biến trong không gianlàm việc MATLAB.
imread('filenam') Đọc hình ảnh từ tệp đồ họa (tệp ảnh)
và lưu vào biến
imresize(A, [NUMROWS
NUMCOLS])
Thay đổi kích thước hình ảnh A về số dòng và số cột chỉ định
rgb2gray(image) Chuyển hình ảnh màu RGB (Red,Green, Blue) sang ảnh thang độ xám.
ảnh, trả về số dòng và số cột
round(' ') Làm tròn các giá trị của biến về sốnguyên gần nhất.
imshow('filename') Hiển thị hình ảnh từ tệp đồ họa trongcửa sổ đồ họa.
xlabel('filename') Thêm nhãn văn bản vào trục x của đồ
thị
subplot(2,1,n) Chia cửa sổ figure thành 2 phần theochiều dọc, hiển thị đồ thị ở phần thứ n
(1 hoặc 2)
a Code
clear all;
% Đọc và tiền xử lý ảnh
I = imread('anh.jpg');
I = imresize(I, [128 128]); % Resize ảnh về kích thước 128x128
Trang 13I = rgb2gray(I); % Chuyển ảnh sang grayscale
% Biến đổi Haar theo chiều dọc
k = 1;
for i = 1:2:size(I, 2)
I1(:, k) = (I(:, i) + I(:, i + 1)) / 2; % Tính giá trị trung bình của cặp pixel dọc
k = k + 1;
end
% Biến đổi Haar theo chiều ngang
for i = 1:2:size(I, 2)
I1(:, k) = (I(:, i) - I(:, i + 1)) / 2; % Tính giá trị hiệu của cặp pixel dọc
k = k + 1;
end
% Làm tròn các giá trị
I1 = round(I1);
% Biến đổi Haar theo chiều ngang
k = 1;
for i = 1:2:size(I, 1)
I2(k, :) = (I1(i, :) + I1(i + 1, :)) / 2; % Tính giá trị trung bình của cặp pixel ngang
k = k + 1;
end
% Biến đổi Haar theo chiều dọc
for i = 1:2:size(I, 1)
I2(k, :) = (I1(i, :) - I1(i + 1, :)) / 2; % Tính giá trị hiệu của cặp pixel ngang
k = k + 1;
end
% Làm tròn các giá trị
I2 = round(I2);
% Hiển thị ảnh gốc và ảnh đã nén
subplot(2, 1, 1);
imshow(I);
xlabel('Ảnh ban đầu');
subplot(2, 1, 2);
imshow(I2);
xlabel('Ảnh sau khi nén');
Trang 14b Thực tế
Dung lượng Ảnh ban đầu Dung lượng ảnh sau khi bị nén
Trang 154 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM CỦA NÉN ẢNH BẰNG PHƯƠNG PHÁP BIẾN ĐỔI HAAR
4.1 Ưu điểm của nén mất dữ liệu bằng phép biến đổi Haar
1 Giảm kích thước tệp ảnh:
● Nén mất dữ liệu bằng phép biến đổi Haar giúp giảm kích thước ảnh rất nhiều, giúp tiết kiệm dung lượng lưu trữ và giảm băng thông khi truyền tải ảnh qua mạng
2 Đơn giản và nhanh chóng:
● Phép biến đổi Haar có thể tính toán nhanh và không yêu cầu quá nhiều tài nguyên tính toán, do đó rất hiệu quả cho các ứng dụng yêu cầu tốc độ xử lý cao
3 Chất lượng ảnh chấp nhận được:
● Mặc dù một số chi tiết của ảnh bị loại bỏ, nhưng nếu tỷ lệ nén không quá cao, chất lượng hình ảnh vẫn có thể chấp nhận được với mắt người
4.2 Hạn chế của nén mất dữ liệu bằng phép biến đổi Haar
1 Mất chi tiết quan trọng:
● Các chi tiết nhỏ hoặc các chi tiết quan trọng có thể bị loại bỏ trong quá trình nén, dẫn đến mất đi các thông tin cần thiết cho các ứng dụng đặc biệt (ví dụ: nhận diện khuôn mặt, y tế, v.v.)
2 Hiện tượng răng cưa và mờ:
● Khi nén ảnh ở tỷ lệ cao, người dùng có thể nhận thấy hiện tượng răng cưa (blockiness) hoặc ảnh bị mờ, đặc biệt ở những vùng có chuyển động hoặc chi tiết phức tạp
3 Khó phục hồi hoàn toàn: