You are on page 1of 24

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

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


KHOA KHOA HỌC VÀ ỨNG DỤNG

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


ĐẠI SỐ TUYẾN TÍNH

CHỦ ĐỀ BÀI TẬP 11:

ỨNG DỤNG PHÂN TÍCH SVD


TRONG KHỬ NHIỄU HÌNH ẢNH

Giảng viên hướng dẫn:


NGUYỄN HỮU HIỆP

Thành phố Hồ Chí Minh


Tháng 05/2023
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

Giới thiệu chung


Lớp: L12
Nhóm: 7
Chủ đề: 7
Danh sách thành viên:
Họ tên MSSV
Trần Thị Ngọc Mỹ 2212116
Võ Hoàng Ngoan 2212248
Lê Thị Mỹ Nguyên 2212298
Nguyễn Văn Minh 2212069
Nguyễn Thị Minh Ngọc 2212267
Nguyễn Hà Thanh My 2212102
Chu Minh Nhân 2051159

1
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

MỤC LỤC

Giới thiệu chung…………………………………………………………….1

Lời mở đầu……………………………………………………………...…..3

I. Cơ sở lý thuyết……………………………………………………........….4
1. Trị riêng – vector riêng của ma trận…………………………………..........4
2. Chéo hóa trực giao………………………………………………….....…..5
3. Phân tích SVD……………………………………………………………8

II. Ứng dụng phân tích SVD trong khử nhiễu hình ảnh và code MATLAB….11
1. Các bộ nhiễu ảnh………………………………………………………....11
2. Các loại bộ lọc ảnh……………………………………………………….13

III. Kết luận…………………………………………………………………22

IV. Các nguồn tham khảo……………………………………………………22

Lời cảm ơn……………………………………………………………....…..23

2
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

LỜI MỞ ĐẦU

Đại số tuyến tính bao hàm nhiều lý thuyết có tính ứng dụng cao trong thực tế và hầu hết các ngành khoa
học: công nghệ thông tin, kỹ thuật công nghiệp, kinh tế, môi trường, đồ họa, xử lý tín hiệu,… Tiêu biểu
phải kể đến công nghệ khử nhiễu hình ảnh ứng dụng phương pháp phân tích SVD – hay còn gọi là phân
tích suy biến (Singular value decomposition).
SVD là một trong những phương pháp thuộc nhóm Ma trận thừa số hóa (Matrix factorization) được phát
triển bởi những nhà nghiên cứu hình học vi phân. Ban đầu mục đích của phương pháp này là tìm ra một
phép xoay không gian sao cho tích vô hướng của các vector không thay đổi. Từ mối liên hệ này khái niệm
về ma trận trực giao đã hình thành để tạo ra các phép xoay đặc biệt. Phương pháp SVD đã được phát triển
dựa trên những tính chất của ma trận trực giao và ma trận đường chéo để tìm ra một ma trận xấp xỉ với ma
trận gốc. Phương pháp này sau đó đã được ứng dụng rộng rãi trong các lĩnh vực như hình học vi phân, hồi
qui tuyến tính, xử lý hình ảnh, clustering, các thuật toán nén và giảm chiều dữ liệu. Nhờ có sự hướng dẫn
tận tình của giảng viên, trong bài báo cáo sau đây nhóm chúng em xin được phép giới thiệu về ứng dụng
của SVD trong khử nhiễu hình ảnh.

3
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

I. CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH SVD

1. Trị riêng vector riêng của ma trận


