Tải bản đầy đủ (.doc) (7 trang)

Đối sánh ảnh trong xử lý ảnh

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

Đối sánh ảnh
1. Bài toán
Cho ảnh I có kích thớc MìN và mẫu T có kích thớc mìn. Cần xác định
mẫu T có trong ảnh I hay không?
Cũng nh trong các mục trớc, trong bài toán này các ảnh T, I đều là ảnh
xám. Các giá trị điểm ảnh là cờng độ xám.
Thuật giải:
Thiết lập cửa sổ W có kích thớc bằng T. Di chuyển cửa sổ W trên ảnh I
từ trái sang phải, từ trên xuống dới mỗi lần một cột, một hàng. Tại mỗi vị
trí so sánh hai ma trận điểm ảnh W và T.
Nh vậy, bài toán trên chuyển thành bài toán so sânh hai ảnh T và W có
cùng kích thớc mìn. Số lần thực hiện đối sánh 2 ảnh W và T là =(M-
m+1)ì(N-n+1).
Số phép tính phải thực hiện phụ thuộc vào việc so sánh hai ảnh W và T
nh thế nào và số =(M-m+1)ì(N-n+1).
Để giảm số =(M-m+1)ì(N-n+1) ta có thể thực hiện so sánh thô bằng
cách co ảnh trớc khi dò tìm. Ví dụ, lấy trung bình 4 điểm lân cận để tạo ra
điểm mới cho ảnh kết quả. Việc thu nhỏ này cũng sẽ đợc thực hiện cho mẫu
T.
2. Đối sánh theo điểm ảnh:
Kí hiệu W(i,j) là giá trị của điểm ảnh (i,j), hàng i, cột j, trên cửa sổ W;
T(i,j) là giá trị của điểm ảnh tại ô (i,j) trên mẫu T.
Giá trị
E =

= =

m
i
n
j


jiTjiW
1 1
),(),(
hoặc
e =
( )
2
1 1
),(),(
.
1

= =

m
i
n
j
jiTjiW
nm
Trong các công thức trên E đợc gọi là sai số tuyệt đối, còn e đợc gọi là
sai số tơng đối. Ngời ta so sánh các giá trị sai số này với các giá trị ng ỡng
H hoặc h. Nếu E<H (hoặc tơng tự nh vậy, e<h) thì kết luận W giống (trùng)
với T.
1
Phơng pháp này có hai nhợc điểm lớn là khó định các giá trị ngỡng H và
h và các công thức tính trên rất nhạy với nhiễu. Thật vây, xét trờng hợp ảnh
T và W có kích thớc 100ì100:
a) Mỗi điểm ảnh của W có giá trị cờng độ lớn hơn giá trị của T 1 đơn
vị. Điều này dễ xảy ra bởi quá trình xử lý ảnh thực. Rõ ràng E>

10000.
b) Mỗi dòng ảnh của W có 1 điểm lệch cờng độ so với T 100 đơn vị (do
nhiễu). Rõ ràng là là e>100.
Hai ví dụ trên chỉ ra rằng rất khó định ngỡng H và h.
3. Đối sánh dựa trên ma trận tơng quan
a) ý t

ởng
Biến đổi ảnh T và W thành một ảnh khác để so sánh và chuyên đánh giá
về so sánh trong phạm vi [0,1], là phạm vi đánh giá quen thuộc. Với phạm
vi đánh giá này có thể định ra sai số =0.01 hoặc giá trị rất nhỏ nào đó
khác.
Trong các công thức trong mục này ta xét các tổng với biến chạy từ -
đến +. Trong kí hiệu W(i,j), tơng tự nh vậy đối với T(i,j), nếu i nằm ngoài
khoảng [1 m] hoặc j nằm ngoài khoảng [1 n] ta sẽ coi nh W(i,j)=0, cũng
nh T(i,j)=0.
b) Tính ma trận t

