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

Báo cáo bài tập lớn môn đại số tuyến tính phương pháp phân tích trị riêng

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 (184.83 KB, 11 trang )

hange E

d f- x

U
B
to

e.

lic

k

chang

C

w

c

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN
MÔN: ĐẠI SỐ TUYẾN TÍNH
GVHD: Trần văn quang
SVTH:
LÊ VĂN HỒNG


12455

TRẦN VĂN LINH

68899

HỒNG THÌ NHÀN

24889

LÊ VĂN VINH

12577

NGUYỄN KIM CƯƠNG
HỒ THỊ HÀ
HỒ BÍCH LIÊN

35667
245666
245566

ĐÀ NẴNG, NGÀY 15 THÁNG 12 NĂM 2023

Downloaded by tran quang ()

om

.p


t

Y

N
Y
U
B
to
k
lic
C

ww

w

di

!

XC

O
W

PD

F-


N

!

om

O
W

t

or

di

ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X


.p

d f- x

chang

e.

c


hange E

d f- x

U
B
to

e.

lic

k

chang

C

w


c

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN
MÔN: ĐẠI SỐ TUYẾN TÍNH
GVHD: ThS. Nguyễn Xuân Mỹ
SVTH:
Đinh Văn Linh

1812806

Nguyễn Trương Hoàng Minh

2114064

Nguyễn Châu Long

2111666

Nguyên Lê Khánh Minh

2114058

Lý Minh Luân

2111701


Tống Phước Hồng Minh

2111764

Nguyễn Vương Long

1911520

TP. HỒ CHÍ MINH, 3/2022

Downloaded by tran quang ()

om

.p

t

Y

N
Y
U
B
to
k
lic
C

ww


w

di

!

XC

O
W

PD

F-

N

!

om

O
W

t

or

di


ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E

d f- x


U
B
to

e.

lic

k

chang

C

w

c

MỤC LỤC
MỤC LỤC........................................................................................................................i
CHƯƠNG 1

CƠ SỞ LÝ THUYẾT...........................................................................1

1.1

Phương pháp phân tích trị riêng.........................................................................1

1.2


Cách tìm ma trận S, U, V...................................................................................1

CHƯƠNG 2

VÍ DỤ...................................................................................................3

CHƯƠNG 3

ỨNG DỤNG PHÂN TÍCH SVD ĐỂ NÉN DỮ LIỆU........................5

3.1

Ứng dụng phân tích SVD để nén ảnh số............................................................5

3.2

Nội dung code....................................................................................................6

3.3

Giải thích code...................................................................................................7

i
Downloaded by tran quang ()

om

.p


t

Y

N
Y
U
B
to
k
lic
C

ww

w

di

!

XC

O
W

PD

F-


N

!

om

O
W

t

or

di

ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X


.p

d f- x

chang

e.

c


hange E

d f- x

U
B
to

e.

lic

k

chang

C

w


c

CHƯƠNG 1

CƠ SỞ LÝ THUYẾT

1.1 Phương pháp phân tích trị riêng
Phương pháp phân tích trị riêng (SVD – Singular Value Decomposition) là một đề tài
rất được quan tâm của đại số tuyến tính. Phương pháp này có nhiều ứng dụng thực tế,
một trong số đó là ứng dụng trong kỹ thuật nén ảnh. Đặc điểm quan trọng của phương
pháp này là nó có thể áp dụng cho bất kỳ ma trận thực mxn nào. Nội dung của nó là:
phân tích một ma trận A cho trước thành 3 ma trận U, S, V, sao cho
A = USVT (1)
trong đó U và V là các ma trận trực giao và S là ma trận đường chéo. Ma trận U là ma
trận gồm các vector riêng trái của A, ma trận V là ma trận gồm các vector riêng phải
của A và ma trận S là ma trận đường chéo, mỗi phần tử đường chéo là một trị riêng
của A. Các trị riêng được sắp trên đường chéo chính theo thứ tự sau:

s1 > s2 > ... > sr > sr+1 = ... = sp = 0
với r là hạng của ma trận A và p = min{m,n}.
1.2 Cách tìm ma trận S, U, V
Để tìm các ma trận S, U, V, ta thực hiện các bước như sau:
Bước 1: Tìm ma trận V. Nhân AT vào hai vế của (1), ta có:
AT.A = (USVT )T USVT = V.ST .UT .U.S.VT
= V.ST .S.VT
= V.S2.VT
Do UT.U=I. Như vậy, để tìm ma trận S và V, ta chỉ cần tìm các trị riêng và các vector
riêng của AT.A vì từ (1) ta thấy các trị riêng của AT.A chính là bình phương các phần
tử của S còn các vector riêng của AT.A chính là các cột của V.

Bước 2: Tìm ma trận U. Nhân hai về của (1) với AT và sử dụng: VTV = I
ta cũng có :
AAT = U.S2 .UT

1
Downloaded by tran quang ()

om

.p

t

Y

N
Y
U
B
to
k
lic
C

ww

w

di


!

XC

O
W

PD

F-

N

!

om

O
W

t

or

di

ww

F


hange E

or

PD

lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E

d f- x

U
B
to


e.

lic

k

chang

C

w

c

Vậy các cột của U chính là các vector riêng của A.AT. Cuối cùng, ta phân tích ma trận A dưới
dạng như sau:

[]
T

A=(u1 … ur … um)

[

σ1 ¿ ¿
¿ σ 1 ¿¿¿¿¿ ¿ …¿¿¿¿¿ ¿ 0¿
¿… ¿ ¿

]


V1

T
Vr

T
Vn

A và S là các ma trận kích thước mxn, U là ma trận mxm và V là ma trận nxn.

2
Downloaded by tran quang ()

om

.p

t

Y

N
Y
U
B
to
k
lic
C


ww

w

di

!

XC

O
W

PD

F-

N

!

om

O
W

t

or


di

ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E


d f- x

U
B
to

e.

lic

k

chang

C

w

c

CHƯƠNG 2

(3

2

2

Chọn ma trận A= 2 3 −2


VÍ DỤ

)

Đầu tiên tính các giá trị đơn lẻ σ i bằng cách tìm các giá trị riêng của A AT

(

17 8
T
AA = 9 17

)

Đa thức đặc trưng là det( AA T - λ I ) = λ 2−34 λ+ 225=(λ−25)(λ−9)
Vì vậy các giá trị đơn lẻ là σ 1 = √ 25=5 và σ 2=√ 9=3
Bây giờ chúng ta tìm đúng vector đơn lẻ ( các cột của V) bằng cách tìm một trực
chuẩn của các vector riêng của AT A . Nó có thể tiếp tục bằng cách tìm các vector đơn
lẻ bên trái ( cột của U) thay vào đó. Các giá trị riêng của AT A là 25, 9, 0, và kể từ khi
T
A A đối xứng thì các vector đơn lẻ sẽ trực giao.
Đối với λ=25 ta có:

(

−12 12
2
T
A A−25 I = 12 −12 −2
2

−2 −17

(

)

)

1 −1 0
0 1 . Một vector độ dài đơn vị trong nhân của ma trận
0 0 0

Hàng giảm xuống bằng 0
đó là

( )

1/ √ 2
v 1= 1/ √ 2
0

Đối với λ=9 ta có:

(

)

(

)


4 12 2
1 0 −1/4
T
A A−9 I = 12 4 −2 hàng giảm xuống bằng 0 1 1/4 .
2 −2 −1
0 0
0

3
Downloaded by tran quang ()

om

.p

t

Y

N
Y
U
B
to
k
lic
C

ww


w

di

!

XC

O
W

PD

F-

N

!

om

O
W

t

or

di


ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E

d f- x


U
B
to

e.

lic

k

chang

C

w

c

( )

1 / √18
v
=
−1
/ √18 .
Một vector độ dài đơn vị trong nhân của ma trận đó là 2
4 / √ 18

Đối với vector đơn lẻ cuối cùng chúng ta có thể tính tốn hạt nhân của AT A hoặc tìm


()

a
v
v
v
=
một vector đơn vị vng góc với 1và 2. Để vng góc với 1 b chúng ta cần −a=b
c

, điều kiện sau đó là

( )

a
T
v 2 v 3=0 trở thành 2 a/ √ 18+ 4 c / √18=0 hoặc−a=2 c . vì vậy v 3= −a và để nó là một
−a/2

( )