1.1 Cơ sở lí thuyết
Định nghĩa: Cho AMₙ(K). Số λ K được gọi là giá trị riêng của ma trận A, nếu tồn tại vector giá trị X
≠0 sao cho AX0 = λ X0 Vector X0 được gọi là vector riêng của ma trận A tương ứng với giá trị riêng
X0.
Tính chất 1
Mỗi vector riêng có một giá trị riêng duy nhất. Giả sử ma trận A có vector riêng 𝑥 ứng với hai giá trị
riêng λ , λ thì A𝑥 = λ 𝑥 = λ 𝑥  ( λ − λ )𝑥=0  λ = λ .
Tính chất 2
Nếu x là vector riêng ứng với giá trị riêng 𝜆 của ma trận vuông A thì k𝑥 cũng là vector riêng ứng với
𝜆: A𝑥 = 𝜆𝑥  A(𝑘𝑥)=𝜆(𝑘𝑥)
Tính chất 3
Nếu 𝜆 là trị riêng của ma trận vuông A thì λ là trị riêng của ma trận A .
Giả sử x là vector riêng tương ứng với giá trị riêng 𝜆 của ma trận A, khi đó A 𝑥 = A (A 𝑥) =
A 𝜆𝑥 = 𝜆A 𝑥 = … = λ 𝑥
Tính chất 4
Giá trị riêng của ma trận vuông A là nghiệm của phương trình det(A − λI) = 0
Giả sử 𝜆 là giá trị riêng của ma trận A , khi đã tồn tại x≠0 mà A𝑥= 𝜆𝑥  (A-𝜆𝐼)𝑥 = 0.
Đây là một hệ phương trình tuyển tính, hệ này có nghiệm x≠0 khi và chỉ khi det (A-𝜆𝐼) = 0.
Tính chất 5
Ma trận vuông A có giá trị riêng 𝜆 thì họ vector riêng ứng với 𝜆 là nghiệm của (A-𝜆𝐼)𝑥 = 0
1.2. Các bước tìm trị riêng và vector riêng của ma trận
Bước 1: Tìm giá trị riêng
+ Lập phương trình det (A-𝜆𝐼) = 0
+ Tính định thức, giải phương trình
4
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

+ Tất cả các nghiệm của phương trình là tất cả các trị riêng của A.
Bước 2: tìm vector riêng
+ Tương ứng với trị riêng λ . Giải hệ phương trình (A-λ 𝐼)𝑥 = 0
+ Tất cả các nghiệm khác 0 của hệ là tất cả các vector riêng của A ứng với trị riêng λ .
+ Tương tự tìm vector riêng của A ứng với các trị riêng còn lại.
2. Chéo hóa trực giao
2.1 Cơ sở lý thuyết:
Định nghĩa 1. Ma trận AMₙ(R) gọi là ma trận đối xứng thực, nếu AT = A
1 2 3
Ví dụ 1: Ma trận A= 2 5 7 . Kiểm tra thấy AT = A. Như vậy A là ma trận đối xứng. Các phần tử của
3 7 4
A đối xứng với nhau qua đường chéo chính.
Định nghĩa 2: Ma trận A∈Mₙ(R) gọi là ma trận trực giao, nếu A-1 = AT.
-Từ định nghĩa ta có A.A-1 = A.AT  A.AT = I. Như vậy nếu tích của A và AT là ma trận đơn vị I, thì A là
ma trận trực giao.
Mệnh đề 1: Ma trận A là ma trận trực giao khi và chỉ khi họ vector cột (hoặc họ vector hàng) của A là họ
trực chuẩn.
Chứng minh
- Cho A là ma trận trực giao. Tức là A.AT= I. Để ý phép nhân hai ma trận với nhau, ta thấy: hàng i của A
nhân với cột j của ma trận A ta được phần tử ở hàng i và cột j của ma trận đơn vị. Cột j của AT là hàng j
của A.
, ế
Ta có: Ai*A*j= { , ế

Suy ra họ vector hàng của A là họ trực chuẩn.


Hoàn toàn tương tự, xét A.AT = I ta có họ vector cột của A là họ trực chuẩn.
Sử dụng mệnh đề này để tìm một ma trận trực giác A cấp n tùy ý như sau:
a) Trong Rn chọn một cơ sở E.
b) Dùng quá trình Gram-Schmidt (nếu cần), trực giao hóa E để được cơ sở trực giao F.

5
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

c) Chia một vector hàng trong F cho độ dài của nó ta có cơ sở trực chuẩn Q. Tạo ma trận A có họ
vector hàng(hoặc họ vector cột) là Q.
Khi đó ma trận A trực giao.
Ví dụ 2: Trong R3, chọn cơ sở E={ (1;1;1), (1;2;1), (1;1;2) }.
Dùng quá tình trực giao hóa Gram-Schmidt, ta được họ trực giao: F={ (1;1;1), (1;-2;1), (-1;0;1) }
Chia mỗi vector cho độ dài của nó, ta có họ trực chuẩn:

Q={ (1; 1; 1), (1; −2; 1), (−1; 0; 1)}


√ √ √

Lập ma trận trực giao có họ vector cột (hoặc họ vector hàng) là Q:

√ √ √
⎛ ⎞
A=⎜√ √
0⎟

⎝√ √ √ ⎠
Định nghĩa 3: Ma trận vuông, thực A gọi là chéo hoá trực giao được nếu A = PDP-1 = PDPT, với D là ma
trận chéo và P là ma trận trực giao.
Định lý 1: Cho A là ma trận đối xứng thực.
-Các khẳng định sau đây là đúng
1/ Trị riêng của A là các số thực.
2/ A luôn chéo hóa trực giao được.
3/ Hai vector riêng ứng với các giá trị riêng khác nhau vuông góc với nhau.
Mệnh đề 2: Nếu ma trận A chéo hóa trực giao được, thì A là ma trận đối xứng.
-Chứng minh:
Giả sử A chéo hóa trực giao được. Khi đó A= PDPT.
Suy ra, AT = (PDPT)T = (PT)TDTPT = PDPT = A. Hay A là ma trận đối xứng. Như vậy chỉ có ma trận đối
xứng thực mới chéo hóa trực giao được.
2.2 Chéo hóa trực giao ma trận đối xứng A
Bước 1: Tìm trị riêng của A.
Bước 2: Tìm một cơ sở của trực chuẩn của từng không gian con riêng.
6
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

-Để tìm cơ sở trực chuẩn của không gian con riêng E , ta theo các bước sau:
a) Chọn cơ sở Ek tùy ý của E .
b) Dùng quá trình Gram-Schmidt (nếu cần) để tìm cơ sở trực giao Fk.
c) Chia mỗi vector trong Fk cho độ dài của nó ta có cơ sở trực chuẩn Qk của E
Bước 3: Kết luận.
Ma trận A luôn chéo hóa trực giao được. Tức là A= PDPT, trong đó ma trận chéo D có các phần tử trên
đương chéo là các trị riêng của A, họ vector cột của ma trận trực giao P từ các vector riêng trong các cơ sở
trực chuẩn ở bước 2.
Ví dụ 3: Chéo hóa trực giao ma trận đối xứng thực:
2 −4
A=
−4 17
Lời giải
Bước 1: Tìm các trị riêng của A
A có hai trị riêng là λ = 1, λ = 18
Bước 2: Tìm cơ sở trực chuẩn của các không gian con riêng
-Ứng với λ = 1
-Giải hệ (A-𝜆𝐼)𝑥 = 0  X=(4α; α) . Cơ sở của E là (4; 1) .

-Cơ sở trực chuẩn của E là (4; 1)


-Ứng với λ = 18
-Giải hệ (A- λ 𝐼)𝑋 = 0  X=(α; −4α) . Cơ sở của E là (1; −4) .

-Cơ sở trực chuẩn của E là (1; −4) .


Bước 3: Kết luận:


Ma trận A chéo hóa trực giao được và A= PDPT, trong đó:
18 0
D=
0 1

7
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

√ √
P=
√ √

3. Phân tích SVD (Singular Value Decomposition)


