Download as pdf or txt
Download as pdf or txt
You are on page 1of 91

Thị giác máy tính

Bài 2: Tăng cường chất lượng ảnh – Lọc ảnh


Thị giác máy tính
Bài 2: Tăng cường chất lượng ảnh – lọc ảnh
Nội dung
• Nhắc lại: biểu diễn ảnh số
• Tăng cường độ tương phản trên ảnh
‒ Kéo giãn histogram
‒ Cân bằng histogram
‒ Biến đổi phi tuyến
• Nhân chập và lọc ảnh
‒ Nhân chập
‒ Một số bộ lọc tuyến tính
• Một số bộ lọc khác

3
Biểu diễn ảnh số

4
Biểu diễn ảnh số
• Giá trị màu tại mỗi điểm ảnh, vùng ảnh
160 Tọa độ Cột
p(64,160,1:3) = [205, 163, 182]
64

Số hàng
Số cột
Số kênh màu
Tọa độ hàng

R(64:95,160:191,:) : 32 x 32 pixels
[205 203 188 181
186 108188
[163182
194 100 100
[182
85 191
86 19411489112 112
84
181 187
92 79
77 189
95 92 9093 98
195 192 183]
85 87
10876]82 97
85 92
90 98 101 89]
Biểu diễn ảnh số

• Ảnh số chứa các điểm ảnh rời rạc


• Giá trị điểm ảnh: [90, 0, 53]

‒ “grayscale”
(or “intensity”): [0,255]

‒ “color”
[249,
• RGB: [R, G, B]
215,
• Lab: [L, a, b] 203]
• HSV: [H, S, V] [213, 60, 67]

6
Biến đổi giá trị điểm ảnh

• Phép biến đổi đơn lẻ (Isolated transformations) - Toán tử điểm của


điểm ảnh trên một ảnh
‒ Đọc giá trị một điểm ảnh  thay thế giá trị đó bằng giá trị khác
‒ Ví dụ: tăng cường tương phản, cân bằng histogram
• Phép biến đổi cục bộ (local transformations)
‒ Đọc giá trị nhiều điểm ảnh lân cận  tính toán giá trị mới cho một điểm ảnh
‒ Nhân chập, tương quan,…
• …và phép biến đổi toàn cục (global transformations)
‒ Đọc giá trị tất cả các điểm ảnh của một ảnh  tính toán giá trị mới cho 1 điểm
ảnh
‒ FFT, …

7
Biến đổi giá trị điểm ảnh

Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal.

8
Nội dung
• Nhắc lại: biểu diễn ảnh số
• Tăng cường độ tương phản trên ảnh
‒ Kéo giãn histogram
‒ Cân bằng histogram
‒ Biến đổi phi tuyến
• Nhân chập và lọc ảnh
‒ Nhân chập
‒ Một số bộ lọc tuyến tính
• Một số bộ lọc khác

9
Độ sáng của ảnh (Brightness)
• Trung bình cường độ sáng của tất cả các điểm ảnh
‒ Thể hiện mức sáng, tối trên ảnh

10
Độ tương phản (contrast)
• Thể hiện sự phân biệt dễ dàng các đối tượng trong ảnh
• Một số cách tính
‒ Độ lệch chuẩn của độ sáng tất cả các điểm ảnh trên ảnh

‒ Tỉ lệ sai khác giữa độ sáng lớn nhất và bé nhất

11
Histogram & độ tương phản

Low- contrast
image

High- contrast
image

12
Histogram & độ sáng

Dark image

Light image

13
Ví dụ

14
Tăng cường độ tương phản
• Thay đổi giá trị điểm ảnh để có độ tương phản cao hơn
• Một số phương pháp:
‒ Kéo giãn dải động ảnh (Linear stretching of intensity
range):
• Kéo giãn tuyến tính - Linear stretching
• Kéo giãn tuyến tính với ngưỡng bão hòa - Linear
stretching with saturation
• Biến đổi tuyến tính từng đoạn - Piecewise linear
transformation
‒ Biến đổi phi tuyến. VD: log, gama correction
‒ Cân bằng histogram

