Đối sánh ảnh trong xử lý ảnh
Đố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 . Đố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,. 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ố. 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