3.1. Mục tiêu của phân tích suy biến SVD.
Phương pháp SVD sẽ tìm ra một lớp các ma trận xấp xỉ tốt nhất với một ma trận cho trước dựa trên khoảng
cách norm Frobenios giữa 2 ma trận. Người ta đã chứng minh được rằng ma trận xấp xỉ tốt nhất được biểu
diễn dưới dạng tích của 3 ma trận rất đặc biệt bao gồm 2 ma trận trực giao (orthogonal matrix) và 1 ma
trận đường chéo (diagonal matrix). Quá trình nhân ma trận thực chất là quá trình biến đổi các điểm dữ liệu
của ma trận gốc thông qua những phép xoay trục (rotation) và phép thay đổi độ lớn (scaling) và từ đó tạo
ra những điểm dữ liệu mới trong không gian mới. Điều đặc biệt của ma trận đường chéo đó là các phần tử
của nó chính là những giá trị riêng của ma trận gốc. Những điểm dữ liệu trong không gian mới có thể giữ
được 100% thông tin ban đầu hoặc chỉ giữ một phần lớn thông tin của dữ liệu ban đầu thông qua các phép
truncate SVD. Bằng cách sắp xếp các trị riêng theo thứ tự giảm dần trên đường chéo chính thuật toán SVD
có thể thu được ma trận xấp xỉ tốt nhất mà vẫn đảm bảo giảm được hạng của ma trận sau biến đổi và kích
thước các ma trận nhân tử nằm trong giới hạn cho phép. Do đó nó tiết kiệm được thời gian và chi phí tính
toán và đồng thời cũng tìm ra được một giá trị dự báo cho ma trận gốc với mức độ chính xác cao.
3.2 Cơ sở lí thuyết
Singular Value Decomposition là ứng dụng nổi bật trong Đại số tuyến tính. Bất kỳ một ma trận A nào với
cấp m x n (không nhất thiết phải là ma trận vuông), ta đều có thể phân tích thành dạng:
Am×n=Um×m∑m×n(Vn×n)T
- Trong đó: U,V là các ma trận trực giao,∑ là ma trận đường chéo không vuông với các phần tử trên
đường chéo σ1 ≥ σ2 ≥ … ≥ σr ≥ 0 = 0 = … 0 và r là rank của ma trận A. Lưu ý rằng mặc dù ∑ không
phải ma trận vuông, ta vẫn có thể coi nó là ma trận chéo nếu các thành phần khác không của có chỉ
nằm ở vị trí đường chéo, tức tại các vị trí có chỉ số hang và chỉ số cột là như nhau.
Hình 1 mô tả SVD của ma trận Am×n trong hai trường hợp: m < n và m > n. Trường hợp m = n có thể
xếp vào một trong hai trường hợp trên.
+ TH1: m<n

8
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

+ TH2: m>n

Hình 1: SVD cho ma trận A khi: m<n (hình trên), và m>n (hình dưới). ∑ là một ma trận đường
chéo với các phần tử trên đó giảm dần và không âm. Màu đỏ càng đậm thể hiện giá trị càng cao.
Các ô màu trắng trên ma trận này thể hiện giá trị 0.

3.3 SVD thu gọn


Viết lại biểu thức: Am×n=Um×m∑m×n(Vn×n)T dưới dạng tổng của các ma trận rank 1:
A = σ1u1𝒗𝑻𝟏 + σ2u2𝒗𝟐𝟐 + … + σrur 𝒗𝑻𝒓

Với chú ý rằng mỗi u1𝑣 , 1 ≤ i ≤ r là một ma trận có rank bằng 1.


Rõ ràng trong cách biểu diễn này, ma trận A chỉ phụ thuộc vào r cột đầu tiên của U,V và r giá trị khác 0
trên đường chéo của ma trận Σ. Vì vậy ta có một cách phân tích gọn hơn và gọi là compact SVD:
A = Ur Σr (Vr)T
Với Ur,Vr lần lượt là ma trận được tạo bởi r cột đầu tiên của U và V. Σr là ma trận con được tạo bởi r hàng
đầu tiên và r cột đầu tiên của Σ. Nếu ma trận A có rank nhỏ hơn rất nhiều so với số hàng và số cột r≪m,n,
ta sẽ được lợi nhiều về việc lưu trữ.
Dưới đây là ví dụ minh hoạ với m=4, n=6, r=2.

9
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

Hình 2: Biểu diễn SVD dạng thu gọn và biểu diễn ma trận dưới dạng tổng các ma trận có rank bằng 1.
3.4 Các bước phân tích SVD của một ma trận bất kì
Bước 1: Xác định ma trận A(cỡ bao nhiêu) để tiến hành phân tích SVD
Bước 2: Thực hiện chéo hóa trực giao : AA = QD Q
2.1 : Viết phương trình đặc trưng của AA . Từ đó chúng ta sẽ tính được các giá trị riêng của AA . Viết
được ma trận đường chéo D có các phần tử là những giá trị riêng, ta vừa tìm được.(Lưu ý phải sắp xếp nó
theo thứ tự giảm dần)
2.2 : Tìm vector riêng của AA . Từ đó ta tính được ma trận Q, các cột của Q là các vector riêng của AA .
Bước 3: Thực hiện chéo hóa trực giao A A = P𝐷 P .
 Tương tự các bước 2.1, 2.2 ta tính được P và 𝐷 .
 Chọn Σ bằng cách chọn ma trận cỡ tương ứng phù hợp với D hay D .