15
Phép toán ở mức điểm ảnh
• Giá trị mới của điểm ảnh chỉ phụ thuộc vào giá trị hiện
tại của điểm ảnh đó, không phụ thuộc vào các điểm lân
cận
s = T(r)
 r = f(x, y)
 s = g(x, y)
 T: transformation function

16
Biến đổi đồng nhất / tuyến tính

s=T(r) s=r s=T(r) s = a. r + b

light
light

T(r) T(r)

m
m

r
r Dark
Dark

m n L-1
Dark Light Dark Light

17
Biến đổi tuyến tính / phi tuyến theo
đoạn
s=T(r) s=T(r)

light
light

T(r) T(r)

n n

r Dark r
Dark

m m
Dark Light Dark Light

18
Kéo giãn tuyến tính
 Linear transform

19
Kéo giãn tuyến tính
(r2, s2)
255

• If (r1, s1) = (rmin, 0) ;


(r2, s2) = (rmax, 255) T(r)
‒ Kéo giãn tuyến tính

0 (r1, s1)
0 rmi rsmin rmax
• If (r1, s1) = (rsmin, 0), rsmin > rmin 255
n
(r2, s2)
(r2, s2) = (rsmax, 255) rsmax < rmax
‒ Kéo giãn tuyến tính với ngưỡng
T(r)
bão hòa

0 (r1, s1)
0 rmin rsmin rsmax rmax

20
Biến đổi tuyến tính theo đoạn

• Biến đổi tuyến tính theo đoạn:


‒ Tăng hoặc giảm độ tương phản L-1
ở các khoảng mức xám khác
nhau (r2, s2)
3L/4
‒ Mức độ tăng, giảm khác nhau ở
mỗi khoảng giá trị T(r)
L/2
• VD hàm bên:
‒ Giá trị đầu ra từ (0, 0) đến (r1, s1) giảm
L/4
‒ Giá trị đầu ra từ (r1, s1) đến (r2, s2) tăng.
(r1, s1)

0 L/4 L/2 3L/4 L-1

21
Biến đổi tuyến tính theo đoạn
L-
L-1
1

• Trường hợp đặc biệt 3L/4/


4
‒ If r1 = s1, r2 = s2, L/
L/2
2 T(r)
(r2, s2)
• Hàm trở thành biến đổi đồng nhất
L/ s2) (r1, s1)
L/4
‒ If s1 = 0, s2 = L-1, 4 s1)
Cấp xám
• Hàm trở thành hàm cắt ngưỡng 0 L/4L/ L/
L/2
đầu vào3L/4
3L L-L-1
4 2 /4 1
• Đầu ra là ảnh nhị phân L-1
(r2, s2)

3L/4

T(r)
L/2

L/4
(r1, s1)
0 L/4 L/2 3L/4 L-1

22
Biến đổi tuyến tính theo đoạn

Ảnh gốc, độ tương Kéo dãn tương phản Cắt ngưỡng


phản kèm (r1, s1) = (rmin, 0) (r1, s1) = (m, 0)
(r2, s2) = (rmax, L-1) (r2, s2) = (m, L-1)
m: giá trị trung bình
(mean) độ sáng
23
Kéo giãn tuyến tính

Không hiệu quả?

24
Cân bằng histogram
• Histogram của ảnh sau thay đổi hướng tới phân phối
đều

• Không tham số. OpenCV:cv2.equalizeHist(img)

25
Cân bằng histogram (histogram
equalization)
• s1. Đếm số điểm ảnh có mức xám k trong ảnh, gọi là nk
• s2. Tính p(k) như sau k = 0, 1, 2, ..., L-1.
(cân bằng histogram):

• s3. Tính T(k) (histogram tích lũy)

• s4. Mức xám mới sk của ảnh đầu ra J tương ứng với mức xám k
của ảnh đầu vào được tính bằng công thức :