ơng quan R
Xây dựng ma trận R
WT
nh sau:
)1(),().,(),(

+
=
+
=
=
i j

WT
qjkiTjiWqkR
với k = 0, 1, 2, 3, 4, và q = 0, 1, 2, 3, 4
Dễ thấy từ (1)
R
WT
(k,q) = W(i+k,j+q).T(i,j) (2)
Thật vậy, nếu ta đặt i':= i-k, j' := j-q suy ra i := i'+k, j := j'+q. Thay vào
công thức (1) và để ý rằng do cận là từ - đến + nên cận không thay đổi,
từ đó nhận đợc công thức (2).
)1(),().,(),(

+
=
+
=
=
i j
WT
qjkiTjiWqkR
Ví dụ, Hai ảnh W và T có kích thớc 3ì3:

W: 1 2 3
1 1 4
1 1 3
T: 1 2 3
2
1 1 4
1 1 3
R(-2,-2) = W(i,j)T(i+2,j+2), với 1 i 1 và 1 j 1,

R(-2,-2) = W(1,1)T(3,3) = 3
R(-2,-1) = W(i,j)T(i+2,j+1), với 1 i 1 và 1 j 2,
R(-2,-1) = W(1,1)T(3,2) + W(1,2)T(3,3)= 1 + 6 = 7
R(-2,0) = W(i,j)T(i+2,j), với 1 i 1 và 1 j 3,
R(-2,0) = W(1,1)T(3,1)+W(1,2)T(3,2)+W(1,3)T(3,3)= 1+2+9
= 12
R(-2,1) = W(i,j)T(i+2,j-1), với 1 i 1 và 2 j 3,
R(-2,0) = W(1,2)T(3,1)+W(1,3)T(3,2) = 2+3 = 5
Các ma trận tự tơng quan của W cũng nh T:
R
WW
(k,q) = W(i,j).W(i-k,j-q) (3)
R
TT
(k,q) = T(i,j). T(i-k,j-q) (4)
Rõ ràng là R
WW
(0,0) = W
2
(i,j) >0 và R
TT
(0,0) = T
2
(i,j) >0.
c)

Tính ma trận hệ số t

ơng quan Q
)5(

)0,0()0,0(
),(
),(
ƯƯ TTWW
WT
WT
RR
qkR
qkQ =
Nhận xét rằng R
WT
(0,0) chính là tích vô hớng của hai vectơ W và T, khi
này Q
WT
(0,0) chính là cosin góc giữa hai vectơ W và T.
d) Định lý
1. Q
WT
(k,q) 1, k,q = 0, 1, 2, 3,
2. Q
WT
(i
0
,j
0
) = 1 c, sao cho, với i,j có W(i,j) = c.T(i-i
0
,j-j
0
)

Chứng minh định lý:
1. Rõ ràng là (aW(i,j) + T(i-k,j-q))
2
0 với mọi k,q và a hay
(a
2
W
2
(i,j) + T
2
(i-k,j-q) + 2aW(i,j)T(i-k,j-q) ) 0
a
2
W
2
(i,j) + T
2
(i-k,j-q) + 2aW(i,j)T(i-k,j-q) 0
a
2
W
2
(i,j) + 2a W(i,j)T(i-k,j-q) + T
2
(i-k,j-q) 0
' = (W(i,j)T(i-k,j-q))2 - W
2
(i,j) T
2
(i-k,j-q) 0

' = (R
WT
(k,q))2 - W
2
(i,j) T
2
(i-k,j-q) 0
(R
WT
(k,q))2 W
2
(i,j) T
2
(i-k,j-q)
(R
WT
(k,q))2 / W
2
(i,j) T
2
(i-k,j-q) 1 (đpcm).
3
2. Giả thiết là tồn tại hằng số c0 sao cho W(i,j) = c T(i-i
0
,j-j
0
) với mọi
i,j. Hiển nhiên, khi này
R
WT