Sau đó lấy căn bậc 2 của tất cả những phần tử đường chéo.
Bước 4: : Vậy phân tích SVD của ma trận A sẽ là :
A =Q Σ (𝑃 ) .
Nhận xét: Như vậy từ dữ liệu ban đầu, chúng ta có thể viết nó dưới dạng một ma trận. Quá trình chéo hóa
trực giao ma trận và ma trận chuyển vị của nó, chúng ta được phân tích SVD. Trên cơ sở đó, ta có thể dễ
dàng ứng dụng chúng vào nhiều lĩnh vực khác nhau trong khoa học.

10
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

II. ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU


HÌNH ẢNH VÀ CODE MATLAB
Trong cuộc sống ngày nay, mỗi một người đều luôn muốn lưu giữ những giá
trị, những kỉ niệm khó quên vào trong những bức ảnh bằng những thiết bị điện tử
như điện thoại, máy ảnh,... Tuy là chụp bằng các thiết bị hiện đại nhưng cũng sẽ có
vài lần chúng ta cũng bị những tình huống chụp hình bị nhiễu, nhèo thế nhưng
những bức ảnh đó lại quan trọng không thể chụp lại được thì ta chỉ có thể tìm cách
để khử nhiễu hình ảnh đó. Và qua đó ta có thể thấy các loại nhiễu ảnh và kèm theo
các bộ xử lí nhiễu ảnh

3.1. Các bộ nhiễu ảnh:


a) Nhiễu Salt and Pepper:
- Còn gọi là nhiễu xung, nhiễu nhị phân.
𝑃 𝑛ế𝑢 𝑧 = 𝑎
𝑝(𝑧) = 𝑃 𝑛ế𝑢 𝑧 = 𝑏
0
- Nếu b > a, mức xám b sẽ xuất hiện tương ứng là điểm sáng trên ảnh còn mức xám a sẽ tương ứng với
điểm đen xuất hiện trên ảnh.
- Để cộng nhiễu “Salt and pepper” vào một ảnh ta dùng câu lệnh sau : t = imnoise(image,’salt &
pepper’)
- Số lượng nhiễu được cộng vào mặc định là 10%. Ta có thể cung cấp thêm các
thông số để thay đổi lượng nhiễu được cộng vào này.

11
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

b.Nhiễu Gaussian:
- Là một dạng lý tưởng của nhiễu trắng, được gây ra bởi những dao động ngẫu
nhiên của tín hiệu. Nhiễu Gaussian là nhiễu trắng có phân bố chuẩn.
1
𝑝(𝑧) = 𝑒( ) /
√2𝜋𝛿
- Nếu ta có ảnh I, nhiễu Gaussian là N ta sẽ có ảnh nhiễu = I +N. Để tạo ra ảnh với
nhiễu Gaussian ta dùng câu lệnh sau : t = imnoise(image,’gaussian’)
- Giá trị mặc định của kỳ vọng và phương sai của nhiễu là 0 và 0.01.

c. Nhiễu Speckle:
- Có thể được mô hình bằng cách nhân các giá trị ngẫu nhiên với giá trị của các pixel. Nhiễu Speckle là
vấn đề quan tâm chủ yếu trong các ứng dụng radar.
- Trong MATLAB ảnh với nhiễu Speckle được tính toán : I*(1 + N)
t = imnoise(t,’speckle’)
- Nhiễu N có phân phối chuẩn với giá trị trung bình =0. Có thể cung cấp thêm thông số để xác định giá trị
kỳ vọng của N, giá trị mặc định của nó là 0.04.

12
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

- Nếu tín hiệu hình ảnh là tín hiệu tuần hoàn, chúng ta có thể có ảnh bị ảnh hưởng bởi nhiễu tuần hoàn.
- Hàm imnoise không có tùy chọn để tạo ra nhiễu tuần hoàn. Ta có thể tạo ra một dạng đơn giản của nhiễu
tuần hoàn bằng cách cộng vào ảnh một ma trận tuần hoàn.

3.2.Các loại bộ lọc ảnh.