• s5. Build the output image by replacing the gray level k by sk

26
Cân bằng histogram
k sk 2 3 3 2 # số điểm ảnh

0 0 6
4 2 4 3
1 0 5
3 2 3 5
2 3 4
2 4 2 4
3 6
3
4 8
2
5 9 3 6 6 3
6 9 1 Mức
8 3 8 6 xám
7 9
8 9 6 3 6 9 0 1 2 3 4 5 6 7 8 9
9 9 3 8 3 8 Histogram sau khi cân bằng

27
Cân bằng histogram

28
Cân bằng histogram

29
Cân bằng histogram

30
Biến đổi Log - Log transformations
• Biến đổi log:
s = c  log(1 + r)
c: hằng số
L-
r0
1
• Log

Mức xám đầu ra s


3L/4
‒ Các điểm ảnh có khoảng giá trị hẹp Log
ở mức xám thấp trên ảnh đầu vào
thành khoảng rộng hơn ở ảnh đầu L/2
ra
Inverse log
‒ Ngược lại với các điểm ảnh có L/4
mức xám cao
0 L/4 L/2 3L/4 L-1
• Inverse log: ngược lại Mức xám đầu vào r

31
Log transformations
• Làm sáng hơn các điểm có mức xám thấp trong khi
nén các giá trị có mức xám cao

32
Biến đổi Power-Law (Gamma)
• Hình thức chung của biến đổi
power-law là:

‒  > 1: nén giá trị trong vùng tối
trong khi mở rộng giá trị trong vùng
sáng
‒  < 1 : ngược lại so với  > 1 mở
rộng giá trị trong vùng tối trong khi
nén giá trị trong vùng sáng
‒ r : chuẩn hóa giá trị về khoảng [0,
1]
‒ c : hằng số scaling tương ứng với
số bit sử dụng (255 với số bit = 8)

33
Biến đổi Power-Law (Gamma)

Tăng cường dải


động của ảnh
Quá sáng, nên lớn
hơn 1

34
Gamma correction

In Practice with grey level image :


k = 255
n = r/255

35
Gama correction

Image: Wikipedia

36
Cân bằng histogram
If we take the same image with different contrasts, histogram equalization
will give the same results for all images

37
Cân bằng histogram vs. pp khác
• Thảo luận
‒ Cân bằng histogram có luôn tốt?
‒ Cân bằng histogram vs biến đổi tuyến tính theo đoạn?
‒ Cân bằng histogram vs biến đổi gamma / log ?

38
Cân bằng histogram cục bộ

39
Một số phép biến đổi ảnh khác
G(x,y) = F(x,y) + c

Ảnh gốc Ảnh sau biến đổi

Lấy âm bản: s = (L – 1) – r
40
Phép toán logic trên ảnh

41
Phép toán +, -, x trên ảnh
f(x,y) g(x,y) = f(x,y) + f(x,y)
f1(x,y) f2(x,y)

g(x,y) = f2(x,y) – f1(x,y)

42
Tăng cường độ tương phản cho ảnh
màu?
• Cân bằng histogram trên ảnh màu ?
‒ Thực hiện trên mỗi kênh màu
• Có thể tạo ra những thay đổi màu bất bình thường
• KHÔNG KHUYẾN NGHỊ trừ khi có lý do cụ thể
‒ Phương pháp gợi ý
• Chuyển ảnh sang không gian màu khác như Lab,
HSL/HSV
• Thực hiện cân bằng histogram trên kênh thể hiện độ sáng
tối trên ảnh như L hay V
• Chuyển ngược lại sang RGB

43
Nội dung
• Nhắc lại: biểu diễn ảnh số
• Tăng cường độ tương phản trên ảnh
‒ Kéo giãn histogram
‒ Cân bằng histogram
‒ Biến đổi phi tuyến
• Nhân chập và lọc ảnh
‒ Nhân chập
‒ Một số bộ lọc tuyến tính
• Một số bộ lọc khác