(i
0
,j
0
) = W(i,j).T(i-i
0
,j-j
0
) = c. W
2
(i,j)
R
WW
(0,0) = W
2
(i,j)
R
TT
(0,0) = T
2
(i,j)= T
2
(i-i
0
,j-j
0
), bằng cách đặt i':=i-i
0
,
j':=j-j

0
và đảo chỉ số nh trên. Cuối cùng ta có:
R
TT
(0,0) = c
2
W
2
(i,j) = c
2
W
2
(i,j) = c
2
R
WW
(0,0).
Từ đây suy ra Q
WT
(i
0
,j
0
) = 1.
Giả sử Q
WT
(i
0
,j
0

) =1 với (i
0
,j
0
) nào đó. Từ chứng minh trên suy ra
' = (R
WT
(k,q))2 - W
2
(i,j) T
2
(i-i
0
,j-j
0
) = 0
Dẫn đến tồn tại duy nhất một giá trị c sao cho
c
2
W
2
(i,j) + 2c W(i,j)T(i-i
0
,j-j
0
) + T
2
(i-i
0
,j-j

0
) = 0
Hay (cW(i,j) + T(i-i
0
,j-j
0
))
2
= 0. Suy ra
-cW(i,j) = T(i-i
0
,j-j
0
).
Đặt lại c := -1/c ta có điều phải chứng minh.
Nhận xét rằng W(i,j) = c.T(i,j) với mọi i,j có thể hiểu rằng c ờng độ
sáng của W bằng c lần cờng độ sáng của T, tính theo từng điểm ảnh.
Trong biểu thức W(i,j) = c.T(i-i
0
,j-j
0
) có thể hiểu rằng, nếu rời điểm
(1,1) của W đến điểm (i
0
,j
0
) của T thì ta nhận đợc hai phần nào đó
của W và T lệch nhau về cờng độ sáng c lần.
4. Hệ quả
Nếu hệ số tơng quan Q