2/3
v
=
a=2/3
−2/3
chiều dài đơn vị chúng ta cần
chính vì vậy 3
.

−1/3

Vì vậy tại thời điểm này chúng ta biết rằng

T

A=U Σ V =U

(

(

1/ √ 2
1/ √ 2
0
5 0 0
1/ √ 18 −1/ √ 18 4 / √ 18
0 3 0
2/3
−2 /3
−1/3

)

)
1
σ

Cuối cùng chúng ta có thể tính U theo công thức σ ui =A v i hoặc ui= A v i. Dẫn đến


(

)

U = 1/ √ 2 1 / √2 . Vì vậy SVD của ma trận A là:
1/ √ 2 −1 / √2

(

1/ √ 2
1/ √2
0
1/ √2 1/ √2 5 0 0
A=U Σ V =
1/ √ 18 −1/ √18 4 / √ 18
1/ √2 −1/ √ 2 0 3 0
2/3
−2 /3
−1/3
T

(

)(

)

4
Downloaded by tran quang ()


)

om

.p

t

Y

N
Y
U
B
to
k
lic
C

ww

w

di

!

XC

O

W

PD

F-

N

!

om

O
W

t

or

di

ww

F

hange E

or

PD


lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E

d f- x

U
B
to

e.

lic

k


chang

C

w

c

CHƯƠNG 3

ỨNG DỤNG PHÂN TÍCH SVD ĐỂ NÉN DỮ LIỆU

3.1 Ứng dụng phân tích SVD để nén ảnh số
Mục đích của việc nén ảnh số là mã hoá các dữ liệu ảnh về một dạng thu gọn, tối thiểu
hoá cả số bit dùng để biểu diễn ảnh lẫn các sai khác do quá trình nén gây ra. Tầm quan
trọng của vấn đề nén ảnh có thể thấy rõ qua các số liệu cụ thể: với một bức ảnh trắng
đen kích thước 512x512 pixels, mỗi pixel được biểu diễn bởi 8 bits (biểu diễn một
trong 256 giá trị mức xám), cần khoảng 256 Kbytes dữ liệu. Với ảnh màu cần gấp ba
lần con số này. Với các dữ liệu video, cần 25 khung hình trên một giây, như vậy một
đoạn video chỉ 30s phải cần đến 540MB dữ liệu, một con số quá lớn. Do đó vấn đề nén
ảnh là hết sức cần thiết.
Nói chung, các phương pháp nén ảnh chủ yếu được phân thành 2 nhóm: nhóm khơng
tổn hao và nhóm có tổn hao. Các phương pháp nén ảnh không tổn hao cho phép biểu
diễn ảnh với chất lượng hoàn toàn ngang bằng với ảnh gốc. Các phương pháp này dựa
trên các giải thuật nén được áp dụng cho tất cả các đối tượng dữ liệu nói chung chứ
khơng chỉ riêng dữ liệu ảnh, ví dụ mã Huffman, mã số học, mã Golomb, ... Tuy nhiên,
các phương pháp này khơng lợi dụng được những đặc tính riêng của dữ liệu ảnh và tỷ
lệ nén rất thấp. Do đó, trong thực tế, các phương pháp nén có tổn hao là các phương
pháp được sử dụng chủ yếu. Với các phương pháp này, ln có sự đánh đổi giữa dung

lượng ảnh với chất lượng ảnh.
Bằng cách phân tích ma trận ảnh A dưới dạng A=USV T , ta có thể biểu diễn xấp xỉ ma
trận A bằng ít phần tử hơn. Nếu hạng của ma trận A là rnhững thơng tin thừa:
A=s1u1vT1 + s2u2vT2 + … + srurvTr + sr+1ur+1vTr+1 + … (2)
Hơn nữa, các trị riêng được sắp xếp theo thứ tự giảm dần, do đó những số hạng phía
sau sẽ có ít ảnh hưởng đến ảnh và có thể bỏ đi các số hạng này.
MATLAB có hàm svd để thực hiện nhân tử hoá ma trận A thành USVT

5
Downloaded by tran quang ()

om

.p

t

Y

N
Y
U
B
to
k
lic
C

ww


w

di

!

XC

O
W

PD

F-

N

!

om

O
W

t

or

di


ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E

d f- x


U
B
to

e.

lic

k

chang

C

w

c

