MỤC LỤC
I. Giới thiệu chung
Lọc nhiễu là một công đoạn tiền xử lý trong xử lý ảnh số, nhằm nâng cao
chất lượng ảnh cho mắt con người hoặc để phục vụ cho các công đoạn sau, xử lý
tốt công đoạn này sẽ giúp cho các công đoạn sau tiến hành được dễ dàng hơn.
Có nhiều loại nhiễu khác nhau (nhiễu sạn, nhiễu cộng, nhiễu nhân ) và cũng
có nhiều phương pháp lọc nhiễu khác nhau.Tuy nhiên, tùy từng loại nhiễu mà ta
nên sử dụng phương pháp lọc nhiễu nào cho phù hợp vì không phải một phương
pháp có thể lọc được hết tất cả các loại nhiễu.
Với phạm vi yêu cầu của bài tập, em xin trình bày một số phương pháp lọc
nhiễu đã được học. Qua đó phân tích và đánh giá đối với từng phương pháp, đồng
thời em cũng xây dựng được một chương trình minh họa lọc ảnh màu 24 bit bằng
các phương pháp đó để so sánh.
Các phương pháp đó là :
1. Lọc trung bình.
2. Lọc trung vị
3. Lọc hình học.
4. Lọc điều hòa.
5. Lọc phi điều hòa.
1. Khái niệm
Nhiễu là những phần tử ảnh mà giá trị của nó trội so với các phần tử xung
quanh. Xét theo tần số, các phần tử nhiễu có tần số cao so với các điểm xung quanh.
Tuy nhiên, khái niệm trên chỉ mang tính tương đối. Chẳng hạn như ví dụ dưới đây
coi là những ảnh bị nhiễu:
1
2. Nhiễu thường gặp trong ảnh
1. Nhiễu cộng : nhiễu cộng thường phân bố khắp ảnh. Nếu ta gọi ảnh
quan sát( ảnh thu được) là X_qs, ảnh gốc la X_gốc và nhiễu là η. Ảnh
thu được có thể biểu diễn bởi:
X_qs = X_gốc + η.
2. Nhiễu nhân : Nhiễu nhân thường phân bố khắp ảnh. Nếu ta gọi ảnh
quan sát( ảnh thu được) là X_qs, ảnh gốc la X_gốc và nhiễu là η. Ảnh
thu được có thể biểu diễn bởi:
X_qs = X_gốc × η.
3. Nhiễu xung: là một loại nhiễu khá đặc biệt có thể sinh ra bởi nhiều lý
do khác nhau chẳng hạn: lỗi truyền tín hiệu, lỗi bộ nhớ, hay lỗi định
thời trong quá trình lượng tử hóa. Nhiễu này thường gây đột biến tại
2
một số điểm ảnh. Có 2 loại: Nhiễu xung đơn cực và nhiễu xung lưỡng
cực. Nhiễu xung lưỡng cực có hàm phân bố là:
P
a
z = a
p(z) = P
b
z = b
0 ortherwise
Nếu b>a, mức xám b xuất hiện như là điểm sáng của ảnh, a là điểm tối. Nếu
a>b, ngược lại.
a=b=0 Là nhiễu xung đơn cực
4. Nhiễu Gaussian: Bởi vì khả năng dễ ứng dụng toán của nó trong cả
lĩnh vực không gian và tần số, nhiễu Gaussian được sử dụng phổ biến
trong thực tiễn. Có hàm phân bố là:
Trong đó, z biểu diễn mức xám, µ là giá trị trung bình của z,σ là
độ lệch tiêu chuẩn, σ
2
là phương sai của z.
5. Nhiễu Uniform: Được cho bởi:
Giá trị trung bình và độ chênh lệch mật độ được cho bởi công thức:
II. Thuật toán
1. Thuật toán chung
Các phương pháp này đều dựa trên một nguyên tắc chung là sử dụng các cửa
sổ W(x,y) kích thước m x n. Ở trong bài tập lớn,em sử dụng ma trận 3x3 vì tính
chất của nó không quá phức tạp,dễ sử dụng và phổ biến nhất.
f(x-1,y-1) f(x-1,y) f(x-1,y+1)
f(x,y-1) f(x,y) f(x,y+1)
3
f(x+1,y-1) f(x+1,y) f(x+1,y+1)
Trong đó f(x,y) là giá trị của điểm ảnh đang xét.
2. Các thuật toán cụ thể
a. Lọc trung bình(Mean Filter)
1. Công thức tính:
• Trung bình cộng:
∑
∈
Λ
=
),(),(
),(*),(
1
),(^
yxWji
jifjiyxf
µ
Với
∑
∈
Λ=
),(),(
),(
yxWji
ji
µ
Trong đó W là mặt nạ với kích thước mxn,
),( ji
µ
là trọng số tại
điểm (i,j) ∈ W(x,y)
2. Thứ tự các bước của thuật toán như sau:
- Tính các giá trị f(i,j) của khung W(x,y), đưa kết quả vào mảng
một chiều f [].
- Tính f^(x, y) theo công thức trên.
- Đặt lại f(x,y) = f^(x, y)
b. Lọc trung vị(Median Filter)
1. Công thức của phương pháp này như sau:
f^(x, y) = median {f(i,j), (i,j) ∈ W(x,y)}
Trong đó :
+f^(x, y) là giá trị kỳ vọng của điểm (x,y) tức là giá trị mong muốn
gần với giá trị của điểm (x,y) ban đầu khi ảnh chưa bị nhiễu nhất.
+ median {f(i,j), (i,j) ∈ W(x,y)} là trung vị của dãy f(i,j) với
(i,j)∈W(x,y)
2. Ý tưởng để cài đặt thuật toán:
Xét tất cả các điểm ảnh của đối tượng:
4
- Tính các giá trị f(i,j) của khung W(x,y), đưa kết quả vào mảng
một chiều f [].
- Tìm trung vị của dãy f(i,j) vừa tìm được:
+ Sử dụng thuật toán sắp xếp nổi bọt để sắp xếp dãy vừa tìm
được
+ Đặt k = chiều dài của mảng f[] mod 2
+ trung vị = f[k]
- Đặt lại f(x,y) = trung vị.
3. Đọan mã giả thể hiện thuật toán
For y = 1 To H - 2
For x = 1 To W - 2
1) For k = 1 To 3
For q = 1 To 3
D((k-1)*3+q) = Getpixel(y+k-2, x+q-2)
Next k: Next q
2) Sort D: D(1) ≤ D(2) ≤ ≤ D(9)
3) f^(x,y) = D(5)
Next x: Next y
c. Lọc hình học( Geometric Filter)
mn
jifyxf
yxWji
/1
),(),(^
),(),(
=
∏
∈
1. Công thức của phương pháp
này như sau:
Đây là phương pháp sử dụng trung bình nhân các giá trị trong cửa sổ
W(x,y)
2. Ý tưởng để cài đặt thuật toán
Xét tất cả các điểm ảnh của đối tượng:
- Tính các giá trị f(i,j) của khung W(x,y), đưa kết quả vào mảng
một chiều f [].
- Tính trung bình nhân của các giá trị vừa tính được ở bước
trên.
- Đặt lại giá trị f(x,y) = trung bình nhân.
d. Lọc điều hòa(Harmonic Filter)
1. Công thức của phương pháp này như sau:
5
∑
∈
=
),(),(
),(
1
),(^
yxWji
jif
mn
yxf
Các bước của thuật toán cũng tương tự như hai phương pháp trên.
Chú ý xét điều kiện f(i,j) phải khác không. Ta có tử số bẳng tổng
nghịch đảo của các f(i,j) khác không
2. Ý tưởng để cài đặt thuật toán
- Tính các giá trị f(i,j) của khung W(x,y), đưa kết quả vào mảng
một chiều f [].
- Tính f^(x, y) theo công thức trên.
- Đặt lại f(x,y) = f^(x, y)
e. Lọc phi điều hòa(ContraHamonical Filter)
1. Công thức của phương pháp này như sau:
∑
∑
∈
∈
+
=
),(),(
),(),(
1
),(
),(
),(^
yxWji
Q
yxWji
Q
jif
jif
yxf
Q là bậc (hạng) của bộ lọc. Q = 0 là bộ lọc trung bình. Q= - 1 là bộ lọc
điều hòa.
Ở phương pháp này cần chú ý xét đến trường hợp tất cả các giá trị
trong dãy f[] tìm được đều bằng không. Trong trường hợp này ta giữ
nguyên giá trị cũ của điểm ảnh đó.
Các bước của thuật toán giống như phương pháp lọc điều hòa.
6
III. Kỹ thuật cài đặt
1. Đối tượng ảnh sử dụng trong chương trình :
Các ảnh màu 24bit bị nhiễu có định dạng *.BMP hoặc *. JPG.
2. Các lớp và hàm trong chương trình.
1. Lớp “Median”. Lớp này chứa hàm:
public static void Median_Filter(Bitmap b,int n)
Hàm này cho phép lọc ảnh bằng phương pháp trung vị
Đầu vào là ảnh Bitmap b, kích thước n
2. Lớp “ Mean”. Lớp này chứa hàm:
public static void Mean_Filter(Bitmap b,int n)
Đầu vòa là ảnh Bitmap b, kích thước ma trận cửa sổ size
Hàm này cho phép lọc ảnh bằng phương pháp trung bình
3. Lớp “ Geometric”. Lớp này chứa hàm:
public static void Geometric_Filter(Bitmap b,int n)
Đầu vòa là ảnh Bitmap b, kích thước ma trận cửa sổ size
Hàm này cho phép lọc ảnh bằng phương pháp hình học
4. Lớp “Harmonic”. Lớp này chứa hàm:
public static void Harmonic_Filter(Bitmap b,int n)
Đầu vòa là ảnh Bitmap b, kích thước ma trận cửa sổ size
Hàm này cho phép lọc ảnh bằng phương pháp điều hòa
5. Lớp “ContraHarmonic”. Lớp này chứa hàm:
public static void Contraharmonic_Filter(Bitmap b,double Q,int size)
Đầu vào là ảnh Bitmap b, bậc của bộ lọc, kích thước ma trận cửa sổ size
Hàm này cho phép lọc ảnh bằng phương pháp phi điều hòa
7
IV. Phân tích,đánh giá và so sánh các phương pháp lọc ảnh trên.
1. Phương pháp lọc trung vị
a. Nhận xét:
- Qua chạy thử chương trình em nhận thấy, phương pháp lọc trung vị tỏ ra
có hiệu quả đối với nhiễu sạn, điều này hoàn toàn phù hợp với lý thuyết, do
nhiễu sạn có các phần tử của nhiễu nhỏ nên xác xuất điểm nằm gần điểm
nhiễu trở thành trung vị là rất cao, vì vậy, sau khi lọc, các điểm nhiễu hầu
như sẽ được thay thế bởi thông tin của các điểm lân cận.
- Ngoài ra, đối với lọc trung vị, ta có thể cải tiến thành phương pháp lọc giả
trung vị với vị trí điểm được chọn trong dãy sau khi sắp xếp được tính bằng p
% x chiều dài của dãy.
+ Với p= 50% thì đây là phương pháp lọc trung vị.
+ Với p = 0% tức là ta lấy giá trị nhỏ nhất trong dãy, phương pháp trở
thành lọc nhỏ nhất (Min Filter).
+ Với p = 100% thì phương pháp trở thành lọc lớn nhất (Max Filter).
- Một trường hợp khác của lọc trung vị là lọc giả trung vị ( Midpoint filter).
Phương pháp này là sự kết hợp của phương pháp lọc không gian và phương
pháp trung bình. Giá trị của mỗi vị trí trong cửa sổ được tính bằng trung
bình cộng của giá trị nhỏ nhất trong dãy với giá trị lớn nhất trong dãy sau
khi đã sắp xếp theo chiều tăng ( hoặc giảm). Công thức cho phương pháp này
như sau:
f^(x,y) = ½( max (f(i,j))+ min (f(i,j))) , (i,j) thuộc W(x,y)
b. Ưu điểm :
Phương pháp lọc trung vị có hiệu qua khá cao và áp dụng được với
nhiều loại ảnh có nhiễu khác nhau. Quá trình lọc nhiễu không làm ảnh
hưởng nhiều tới ảnh gốc, ít làm mờ ảnh so với các bộ lọc làm trơn tuyến
tính. Đặc biệt, phương pháp này đồng thời có thể lọc tốt với cả 2 loại nhiễu
xung đơn cực và lưỡng cực.
Giá trị mức sáng được chọn để thay thế cho tâm của cửa sổ chính xác
bằng một mức sáng của một điểm trong cửa sổ vi thế không có sai số do
phải làm tròn từ tổ hợp của các điểm lân cận nếu chúng ta muốn làm việc
riêng với các số nguyên.
Độ phức tạp của thuật toán: (w*w)*(H*W)
Với w, H, W là kích thước cửa sổ trượt và kích thước ảnh
8
Đối với phương pháp lọc Min: Được áp dụng để tìm những điểm tối
nhất. Và phương pháp lọc tốt đối với nhiễu muối vì nhiễu muối thường có
giá trị cao ( sáng), do phương pháp này lấy giá trị nhỏ nhất trong dãy thay
cho tất cả các điểm ảnh trong cửa sổ nên xác suất để lấy điểm nhiễu là rất ít
( có thể là không).
Đối với phương pháp lọc Max: Phương pháp này lọc tốt đối với những
ảnh bị nhiễu tiêu vì nhiễu tiêu thường có giá trị thấp (tối), do phương pháp
này lấy giá trị lớn nhất trong dãy thay cho tất cả các điểm ảnh trong cửa sổ
nên xác suất để lấy điểm nhiễu là rất ít ( có thể là không).
c. Nhược điểm : với độ phức tạp trên nếu ảnh có kích thước lớn thì số phép toán là
khá lớn.
d. Kết quả sau khi chạy chương trình sử dụng phương pháp lọc trung vị
ảnh nhiễu ảnh sau khi lọc
2. Phương pháp lọc trung bình
a.Ưu điểm :
Với các ảnh nhiễu dàn đều trên toàn ảnh có khả năng làm mờ nhiễu,
giảm sự khác biệt về mức sáng giữa các điểm ảnh của ảnh gốc và các điểm
ảnh bị nhiễu tác động.
Phương pháp này cho làm được công việc như phương pháp lọc hình
học, tuy nhiên nó có ưu điểm hơn là nó không làm mờ ảnh nhiều như lọc
hình học.
Phương pháp này lọc tốt đối với những ảnh bị nhiễu random như nhiễu
Gaussian hoặc nhiễu Uniform.
Độ phức tạp của thuật toán: (w*w)*(H*W)
Với w, H, W là kích thước mặt nạ và kích thước ảnh
b. Nhược điểm :
9
Quá trình làm mờ nhiễu cũng đồng thời làm mờ ảnh, vì bộ lọc trung
bình có xu hướng cân bằng cường độ sáng các điểm ảnh. Cũng như bộ lọc
Median, với các ảnh có kích thước lớn thì số phép toán phải thực hiện lớn.
Bộ lọc trung bình có vai trò làm trơn ảnh có thể xem như bộ lọc thông
cao, nhưng lại làm mờ đường biên của các đối tượng bên trong ảnh, và lọc
nhiễu tiêu không được tốt lắm.
c. Kết quả sau khi sử dụng phương pháp lọc trung bình
ảnh nhiễu ảnh sau khi lọc
3. Phương pháp lọc hình học
a. Ưu điểm:
- Cả phương pháp lọc trung bình và lọc hình học đều là các phương pháp lọc
không gian, nó có vai trò làm trơn ảnh.
- Giống như phương pháp lọc trung bình, phương pháp này lọc tốt đối với
những ảnh bị nhiễu random như nhiễu Gaussian hoặc nhiễu Uniform.
b. Nhược điểm:
- Ảnh sau khi lọc cũng bị mờ đi và làm mất đi ít nhiều độ chi tiết của ảnh.
- Với nhiễu dạng đường như hình dưới đây thì kết quả cũng không tốt, nhiễu to
ra và đậm lên.
10
c. Kết quả chạy chương trình khi sử dụng phương pháp lọc hình học
ảnh nhiễu ảnh sau khi lọc
4. Phương pháp lọc điều hòa
a. Ưu điểm:
- Lọc tốt đối với nhiễu muối ( như hình dưới đây), và các kiểu nhiễu khác như
là nhiễu Gaussian
b. Nhược điểm:
- Phương pháp này không hiệu quả đối với nhiễu tiêu
c. Kết quả sau khi chạy chương trình sử dụng phương pháp lọc điều hòa
ảnh nhiễu ảnh sau khi lọc
5. Phương pháp lọc phi điều hòa
a. Ưu điểm:
11
- Phương pháp này tỏ ra khá hiệu quả đối với những vùng nhiễu đậm (như
hình dưới đây), và vẫn giữ được chất lượng của ảnh:
- Nếu Q > 0, lọc tốt đối với nhiễu tiêu, làm sạch nền nhưng lại làm mờ các vùng
tối.
- Với Q<0, lọc tốt đối với nhiễu muối.
b. Nhược điểm:
- Quá trình làm mờ nhiễu nhưng cũng làm mờ ảnh. Điều này được giải thích vì
phương pháp này làm phân tán các các điểm nhiễu ra xung quanh.
- Khi sử dụng phương pháp này cần phải biết trước nhiễu là tối hay sáng
( nhiễu muối hay nhiễu tiêu) để chọn giá trị Q cho phù hợp. Nếu không kết
quả sẽ xấu đi rất nhiều. Vì vậy cũng đồng nghĩa với việc là nó không thể lọc
đồng thời cả 2 loại nhiễu muối và nhiễu tiêu trên một ảnh.
c. Kết quả khi chạy chương trình cho phương pháp lọc phi điều hòa:
12
ảnh trước khi lọc
ảnh sau khi lọc với Q=2 ảnh sau khi lọc với Q=-2
13
ảnh trước khi lọc
ảnh sau khi lọc với Q=2 ảnh sau khi lọc với Q=-2
Kết luận: Có khá nhiều phương pháp để lọc nhiễu, tuy nhiên không có phương
pháp nào là tốt nhất, mỗi phương pháp sẽ phù hợp với một số loại nhiễu, một
bộ lọc có thể tốt với nhiễu này nhưng không tốt với nhiễu kia. Vì vậy khi tiến
hành lọc nhiễu, cần tìm ra bộ lọc thích hợp cho dữ liệu ảnh cần lọc. Nhìn chung,
sau khi xây dựng chương trình và test thì em nhận thấy phương pháp lọc trung
vị và phương pháp lọc phi điều hòa là khá hơn cả, lọc được với nhiều loại nhiễu
hơn. Các phương pháp lọc trung bình, lọc hình học lọc tốt với nhiễu Gaussian
hoặc nhiễu Uniform. Phương pháp lọc điều hòa lọc tốt với nhiễu muối.
14