44
Lọc ảnh (image filtering)

• Lọc ảnh: Với mỗi điểm ảnh, tính giá trị mới của điểm ảnh dựa trên 1
hàm theo các điểm trong lân cận của nó
‒ Lọc trong miền không gian:
• Với mỗi điểm ảnh, tính giá trị mới của điểm ảnh dựa trên 1 hàm theo các điểm trong
lân cận của nó
‒ Lọc ảnh trong miền tần số (bài sau)
‒ Ảnh đầu vào và ra thường có cùng kích thước
• Nhân chập: phép lọc tuyến tính, hàm số là tổng có trọng số của các
điểm ảnh trong lân cận của điểm ảnh xét.
I' = I * K
• Có vai trò quan trọng!
‒ Tăng cường ảnh: giảm nhiễu, làm trơn, tăng độ tương phản, …
‒ Trích chọn thông tin từ ảnh: Texture, edges, distinctive points, etc.
‒ Phát hiện mẫu (template matching)

45
Lọc ảnh (image filtering)
• Lọc trong miền không gian
‒ Biến đổi cục bộ được thực hiện trên ma trận điểm ảnh
g(x,y) = T(f(x,y))
‒ T: hàm tính toán dựa trên giá trị điểm (x,y) và các điểm hàng
xóm (K)
(K: Filter/Mask/Kernel/Window/Template Processing)
‒ T giống nhau tại mọi vị trí trên ảnh

46
Lọc ảnh

Mặt nạ (nhân)
Ảnh gốc Ảnh sau lọc

47
Nhân chập (Convolution)
• Convolution: tổng có trọng của các điểm ảnh trong lân cận của
điểm ảnh xét

48
Nhân chập (Convolution)

• Giá trị mới tại điểm ảnh tọa độ (i,j) là tổng trọng số của các
phần tử lân cận

Source: http://machinelearninguru.com

49
Nhân chập (Convolution)

I' = I * K

50
Nhân chập (Convolution)

I' = I * K

51
Nhân chập (Convolution)

I' = I * K

52
Nhân chập (Convolution)
• Vấn đề ở cạnh ảnh?
‒ Thêm dòng/cột 0 vào ma trận đầu vào
‒ Đối xứng gương:
• f(-x,y) = f(x,y)
• f(-x,-y) = f(x,y)
‒…

53
Nhân chập (Convolution)

Source: http://machinelearninguru.com

54
Spatial Correlation vs Convolution

55
Spatial Correlation vs Convolution
• Correlation

56
Spatial Correlation vs Convolution
• Nếu mặt nạ đối xứng thì 2 phép toán này là một
• Correlation:
‒ Sử dụng để tìm một mẫu ("template") nào đó có xuất hiện
trong ảnh không
‒ Không có tính kết hợp  nếu thực hiện tìm mẫu (template
matching), thì correlation là đủ
• Convolution:
‒ Thường sử dụng lọc ảnh (noise removing, enhancement, ..)
‒ Có tính chất kết hợp  hữu ích khi cần thực hiện nhiều bộ lọc
liên tiếp:
I*h*g = I * (h*g)
• In Matlab: correlation: filter2, convolution: conv2

57
Một số bộ lọc (Some kernels)

0 0 0
* 0 1 0
0 0 0

Ảnh gốc Ảnh sau lọc


(không thay đổi)

0 0 0
* 1 0 0
0 0 0

Ảnh gốc Ảnh sau lọc


(dịch 1 cột sang trái)
Source: David Lowe

58
Một số bộ lọc (Some kernels)

• Nhân chập 2D
‒ Chủ yếu được sử dụng để trích chọn đặc trưng trên ảnh
‒ Được sử dụng như phép toán trong khối cơ sở của mạng
Neuron tích chập: Convolutional Neural Networks (CNNs)