>> [U,S,V] = svd(A)
Chúng ta có thể sử dụng hàm này kết hợp với phương trình (2) để viết một hàm nén
ảnh dùng giải thuật SVD. Ví dụ hàm svdcompr. Cú pháp của nó là:
>> im = svdcompr (infile,singvals,outfile)
trong đó infile và outfile là tên các file ảnh gốc và ảnh nén, singvals là số các trị riêng
lớn nhất được giữ lại.

3.2 Nội dung code
close all
clear all
clc

%doc va chuyen doi hinh anh
inImage=imread('Hinh_anh.jpg');
inImage=rgb2gray(inImage);
inImageD=double(inImage);
% phan tich hinh anh vua roi bang SVD
[U,S,V]=svd(inImageD);
% Su dung cac he so k khac nhau de
% nen anh
dispEr = [];
numSVals = [];
for N=5:25:300
% Luu cac gia tri singular values vao mot bien C
C = S;
% Bo cac gia tri k khong can thiet de nen anh
C(N+1:end,:)=0;
C(:,N+1:end)=0;
% Tao lai anh moi su dung gia tri k moi
D=U*C*V';
% bieu dien hinh anh va tinh toan loi sai
figure;
buffer = sprintf('Anh nen sau khi su dung %d gia tri singular
values', N)
imshow(uint8(D));
title(buffer);
% luu cac gia tri de bieu dien len do thi
error=sum(sum((inImageD-D).^2));
dispEr = [dispEr; error];

6
Downloaded by tran quang ()


om

.p

t

Y

N
Y
U
B
to
k
lic
C

ww

w

di

!

XC

O
W


PD

F-

N

!

om

O
W

t

or

di

ww

F

hange E

or

PD


lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E

d f- x

U
B
to

e.

lic

k


chang

C

w

c

numSVals = [numSVals; N];
end
% bieu dien do thi
figure;
title('Khac biet khi nen');
plot(numSVals, dispEr);
grid on
xlabel('So gia tri Singular Values su dung');
ylabel('Su khac biet giua anh ban dau va sau khi nen');

3.3 Giải thích code
Các câu lệnh trong thuật tốn được sử dụng như sau:
- close all: đóng tất cả các đồ thị.
- clear all: xóa tất cả các biến, hàm, khỏi bộ nhớ. Lệnh này làm cho bộ nhớ trống hồn
tồn.
- clc: Xóa cửa sổ lệnh.
- imread: sẽ đọc một file thành một ma trận.
- rgb2gray: chuyển đổi hình ảnh RGB thành trắng đen bằng cách loại bỏ các thơng tin
màu sắc và độ bão hịa nhưng vẫn giữ độ sáng.
- double: chuyển đổi sang số thập phân với độ chính xác kép.
- [U, S, V]=sdv(A): thực hiện phân rã giá trị đơn lẻ của ma trận A, sao cho A = U * S
* V '.

- figure: Tạo mới hình ảnh (đồ thị).
- sprintf: hiển thị thơng tin lên màn hình.
- %d: đối số là số nguyên được viết dưới dạng thập phân.
- imshow: cho chúng ta một hình ảnh trong định dạng tiêu chuẩn là 8-bit, giống như
trong một trình duyệt web.
- sum: tính tổng.
- title: đặt tiêu đề cho đồ thị.

7
Downloaded by tran quang ()

om

.p

t

Y

N
Y
U
B
to
k
lic
C

ww


w

di

!

XC

O
W

PD

F-

N

!

om

O
W

t

or

di


ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X

.p

d f- x

chang

e.

c


hange E

d f- x


U
B
to

e.

lic

k

chang

C

w

c

- plot (numSVals, dispEr): Vẽ đồ thị tuyến tính trong khơng gian 2 chiều. (vẽ giá trị
numSVals theo giá trị dispEr).
- grid on: hiển thị lưới tọa độ.
- xlable, ylable: đặt tên cho trục x,y.

8
Downloaded by tran quang ()

om

.p


t

Y

N
Y
U
B
to
k
lic
C

ww

w

di

!

XC

O
W

PD

F-


N

!

om

O
W

t

or

di

ww

F

hange E

or

PD

lOMoARcPSD|9242611

C
-X


.p

d f- x

chang

e.

c



×