WT
(k,q)=1 thì hoặc T là thành phần của W
hoặc W và T giống nhau.
5. Tính ma trận R
WT
Ta có thể dễ dàng thấy rằng ma trận R có kích thớc (2m-1)ì(2n-1).
Nếu ta chia ma trận R thành 4 phần. Xét công thức W(i,j)T(i-k,j-q)
với 1 i m, 1 j n. Rõ ràng là khi k [-m+1 m-1] thì T(i-k,j-q)
không xác định (ở trên ta đã giả thiết là bằng 0 để dễ biến đổi.
For k:=-m+1 to m-1; For q:=-n+1 to n-1 R(k,q) := 0;
Tính phần A:
k:= -m+1 to -1
q:= - n+1 to -1
A B
C D
4
1≤ i-k ≤ m ⇒ 1+k ≤ i ≤ m+k ⇒ 1



i



m+k
1≤ j-q ≤ n ⇒ 1+q ≤ j ≤ n+q ⇒ 1



j




n+ q
TÝnh phÇn B:
k:= -m+1 to -1
q:= 0 to n-1
1≤ i-k ≤ m ⇒ 1+k ≤ i ≤ m+k ⇒ 1



i



m+k
1≤ j-q ≤ n ⇒ 1+q ≤ j ≤ n+q ⇒ 1+q



j



n
TÝnh phÇn C:
k:= 0 to m-1
q:= - n+1 to -1
1≤ i-k ≤ m ⇒ 1+k ≤ i ≤ m+k ⇒ 1+k




i



m
1≤ j-q ≤ n ⇒ 1+q ≤ j ≤ n+q ⇒ 1



j



n+ q
TÝnh phÇn D:
k:= 0 to m-1
q:= 0 to n-1
1≤ i-k ≤ m ⇒ 1+k ≤ i ≤ m+k ⇒ 1+k



i



m
1≤ j-q ≤ n ⇒ 1+q ≤ j ≤ n+q ⇒ 1+q




j



n
R(k,q) := R(k,q) + W(i,j)*T(i-k,j-q);
VÝ dô:
1. Hai ¶nh W vµ T gièng hÖt nhau
W: 1 2 3
1 1 4
1 1 3
T: 1 2 3
1 1 4
1 1 3
Q:
0.07 0.16 0.28 0.12 0.07
0.16 0.30 0.67 0.23 0.16
0.23 0.40 1.00 0.40 0.23
0.16 0.23 0.67 0.30 0.16
0.07 0.12 0.28 0.16 0.07
2. Hai ¶nh W vµ T lÖch nhau W = 3T
W:
3 6 9
3 3 12
3 3 9
T:
1 2 3
1 1 4

1 1 3
Q:
5
0.07 0.16 0.28 0.12 0.07
0.16 0.30 0.67 0.23 0.16
0.23 0.40 1.00 0.40 0.23
0.16 0.23 0.67 0.30 0.16
0.07 0.12 0.28 0.16 0.07
3. Hai ¶nh W vµ T lÖch nhau W = T +2
W:
3 4 5
3 3 6
3 3 5
T:
1 2 3
1 1 4
1 1 3
Q:
0.11 0.19 0.28 0.11 0.06
0.26 0.39 0.64 0.23 0.14
0.38 0.57 0.97 0.39 0.20
0.26 0.38 0.67 0.29 0.14
0.11 0.19 0.30 0.16 0.06
4. Hai ¶nh W vµ T lÖch nhau t¹i mét ®iÓm ¶nh
W:
1 2 3
1 1 7
1 1 3
T:
1 2 3

1 1 4
1 1 3
Q:
0.05 0.12 0.21 0.09 0.05
0.12 0.23 0.66 0.23 0.17
0.17 0.30 0.96 0.35 0.23
0.12 0.17 0.66 0.33 0.17
0.05 0.09 0.21 0.12 0.05
Const n=3; m=3;
Type Anh = Array[1 m,1 n] of byte;
TQ = Array[-m+1 m-1,-n+1 n-1] of Real;
Const T : Anh = (( 1, 2, 3),
( 1, 1, 4),
( 1, 1, 3));
W : Anh = ( ( 1, 2, 3),
( 1, 1, 7),
( 1, 1, 3));
Var i,j,k,q : Integer;
R, MQ : TQ;
6
Mw,Mt : Real;
f : Text;
BEGIN
Mw:=0; For i:=1 to m do For j:=1 to n do Mw := Mw + Sqr(W[i,j]);
Mt:=0; For i:=1 to m do For j:=1 to n do Mt := Mt + Sqr(T[i,j]);
For k:=-m+1 to m-1 do For q:=-n+1 to n-1 do R[k,q] := 0;
{ Tinh phan A:}
For k:= -m+1 to -1 do For q:= - n+1 to -1 do
For i:=1 to m+k do For j:=1 to n+q do
R[k,q] := R[k,q] + W[i,j]*T[i-k,j-q];

{ Tinh phan B:}
For k:= -m+1 to -1 do For q:= 0 to n-1 do
For i:=1 to m+k do For j:=1+q to n do
R[k,q] := R[k,q] + W[i,j]*T[i-k,j-q];
{ Tinh phan C:}
For k:= 0 to m-1 do For q:= - n+1 to -1 do
For i:=1+k to m do For j:=1 to n+q do
R[k,q] := R[k,q] + W[i,j]*T[i-k,j-q];
{ Tinh phan D:}
For k:= 0 to m-1 do For q:= 0 to n-1 do
For i:=1+k to m do For j:=1+q to n do
R[k,q] := R[k,q] + W[i,j]*T[i-k,j-q];
For k:=-m+1 to m-1 do
Begin
For q:=-n+1 to n-1 do write(R[k,q]/Sqrt(Mw*Mt):10:2);
Writeln;
End;
Readln;
END.
7

×