• Mỗi bộ lọc có hiệu ứng riêng và hữu ích cho các nhiệm
vụ cụ thể như:
‒ Làm mờ (lọc nhiễu),
‒ Làm nét biên,
‒ Phát hiện cạnh,
‒ …..

59
Bộ lọc làm trơn ảnh
• Mục đích
‒ Lọc nhiễu
‒ Làm trơn ảnh
‒ Còn gọi là bộ lọc thông thấp
• Một số bộ lọc thông thấp
‒ Bộ lọc trung bình
‒ Bộ lọc Gauss
• Để tránh thay đổi độ sáng của ảnh, tổng các hệ số
trong mặt nạ phải = 1

60
Bộ lọc làm trơn ảnh

• Lọc trung bình (mean filter):

f(x-1,y-1) f(x-1,y) f(x-1,y+1) 1 1 1


1 Mặt nạ lọc
f(x,y-1) f(x,y) f(x,y+1) trung bình
9 1 1 1

f(x+1,y-1) f(x+1,y) f(x+1,y+1) 1 1 1


Bộ lọc làm trơn ảnh

• Lọc trung bình (mean filter):


‒ Thay giá trị bởi giá trị trung bình của
các hang xóm
‒ Ảnh được làm trơn

Original image Filtered image Filtered image


with box size 5x5 with box size 11x11

62
Bộ lọc làm trơn ảnh

• Lọc trung bình có trọng số


‒ Trọng số điểm ảnh trung tâm thường có xu hướng lớn hơn
các điểm lân cận
1 2 1
1
2 4 2
16
1 2 1

63
Bộ lọc làm trơn ảnh

 Gaussian filter
0.003 0.013 0.022 0.013 0.003
0.013 0.059 0.097 0.059 0.013
0.022 0.097 0.159 0.097 0.022
0.013 0.059 0.097 0.059 0.013
0.003 0.013 0.022 0.013 0.003
Bộ lọc Gaussian kích thước 5 x5 , sigma
=1
Hàm Gauss 3 chiều

Quy tắc bộ lọc Gaussian: ½ kích


thước không quá 3σ
Ảnh Gaussian

64
65
Bộ lọc làm trơn ảnh
• Bộ lọc Gauss:
‒ Bộ lọc thông thấp: loại bỏ các thành phần tương ứng tần số cao
trên ảnh
• Ảnh trơn hơn
• Tốt hơn bộ lọc trung bình
‒ Nhâp chập Gauss với chính nó ta được một hàm Gauss
• Lặp nhận chập với bộ lọc có kích thước nhỏ => thu được kết
quả như nhận chập với bộ lọc có kích thước lớn hơn.
• Nhân chập 2 lần với bộ lọc Gauss có độ rộng σ giống như
nhận chập 1 lần với bộ lọc có độ rộng σ : I*Gσ*Gσ = I * G
σ 2
‒ Bộ lọc có thể phân tách được: Hàm Gauss 2D có thể được
biểu diễn như tích của 2 hàm 1D: 1 hàm theo x và 1 hàm theo y:
• G σ(x,y) = G σ(x).G σ(y)

66
Bộ lọc làm trơn ảnh

• Bộ lọc Gauss

Lọc với Gauss Lọc với Gauss


Ảnh gốc kích thước 5x5 kích thước 11x11

67
Bộ lọc làm trơn ảnh
• VD: sử dụng bộ lọc thông thấp để loại bỏ các vùng nhỏ

Ảnh gốc Lọc trung bình: 15x15 Cắt ngưỡng của ảnh đã làm mờ

68
Bộ lọc làm sắc nét cạnh
• Dựa trên ý tưởng của đạo hàm bậc 1 và đạo hàm
bậc 2 trên ảnh

69
Đạo hàm bậc 1 và bậc 2
• Đạo hàm bậc 1:
‒ Zero in flat region
‒ Non-zero at start of step/ramp region
‒ Non-zero along ramp
‒ Strong response for step changes

• Đạo hàm bậc 2:


‒ Zero in flat region
‒ Non-zero at start/end of step/ramp region
‒ Zero along ramp
‒ Double response at step changes
‒ Strong response for fine details and
isolated points;

70
71
Đạo hàm bậc 1
• Một số bộ lọc để tính đạo hàm bậc 1 trên ảnh
‒ Robert

‒ Prewitt

• Ít nhạy cảm với nhiễu

• Mean + đạo hàm bậc 1

‒ Sobel:

• Ít nhạy cảm với nhiễu

• Gauss + đạo hàm bậc 1

y x
72
Đạo hàm bậc 1

• Sobel

Biên dọc
(giá trị tuyệt đối)
73
Đạo hàm bậc 1

• Sobel

Biên ngang
(giá trị tuyệt đối)
74
Đạo hàm bậc 2 - Laplacian filtering

• Bộ lọc Laplace:

75
Đạo hàm bậc 2 - Laplacian filtering
• Có thể được tính như sau:
0 1 0

1 -4 1

0 1 0
• Hoặc

0 -1 0
-1 4 -1
• 90o isotropic filter
0 -1 0

76
Đạo hàm bậc 2 - Laplacian filtering
• Có thể được tính với:
1 1 1

1 -8 1

1 1 1
• Hoặc

-1 -1 -1
-1 8 -1

• 45o isotropic filter -1 -1 -1

77
Làm sắc nét cạnh (sharpening filter)
sử dụng bộ lọc laplacian

78
Chú ý:
0 -1 0 0 0 0 0 -1 0
-1 5 -1 = 0 1 0 + -1 4 -1
0 -1 0 0 0 0 0 -1 0

-1 -1 -1 0 0 0 -1 -1 -1
= +
-1 9 -1 0 1 0 -1 8 -1
-1 -1 -1 0 0 0 -1 -1 -1

79
Lọc làm sắc cạnh

a) Ảnh gốc
b) Ảnh lọc Laplacian
c) Ảnh lọc Laplacian
sau khi scaling
d) Thêm ảnh gốc vào
ảnh Laplacian

80
Lọc làm sắc cạnh

81
Nội dung
• Nhắc lại: biểu diễn ảnh số
• Tăng cường độ tương phản trên ảnh
‒ Kéo giãn histogram
‒ Cân bằng histogram
‒ Biến đổi phi tuyến
• Nhân chập và lọc ảnh
‒ Nhân chập
‒ Một số bộ lọc tuyến tính
• Một số bộ lọc khác

82
Bộ lọc trung vị (median filter)
• Không có giá trị mới nào được tính
• Loại bỏ những điểm bất thường:
‒ Phù hợp nhiễu xung và nhiễu muối tiêu (salt & pepper)
• Bộ lọc phi tuyến
Bộ lọc trung vị (median filter)
Nhiễu muối
Lọc trung vị
và tiêu

Giá trị điểm ảnh của 1 hàng giữa 2 ảnh

Source: M. Hebert
Bộ lọc trung vị (median filter)
• Lọc trung vị giữ được biên
Bộ lọc Max/ Min

‒ Bộ lọc min: thay giá trị ở giữa


bằng giá trị nhỏ nhất trong cửa
sổ xét

‒ Bộ lọc max: thay giá trị ở giữa


bằng giá trị lớn nhất trong cửa
sổ xét

86
Ví dụ so sánh lọc trung bình và trung vị
Ảnh gốc (nhiễu muối và tiêu) Ảnh lọc trung bình 3x3 Ảnh lọc trung vị 3x3

Ảnh x-ray chụp một bảng mạch

87
Noisy Jack – Salt and
Pepper Mean 3x3

Mean 11x11 Median 3x3

88
Ảnh gốc Thêm nhiễu muối và tiêu Lọc trung bình 3x3

Lọc min 3x3 Lọc max 3x3 Lọc trung vị 3x3

89
Median/max/min: vấn đề?
• Kích thước bộ lọc!

90
Thank you for
your attention!

91

You might also like