a. Mean filtering( bộ lọc trung bình)
- Bộ lọc trung bình là thay thế mỗi giá trị điểm ảnh trong một hình ảnh với giá trị trung bình của giá trị các
điểm ảnh lân cận, trong đó có điểm ảnh đó. Đây là một bộ lọc tuyến tính đơn giản với tác dụng làm mịn
ảnh, khử nhiễu,..
-Bộ lọc trung bình hiệu quả nhất trong việc khử nhiễu Gaussian nhưng đổi lại là sự mất các chi tiết hình
ảnh cao tần. Kích thước kernel lớn hơn sẽ có hiệu quả lọc lơn hơn nhưng làm giảm chất lượng hình ảnh
nên lọc này không hiệu quả trong việc khử nhiễu ‘salt and pepper’ .
CODE MATLAB:
I=imread('eight.tif'); % Read in image
Isp = imnoise(I,'salt & pepper'); % add 3% (0.03) salt and pepper noise
Ig = imnoise(I,'gaussian',0.02); % add Gaussian noise (with 0.02 variance)
k = ones(3,3) / 9; % define mean filter
I_m = imfilter(I,k); % apply to original image
Isp_m = imfilter(Isp,k); % apply to salt and pepper image
Ig_m = imfilter(Ig,k); % apply tp gaussian image
subplot(1,3,1), imshow(I_m); % Display result image

13
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

subplot(1,3,2), imshow(Isp_m); % Display result image


subplot(1,3,3), imshow(Ig_m); % Display result image
KẾT QUẢ

b. Median filtering ( Lọc trung vị)


- Bộ lọc thường được sử dụng trong xử lý ảnh. Bộ lọc trung vị vượt qua những hạn chế của bộ lọc trung
bình. Bộ lọc này thay thế điểm ảnh đích bằng giá trị trung vị của các điểm ảnh lân cận và chính điểm ảnh
đó. Bộ lọc Median sẽ tìm giá trị trung vị trong tất cả các điểm ảnh và thay vào điểm ảnh trung tâm. Các bộ
lọc trung vị tối ưu hơn bộ lọc trung bình ở chỗ nó giữ độ nét tần số cao trong khi vẫn loại bỏ nhiễu.
CODE MATLAB
I=imread('eight.tif'); % Read in image
14
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

Isp = imnoise(I,'salt & pepper'); % add 3% (0.03) salt and pepper noise
Ig = imnoise(I,'gaussian',0.02); % add Gaussian noise (with 0.02 variance)
I_m = medfilt2(I,[3 3]); % apply to original image
Isp_m = medfilt2(Isp,[3 3]); % apply to salt and pepper image
Ig_m =medfilt2(Ig,[3 3]); % apply tp gaussian image
subplot(1,3,1), imshow(I_m); % Display result image
title('loc anh goc');
subplot(1,3,2), imshow(Isp_m); % Display result image
title('loc salt and pepper');
subplot(1,3,3), imshow(Ig_m); % Display result image
title('loc gaussian');
KẾT QUẢ

15
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

c. Rank filtering
- Các bộ lọc trung vị chỉ là một trường hợp đặc biệt của bộ lọc Rank. Bộ lọc Rank
là một bộ lọc phi tuyến tính với các bước thực hiện như sau:
(1) Xác định các vùng lân cận của điểm ảnh mục tiêu (N × N).
(2) Sắp xếp chúng theo thứ tự tăng dần (đầu tiên là giá trị thấp nhất, (N × N), giá trị
cao nhất).
(3) Chọn bậc của các bộ lọc (từ 1 đến N).
(4) Thiết lập giá trị lọc bằng với giá trị của điểm ảnh đã chọn.
CODE MATLAB
I=imread('eight.tif'); % Read in image
Isp = imnoise(I,'salt & pepper'); % add 3% (0.03) salt and pepper noise
Ig = imnoise(I,'gaussian',0.02); % add Gaussian noise (with 0.02 variance)
I_m = ordfilt2(I,25,ones(5,5)); % apply to original image
Isp_m = ordfilt2(Isp,25,ones(5,5)); % apply to salt and pepper image
Ig_m =ordfilt2(Ig,25,ones(5,5)); % apply tp gaussian image
subplot(1,3,1), imshow(I_m); % Display result image
title('loc anh goc');
subplot(1,3,2), imshow(Isp_m); % Display result image
title('loc salt and pepper');
subplot(1,3,3), imshow(Ig_m); % Display result image

