MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 227

Nén ảnh số

206

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:

1

2

1

...

...

0

r

r

p

σ

σ

σ

σ

σ

+

≥ ≥

>

= =

= (13.8)

với r là hạng của ma trận A và p = min{m,n}.
Để 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

T

A

vào hai vế của (13.7), ta có:

2

.

(

) .

. .

. . .

. . .

. .

T

T T

T

T

T

T

T

T

T

A A

USV

USV

V S U U S V

V S S V

V S V

=

=

=

=

(13.9)

(do .

T

U 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

.

T

A A vì từ (13.9) ta thấy các trị riêng của

.

T

A 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

.

T

A A chính là các cột của V.

Buớc 2: tìm ma trận U. Nhân hai vế của (13.7) với

T

A

và sử dụng: .

T

V V

I

= , ta cũng có:

2

.

. .

T

T

A A

U S U

=

(13.10)

Vậy các cột của U chính là các vector riêng của

.

T

A A .

Cuối cùng, ta phân tích ma trận A dưới dạng như sau:

(

)

1

1

1

0

T

T

r

m

r

r

T
n

v

A

u

u

u

v

v

σ

σ

⎛ ⎞

⎜ ⎟

⎜ ⎟

⎜ ⎟

=

⎜ ⎟

⎜ ⎟

⎟⎜ ⎟

⎠⎝ ⎠

(13.11)

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

13.3.2. ÖÙNG DUÏNG SVD ÑEÅ NEÙN AÛNH SOÁ

Bằng cách phân tích ma trận ảnh A dưới dạng

T

A USV

=

, 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à r < m, hoặc r < n, ta có thể giảm đi những
thông tin thừa:

1 1 1

2 2 2

1

1

...

0.

T

T

T

T

r r r

r

r

A

u v

u v

u v

u v

σ

σ

σ

+

+

=

+

+ +

+

+ ... (13.12)

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

T

USV

:

>> [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 (13.12) để viết một hàm nén ảnh
dùng giải thuật SVD. Bạn đọc có thể tham khảo hàm svdcompr ở phần phụ lục. Cú pháp của
nó là:

>> im = svdcompr (infile,singvals,outfile)

trong đó

infile

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.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.