Mô hình cho một nguồn sáng xa, phương trình (2.7), có thể được viết lại thích hợp với nguồn sáng cục bộ như sau:
(2.22) Lúc này hướng của nguồn sáng là một hàm các tọa độ ảnh.
Chúng ta bắt đầu bằng việc thừa nhận hướng nguồn sáng đối với mỗi miếng nối bề mặt cục bộ là không thay đổi. Hướng nguồn sáng cho mỗi miếng nối bề mặt được ước lượng sử dụng phương trình (2.13). Trong phần trước, ở phương trình (2.15) khuyến khích các ước lượng láng giềng bằng nhau. Trong trường hợp nguồn sáng cục bộ, người ta mong muốn các hướng của các láng giềng hội tụ đến một điểm đơn gần đó.
(2.23) Như trong phần trước, hàm lỗi cuối cùng được cực tiểu hóa cho bởi:
(2.24)
Trong đó E1(.) như phương trình (2.23), và là hệ số tỷ lệ. Không giống như phần trước, hàm lỗi này không thể được cực tiểu hóa theo phép phân tích, mà thay vào đó được cực tiểu hóa sử dụng sự cực tiểu gradient liên hợp lặp. Mặc dù dạng hàm lỗi thể hiện tương tự với dạng hàm trong phần trước nhưng các ma trận Ci phụ thuộc vào ước lượng nguồn sáng i
L
ur
, vì thế cần sự cực tiểu hóa lặp lại.
2.2.1.4. Nhiều nguồn sáng
Trong những phần trên ta giả định rằng chỉ có ánh sáng phát ra từ một nguồn sáng duy nhất chiếu lên vật thể và các nguồn sáng khác coi không đáng kể và được xem xét với hằng số giới hạn ánh sáng xung quanh (A), điều này thường phù hợp với ánh sáng ngoài trời. Nhưng xảy ra trường hợp đối tượng được chiếu rọi bởi nhiều nguồn sáng.
Ánh sáng có thuộc tính rất đặc biệt đó là tuyến tính. Giả sử có 2 nguồn sáng chiếu lên đối tượng, khi đó hàm mật độ ảnh có dạng:
(2.25)
Khi đó ta xử lý với giả định rằng hai nguồn sáng đã kết hợp lại và cho ta một nguồn sáng chung duy nhất.
2.2.2. Ƣớc lƣợng hƣớng nguồn sáng
Vấn đề ước lượng hướng nguồn sáng là một lĩnh vực nghiên cứu lớn của thị giác máy tính. Trong phần này sẽ mô tả bài toán, đề xuất giải pháp và sau đó sẽ trình bày cách thức để loại bỏ các yếu tố ngoại cảnh, làm đơn giản hóa các điều kiện để hạn chế những phức tạp trong qúa trình xử lý.
2.2.2.1 Ƣớc lƣợng hƣớng chiếu của nguồn sáng
Phần này trình bày thuật toán ước lượng tự động hướng chiếu của nguồn sáng đối với một ảnh đơn. Thuật toán gồm ba bước. Đầu tiên tìm ra những đường có khả năng là biên khuất với xác suất cao nhất. Sau đó với mỗi đường biên khuất chúng ta sẽ ước lượng véc-tơ chỉ hướng chiếu của nguồn sáng theo mô hình bóng đổ. Cuối cùng các ước lượng đó được đưa vào mô hình mạng Bayes để tìm một ước lượng thích hợp nhất cho hướng chiếu của nguồn sáng. Điều kiện là đối tượng phải có bề mặt Lambertian, đồng thời toàn bộ bề mặt có hệ số phản chiếu là hằng số.
2.2.2.2 Tìm những đƣờng có khả năng là biên khuất
Nhiệm vụ của bước này là tìm ra những đường có khả năng là biên khuất. Có thể không tìm ra chính xác biên khuất nhưng cũng phải đưa ra những đường đủ tốt cho bước tiếp theo.
Thuật toán phát hiện cạnh Canny gồm 6 bước như sau:
Bƣớc 1: Bước đầu tiên trong thuật toán phát hiện cạnh Canny là khử nhiễu và làm phẳng ảnh ban đầu trước khi cố gắng xác định và định vị bất kỳ một cạnh nào đó.
Bƣớc 2: Sau khi làm phẳng và khử nhiễu ảnh, bước tiếp theo là phải tìm ra độ dài của cạnh bằng việc lấy hướng của ảnh.
Bƣớc 3: Tìm hướng của cạnh. Một khi chúng ta đã biết hướng của cạnh theo trục x và trục y thì hướng của cạnh sẽ dễ dàng tính được
Bƣớc 4: Khi hướng của cạnh được tìm ra, bước tiếp theo là liên kết hướng đó với một mà có thể lần ra ảnh.
Bƣớc 5: Sau khi đã biết hướng cạnh thuật toán tiếp tục như sau: đi dọc cạnh theo hướng cạnh, nếu gặp bất kỳ điểm ảnh nào mà không liên quan đến cạnh thì khử điểm ảnh đó đi (tức là cho giá trị điểm ảnh bằng 0). Việc này sẽ cho chúng ta một đường mảnh ở ảnh kết quả.
Bƣớc 6: Cuối cùng là khử sự tạo thành vạch. Sự tạo thành vạch sẽ phá vỡ cạnh, gây ra do sự dao động giữa ngưỡng trên và ngưỡng dưới.
Đó là thuật toán phát hiện cạnh Canny. Sau khi đã trích ra được các cạnh, chúng ta sẽ nhóm các cạnh đó thành chuỗi theo luật sau:
Vùng tiếp theo cạnh sẽ đồng màu.
Màu sẽ giống với màu của cạnh kế trước trong chuỗi. Vùng tiếp theo cạnh không chứa cạnh khác.
Trong chuỗi không tạo nên những chỗ gấp khúc.
Việc này được thực hiện trên cả các mặt phẳng của các cạnh.
2.2.2.3. Ƣớc lƣợng hƣớng chiếu sáng cho từng đƣờng biên tìm đƣợc
Sau khi tìm ra các đường biên khuất (có khả năng là biên khuất) chúng ta sử dụng mô hình bóng đổ cho các đường biên này để tìm ra hướng chiếu sáng cho từng đường biên.
Đo cường độ sáng trên biên khuất
Theo cách trên muốn ước lượng được hướng chiếu của nguồn sáng chúng ta cần phải có cường độ sáng trên biên khuất. Tất nhiên điều này là không thể, chúng ta không thể đo trực tiếp cường độ sáng trên biên khuất, mà phải ngoại suy từ các điểm ở xa biên.
2.2.2.4. Sử dụng mạng Bayes tìm ƣớc lƣợng tốt nhất
Sau bước 2 chúng ta có một tập hợp các ước lượng và hiệp phương sai của n chuỗi cạnh mà có thể hoặc không là biên khuất. Để có thể tìm ra biên khuất chính xác từ tập hợp n chuỗi đó ta cần chú ý một điều là đối với đường biên khuất chính xác, nói chung sẽ có hiệp phương sai nhỏ hơn và phù hợp với mô hình hơn là những đường không chính xác.
2.3. Phát hiện ảnh giả mạo dựa trên sự khác biệt hƣớng nguồn sáng
Một tấm ảnh chúng ta có thể nhìn thấy được là do nguồn sáng. Sự sáng tối là do khả năng phản xạ hay hấp thụ ánh sáng của vật thể. Một bề mặt nhẵn bóng của kim loại, và một bề mặt sần sùi của tấm vải sẽ có độ sáng khác nhau khi chiếu cùng một nguồn sáng vào nó. Một vật khi nhìn thấy màu đỏ nhưng một vật khác lại thấy màu xanh, đó là do khả năng hấp thụ và phản xạ các thành phần màu của bề mặt là khác nhau.
Các bức ảnh được chụp khác nhau thì nguồn sáng hấp thụ và phản chiếu sẽ khác nhau. Vì vậy, khi hai hoặc nhiều hình ảnh ghép lại với nhau để tạo ra một hình ảnh giả mạo, nó thường rất khó khăn để chỉnh sửa cho phù hợp với điều kiện ánh sáng của toàn tấm hình. Do đó chúng ta chỉ cần phát hiện mâu thuẫn giữa các nguồn sáng thì đã kết luận được hình đó là giả mạo.
Các giải quyết bài toán
Việc dò tìm hướng ánh sáng trên các đối tượng được thực hiện bằng phương pháp bán tự động thông qua 4 bước chính như sau:
Bước 1: xây dựng thuật toán dò biên ảnh và nhóm các điểm biên thành
các chuỗi theo quan hệ láng giềng liên thông.
Bước 2: lọc bỏ các đường biên nhỏ và làm mảnh biên.
Bước 3: lựa chọn các đoạn biên liên thông của đối tượng dùng ước lượng
Bước 4: xây dựng thuật toán xác định hướng ánh sáng trên mỗi đường biên được chọn trong bước 3.
2.3.1. Thuật toán dò biên đối tƣợng
Sử dụng thuật toán dò biên Canny trong việc dò tìm biên của đối tượng và trích chọn các vector pháp tuyến tại các đường biên.
Thuật toán dò biên canny được thực hiện qua các bước sau:
Bước 1: làm mịn ảnh và lọc nhiễu với bộ lọc Gaussian.
Giả sử ta có ảnh I bộ lọc Gaussian được xây dựng theo công thức sau:
2 2 2 2 2 1 ) , ( y x e y x g (2.26)
Khi đó ta có thể làm mịn ảnh bằng công thức sau:
I y x g y x g I S * ( , ) ( , )* (2.27)
Bước 2: Tính đạo hàm bậc nhất của ảnh đã qua lọc ở bước 1 (nổi biên đối tượng)
Công thức đạo hàm bậc nhất của ảnh sau khi lọc:
I g I g S ( * )( )* (2.28) Với: y x g g y g x g g (2.29) Do đó ta có: I g I g I g g S y x y x * * * (2.30)
Bước 3: Tính độ lớn và hướng của ảnh biên đã thực hiện bước 2 (hướng
tìm được cũng chính là pháp tuyến của các điểm ảnh). Với (Sx, Sy) là vector gradient của ảnh, khi đó ta có:
Độ lớn = 2 2 y x S S và hướng = x y S S 1 tan (2.31)
Đánh dấu các điểm dọc theo đường cong nơi mà độ lớn của gradient là lớn nhất. Điều này được làm bằng cách tìm kiếm một giá trị lớn nhất dọc theo một sườn pháp tuyến với đường cong.
Loại bỏ các điểm ảnh trong S mà không phải là cục bộ lớn nhất
otherwise y x S y x S and y x S y x S if y x S y x M 0 ) '' , '' ( ) , ( ) ' , ' ( ) , ( ) , ( ) , ( (2.32)
Với x’ và x” là các láng giềng của x dọc theo hướng pháp tuyến tại biên.
tan x y S S Sự lượng tử hóa: 0: -0.4142 < tan <=0.4142 1: 0.4142 < tan <2.4142 2: tan >=2.4142 3: -2.4142 < tan<=-0.4142 Hình 2.3. Hướng pháp tuyến
Bước 5: Lọc nhiễu (phần tử cô lập) và loại các đường biên bé
Giả sử ngưỡng phân loại là: Ngưỡng cao là high và ngưỡng thấp là low.
Nếu một điểm ảnh có giá trị biên (gradient) thỏa mãn một trong các điều kiện sau: - Lớn hơn high thì gán cho nó là một điểm biên
- Bé hơn giá trị Low thì gán cho nó là một điểm biên - Nếu có giá trị nằm trong khoảng [Low, High] thì:
Xét các láng giềng của nó, nếu nó liên thông với một điểm biên trực tiếp hoặc qua các điểm ảnh nằm giữa Low và High thì gán cho nó là điểm biên.
Hình 2.4. Minh họa các liên thông theo 4, 8, 6 láng giềng
2.3.2. Loại bỏ các đối tƣợng nhỏ, nhiễu, làm mảnh biên
2.3.2.1. Loại bỏ các đối tƣợng nhỏ và nhiễu
Thuật toán sau khi dò biên trong ở trên, ta nhóm các điểm biên cùng tính chất và liên thông thành một chuỗi. Việc loại biên dựa trên một ngưỡng
MaxSizeđưa vào, duyệt các chuỗi trong ảnh biên thu được nếu số điểm biên trong chuỗi bé hơn MaxSize thì ta loại chuỗi biên đó. Tập hợp các chuỗi biên còn lại cho ta ảnh biên kết quả.
2.3.2.2. Làm mảnh biên và nối nét đứt
Biên sau khi dò biên theo thuật toán Canny thì biên thu được tương đối là mảnh. Nhưng có một số trường hợp điểm biên thu được vẫn chưa phải là
xương, ví dụ các trường hợp sau, với các điểm được đánh dấu sẽ bị xóa:
Hình 2.5. Minh họa các điểm được đánh dấu để xóa
Khi thực hiện làm mảnh biên quan trọng nhất là: + Không xóa những điểm cuối.
+ Không làm mất tính liên tục của vùng. + Không làm vùng đang xét bị rỗng quá mức.
Sau đây là một thuật toán quen thuộc dùng để làm mảnh biên. Không mất tính tổng quát, có thể giả sử rằng các điểm thuộc đối tượng đang xét có giá trị bằng 1 và các điểm nền có độ xám bằng 0. Ta gọi một điểm là điểm biên (contour
point) nếu điểm đó có giá trị 1 và một trong 8 điểm lân cận của nó có giá trị bằng 0 hình 2.5. Quá trình thực hiện gồm 2 bước:
Bước 1:
(a) 2 Np1 6 (b) S(p1) = 1
(c) p2 * p4 * p6 = 0 (d) p4 * p6 * p8 = 0
Trong đó N(p1) là tổng số điểm lân cận khác 0 của p1: N(p1) = p2 + p3 + … + p8 + p9
P0 P2 P3 P8 P1 P4 P7 P6 P5
Hình 2.6. Tám lân cận của điểm p1
Và S(p1) là số lần chuyển từ 0 sang 1 trong chuỗi (theo đúng thứ tự) p2, p3, ….., p7, p8, p2.
Bước 2: Ta giữ nguyên 2 điều kiện (a) và (b), nhưng thay (c) và (d) bằng (c’) và (d’) như sau:
(c’) p2 * p4 * p8 = 0 (d’) p2 * p6 * p8 = 0
Bước này được áp dụng cho tất cả mọi điểm biên trong vùng đang xét.
Nếu có ít nhất 1 trong 4 điều kiện (a) – (d) bị vi phạm, ta giữ nguyên giá trị điểm ảnh đó. Ngược lại, ta đánh dấu điểm ảnh đó và sau này nó sẽ bị xóa. Lưu ý rằng ta chỉ xóa điểm ảnh khi tất cả các điểm biên đã được duyệt qua, nhờ vậy dữ liệu không bị thay đối trong quá trình xử lý.
Sau khi thực hiện xong bước 1, ta xóa tất cả các điểm đã đánh dấu và thực hiện tiếp bước 2 giống như đã thực hiện cho bước 1. Như vậy, quá trình thực hiện là một vòng lặp liên tục gồm các giai đoạn sau:
+ Áp dụng bước 1 để đánh dấu điểm cần xóa. + Xóa các điểm đã đánh dấu.
+ Áp dụng bươc 2 để đánh dấu điểm. + Xóa các điểm đã được đánh dấu.
Thuật toán dừng khi không còn điểm nào được xóa nữa.
Điều kiện (a) bị vi phạm khi điểm biên p1 có 1 hoặc 7 điểm lân cận có giá trị 1. trường hợp 1 điểm lân cận đồng nghĩa với việc p1 là điểm cuối, và do đó không thể xóa được. Tương tự, trong trường hợp xét p1 có 7 điểm lân cận, nếu ta xóa nó sẽ gây ra lỗ hổng trong vùng đang xét. Điều kiện (b) không thỏa khi điểm đang xét nằm trên vùng biên có độ dày bằng 1, và do đó nếu xóa nó sẽ làm mất tính liên tục của đối tượng.
Còn một số trường hợp bị đứt nét thì ta phải nối, như hình 2.7 các điểm được đánh sẽ là các điểm nối.
Hình 2.7. Minh họa các điểm được đánh dấu để nối nét đứt
Khi đó điểm đứt nét là điểm nền và tồn tại 2 láng giềng của nó nằm ở các vị trí đối ngược nhau như (1,2,3) và (5,6,7) là các điểm vùng, việc nối đứt được thực hiện dễ dàng thông qua các điểm đứt tìm được.
2.3.3. Lựa chọn các đoạn biên liên thông của đối tƣợng dùng ƣớc lƣợng hƣớng nguồn sáng
Ánh sáng chiếu vào đối tượng và phản xạ tập trung chủ yếu trên biên, đặc biệt là những đường biên ranh giới ngoài. Việc chọn đường biên để ước lượng hướng ánh sáng trong báo này được thực hiện một cách thủ công từ một trong số các đường biên sau khi xử lý biên. Mỗi đoạn biên được chọn ra bằng 2 điểm bắt đầu và điểm kết thúc, 2 điểm biên chọn là hợp lệ khi chúng liên thông với nhau.
Dựa trên các điểm của các đoạn biên lựa chọn để ước lượng hướng nguồn sáng ta tìm được các vector pháp tuyến tương ứng ta thực hiện phương pháp ngoại suy để xác định cường độ điểm ảnh tại các điểm tương ứng.
Để xác định cường độ tại biên ta thực hiện ngoại suy cường độ các điểm ảnh liên tiếp dọc theo một tia trùng với pháp tuyến bề mặt. nói cách khác, cường độ tại điểm biên (xi, yi) với vector pháp tuyến bề mặt N được xác định bằng đánh giá cường độ bong 1 – D theo công thức:
P(t) = I(xi – t . Nx , yi – t. Ny) (2.33) Tại vị trí t = điểm ảnh, với >0.
Trong phương trình (2.33) ta cần tìm P(t) tại t = 0 (tại vị trí biên), do cường độ tại biên không đáng tin cậy do đó cần tính một cách gián tiếp thông qua P(t) với t>0. giả sử rằng cường độ bong có thể được mô hình hóa bằng một lũy thừa:
P(t) = t (2.34)
Các tham số mô hình và được xác định thông qua “ước lượng bình phương cực tiểu” theo log (P(t)).
Các tham số mô hình và được xác định thông qua “ước lượng bình phương cực tiểu” theo log(P(t)).
Theo [6]. Các tác giả chuẩn hóa (2.34) thành một phương trình lũy thừa tuyến tính như sau: ) ( ) ( 72 92 5 2 5 4 2 3 3 2 2 1 1 0 ct c t ct c t ct O t