16
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

title('loc gaussian');

d. Lọc Gaussian
- Bộ lọc Gaussian rất quan trọng đối với cả lý thuyết và thực tiễn. Chúng ta lọc hình ảnh bằng cách sử dụng
một kernel dạng đối xứng xuyên tâm của hàm Gauss 2-D liên tục.
- Xấp xỉ rời rạc để hàm liên tục này sử dụng hai tham số tự do là :
(1) các kích thước mong muốn của các kernel (như là một mặt nạ lọc N × N);
(2) giá trị độ lệch chuẩn của hàm Gaussian.
- Ứng dụng của bộ lọc Gaussian là làm mịn ảnh, nó khác với bộ lọc trung bình ở chỗ là: thứ nhất, mức độ
làm mịn được điều khiển bởi sự lựa chọn các tiêu chuẩn thông số độ lệch, chứ không phải bởi giá trị tuyệt
đối của kích thước hạt nhân. Thứ 2, hàm Gaussian có một thuộc tính khá đặc biệt, đó là biến đổi Fourier
của nó là một hàm Gaussian, điều đó rất thuận tiện cho việc phân tích miền tần số của bộ lọc.
17
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

- Một hàm Gauss với giá trị lớn của s là một ví dụ về bộ lọc thông thấp, trong đó hàm lượng tần số không
gian cao(ví dụ: các tính năng cạnh sắc nét) của hình ảnh được loại bỏ. Để hiểu được điều này đòi hỏi chúng
ta có nền tảng tốt trong các biến đổi Fourier và phân tích trong miền tần số.
CODE MATLAB
I=imread('eight.tif'); % Read in image
Isp = imnoise(I,'salt & pepper'); % add 3% (0.03) salt and pepper noise
Ig = imnoise(I,'gaussian',0.02); % add Gaussian noise (with 0.02 variance)
12

k = fspecial('gaussian', [5 5], 2); % define Gaussian filter


I_g = imfilter(I,k); % apply to original image
Isp_g = imfilter(Isp,k); % apply to salt and pepper image
Ig_g = imfilter(Ig,k); % apply tp gaussian image
subplot(1,3,1), imshow(I_g); % Display result image
subplot(1,3,2), imshow(Isp_g); % Display result image
subplot(1,3,3), imshow(Ig_g); % Display result image
KẾT QUẢ

18
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

Bộ lọc trung bình hài ( Harmonic Mean filter):


𝑚𝑛
𝑓(𝑥, 𝑦) =
1
∑( , )∈ 𝑔(𝑠, 𝑡)
+ Bộ lọc này làm việc tốt với nhiễu Salt, nhưng lại không hiệu quả với nhiễu
Pepper.
- Bộ lọc điểm giữa ( Midpoint filter):
1
𝑓(𝑥, 𝑦) = max {𝑔(𝑠, 𝑡)} + min {𝑔(𝑠, 𝑡)}
2 ( , )∈ ( , )∈

Bộ lọc tính điểm trung bình giữa giá trị Max và giá trị Min trong vùng bao quanh
bởi Sxy.
19
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

Bộ lọc làm việc tốt với những nhiễu có phân phối.


c) Và ứng dụng khử ảnh vào các lĩnh vực đời sống
Khử nhiễu ảnh sử dụng phân tích SVD cũng có thể trở thành một công cụ hữu ích trong lĩnh vực giám sát
giao thông. Khái niệm giám sát giao thông không còn quá xa lạ với chúng ta ngày nay. Chất lượng hình
ảnh thu được bước bởi camera hay máy ảnh giám giát đóng vai trò thiết yếu trong việc xử lý đúng người,
đúng hành vi phạm. Khi đó, việc áp dụng phân tích SVD để khử nhiễu ảnh giám sát sẽ hỗ trợ giảm thiểu
tối đa thời gian xử lý, cũng như là công sức của người giám sát.

Hình 16. Ảnh chụp biển số xe vi phạm được khử nhiễu nhờ SVD

Hình 17. Ảnh chụp tàu hỏa được khử nhiễu SVD

20
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

Không chỉ áp dụng vào lĩnh vực giao thông vận tải mà ứng dụng để khử nhiễu ảnh còn áp dụng,
ứng dụng trong những lĩnh vực như: Y tế, trí tuệ nhân tạo,... Ứng dụng này đã giúp cho nhiều người biết
rõ bệnh mình (lĩnh vực y tế), giúp cảnh sát bắt được những tội phạm qua những chiếc camera quay mờ,
hay bị nhiễu,...
Chú thích:
Các lệnh Matlab
STT Lệnh Ý nghĩa
1 imread(filename) Đọc ảnh được chỉ định bởi filename.
2 Imshow(I) Hiển thị hình ảnh I.
3 subplot(m,n,p) Chia màn hình thành lưới m x n, và tạo
các trục ở vị trí p.
imnoise(image,’salt & pepper’,d) Thêm nhiễu salt & pepper vào ảnh với
d là độ dày đặc của nhiễu (mặc định :
0.05).
4 imnoise(image,’gaussian’, m, var_gause) Thêm nhiễu Gaussian vào ảnh với kì
vọng m, phương sai var_gause (mặc
định : 0, 0.01).
5 imnoise(t,’speckle’, var_speckle) Thêm nhiễu speckle với phương sai
var_speckle.
6 ones(sz1,...,szN) Trả về 1 mảng gồm toàn số 1 với kích
thước các chiều sz1,sz2,…,szN.
7 imfilter(A,h) Lọc mảng đa chiều A với bộ lọc đa
chiều h.
8 medfilt2(I,[m n]) Thực hiện lọc trung vị ảnh I trong 2
chiều, mỗi điểm ảnh xuất ra chứa giá
trị giữa của m x n điểm ảnh xung
quanh từ ảnh đầu vào.
9 ordfilt2(A,order,domain) Thay thế mỗi thành phần trong A bởi
thành phần order trong tập được chỉ
định bởi các thành phần khác không
trong domain
10 fspecial('gaussian',hsize,sigma) Trả về bộ lọc tần số thấp đối xứng
xoay có kích thước hsize với độ lệch
chuẩn sigma

21
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

III. KẾT LUẬN


-Những ứng dụng phân tích SVD để khử nhiễu ảnh dường như đã nắm một vai trò quan trọng trong các
ngành nghề, lĩnh vực trong cuộc sống, xã hội nay.

Nhất là đối với những ngành kĩ thuật. Và bên cạnh việc ứng dụng để khử nhiễu hình ảnh thì từ cơ sở lý
thuyết phân tích SVD cũng có nhiều ứng dụng giúp ích cho xã hội này vô cùng:

+ Khử nhiễu âm thanh

+ Nén ảnh

+ Giảm số chiêu của dữ liệu

+ Cực trị rời rạc

IV. CÁC NGUỒN 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).
- Aisha, 2019. Viblo. [Online] : https://viblo.asia/p/handbook-singular-values-decomposition-va-mot-
so-ung-dung-yMnKMOoml7P .
- Anon. 2017. Bài 26: Singular Value Decomposition. s.1.:Machine Learning Cơ Bản :
https://machinelearningcoban.com/2017/06/07/svd/.
- Steve Brunton. 2020. [Online] : Singular Value Decomposition (SVD): Overview
Available at: https://youtu.be/gXbThCXjZFM.
- MIT OpenCourseWare. 2016 : Singular Value Decomposition (the SVD)
Available at: https://youtu.be/mBcLRGuAFUk.

HẾT
22
ỨNG DỤNG PHÂN TÍCH SVD TRONG KHỬ NHIỄU HÌNH ẢNH

LỜI CẢM ƠN
Trong suốt quá trình học tập, chúng em đã nhận được rất nhiều sự giúp đỡ từ các anh chị khóa trên, các
bạn sinh viên cùng khóa và đặc biệt là giảng viên hướng dẫn – thầy Nguyễn Hữu Hiệp. Vì kiến thức của
bản thân vẫn còn hạn hẹp nên chúng em rất mong nhận được sự đóng góp của thầy cô.
Lời cuối nhóm chúng em xin cảm ơn quý thầy/cô đã dành thời gian cho đề tài của nhóm.

23

You might also like