Tổng quan: Hai người viết cùng một chữ giống nhau thì vẫn có thể nhận biết được
26 không thể phân biệt được các hình dạng khác nhau quá vậy nên cần một phương pháp giúp cho máy tính có thể phân biệt được, trong đề tài này sử dụng phương pháp kết nối bố cảnh hình dạng (matching shape context).
Phương pháp này sử dụng một phép đo mới để đo độ tương đồng giữa các hình dạng và sử dụng nó để nhận dạng đối tượng, phép đo này được thực hiện bằng các giải các điểm tương ứng giữa các điểm trên hai hình dạng, muốn nhận biết và sử dụng một loạt các phép biến đổi căn chỉnh. Mỗi hình sẽ được xác định bởi một biên dạng là tập hợp các điểm ngẫu nhiên trên hình đó tạo thành, số lượng các điểm càng nhiều thì biên dạng càng chính xác. Để giải quyết vấn đề hãy lựa chọn 1 điểm cố định và nắm bắt sự phân bố của các điểm còn lại so với điểm gốc do đó để có thể nhận được đặc điểm của hình dạng trên hai hình, các điểm tương ứng trên hai hình giống nhau sẽ cho bố cảnh hình dạng giống nhau cho phép ta giải các giải các điểm tương ứng như một bài toán.
Sự không giống nhau giữ hai hình dạng được tính bằng tổng sai số giữa các điểm tương ứng cùng với một phép đo độ lớn của phép biến đổi căn chỉnh sau đó so sánh với một bản nguyên mẫu được lưu trữ tương tự với hình dạng trong ảnh.
Thuật toán: Chia thuật toán thành các bước cơ bản sau:
1. Xác định các điểm trên tất cả các hình (thường lấy các điểm đặc biệt như các đỉnh hoặc trung điểm các đoạn… và số lượng điểm trên 2 hình phải bằng nhau.
2. Trong hình đầu tiên chọn 1 điểm làm gốc từ đó tính khoảng cách và góc của điểm đó với các điểm còn lại.
3. Xây dựng biểu đồ cực log cho điểm đầu tiên dựa trên các khỏang cách và góc vừa tìm được.
4. Tạo biểu đồ cực log cho các điểm còn lại trong hình đầu tiên là làm tương tự cho hình thứ 2.
27 6. Ghép hai điểm có chi phí nhỏ nhất của hai hình A và B vào với nhau.
7. Thực hiện phép biến đổi hình dạng sao cho hai hình đồng nhất và ghép nối để chiều hai hình lên cùng một hệ trục tọa độ.
8. Tính khỏang cách hình dạng giữa 2 hình nếu khoảng cách giữa chúng, nếu hai hình giống nhau khỏang cách phải là 0 hoặc nhỏ nhất và ngược lại.
Bước 1: Xác định các điểm trên các hình
Hình dạng được biểu thị bằng một tập hợp các điểm được lấy mẫu từ các đường viền hình dạng (thường sử dụng khoảng 100 vị trí pixel được lấy mẫu từ đầu ra của bộ dò cạnh được sử dụng). Không có gì đặc biệt về các điểm. Chúng không bắt buộc phải là điểm mốc hoặc điểm cực trị của độ cong… khi sử dụng nhiều mẫu hơn sẽ thu được các giá trị gần đúng hơn với hình dạng bên dưới. Giới thiệu một bộ mô tả hình dạng, bối cảnh hình dạng, để mô tả sự phân bố thô của phần còn lại của hình dạng đối với một điểm nhất định trên hình dạng. Khi đó, việc tìm kiếm sự tương ứng giữa hai hình dạng tương đương với việc tìm cho mỗi điểm mẫu trên một hình dạng, điểm mẫu trên hình kia có bối cảnh hình dạng tương tự nhất. Việc tối đa hóa các điểm tương đồng và thực thi tính duy nhất tự nhiên dẫn đến thiết lập như một bài toán đối sánh đồ thị hai bên (tương đương, chỉ định tối ưu). Theo mong muốn, có thể kết hợp các nguồn thông tin phù hợp khác một cách dễ dàng, ví dụ như sự tương đồng về hình thức địa phương tại các điểm tương ứng.
28
Hình 2.8: Lấy điểm biên dạng của hình
Trong ví dụ trên lấy 24 điểm.
Bước 2: Chọn 1 điểm làm gốc rồi ta tính khoảng cách từ điểm đó đến 23 điểm còn lại để có thể xác định vị trí phân bố của các điểm đó đến gốc từ đó có thể thấy được biên dạng tổng quan của hình.
Ban đầu xác định các điểm trên mỗi hình thì các điểm đó được biểu diễn dưới dạng tọa độ trên một mặt phẳng vì thế cần chuyển chúng sang hệ tọa độ cực.
29 Hệ tọa độ cực được xác định bằng khoảng cách giữa hai điểm và góc lệch giữa chúng, có thể chuyển đổi bằng công thức tính góc và khoảng cách.
Gọi điểm A1 là điểm lấy làm gốc thì ta cần xác định khoảng cách và góc từ điểm A1 đến các điểm còn lại:
Ta có tọa độ hai điểm A1(X1a,Y1a); A2(X2a,Y2a) thì khoảng cách giữa chúng sẽ là
2 2
2 1 2 1
( a a) ( a a)
D= X −X + Y −Y ,góc lệch sẽ là goc=arctan(Y2a−X2a). Bước 3: Xây dựng biểu đồ cực cho các điểm:
Sau khi tính khoảng cách và góc từ điểm A1 đến các điểm còn lại sẽ thu được mối quan hệ giữa điểm gốc với các điểm khác, từ kết quả trên có thể tạo nên một ma trận với 2 hàng và 1 cột tương ứng mỗi hàng là biểu thị khoảng cách hoặc là góc.
Bảng 2.2: Góc và khoảng cách giữa các điểm trong hình
Sau khi có được ma trận trên sẽ tiến hành xây dựng biểu đồ histogram cho điểm A1 biểm đồ gồm 2 trục góc và khoảng cách tương tự như hệ tọa độ cực, tiến hành chia các phần của biểu đồ. Một trục tối đa có thể xoay 360 độ vì thế tối đa ở trục góc sẽ là 360 ta sẽ chia thành các đoạn nhỏ thường là sẽ chia 12 phần mỗi phần 30 độ, khoảng cách chia tùy ý nhưng thường sẽ chia không quá nhiều vì mỗi khoảng trong biểu đồ sẽ biểu thị một phần tử riêng biệt.
30
Hình 2.10: Biểu đồ histogram
Điểm A1 – A2 có khoảng cách và góc là A1-A2(3.1,256) thì sẽ biểu diễn trên biểu đồ là:
Tương tự như thế với các A1 – A3, A1 - A4 cũng sẽ được biểu thị như vậy cà ta sẽ thu được biểu đồ histogram biểu thị sự phân bố của điểm A1 với các điểm còn lại.
Thực hiện tại tất cả các điểm
31
Hình 2.12: Biểu diễn mối tương quan giữa hai điểm trên histogram
Tuy nhiên trên biểu đồ sẽ có những giá trị trùng nhau nên ta sẽ biểu diễn nhưng điểm trùng đó bằng cách đánh số điểm trùng nhau vào ô đó hoặc là biểu diễn theo quy ước màu riêng như trên với:
- Biểu thị 1 điểm - Biểu thị 2 điểm - Biểu thị 3 điểm
Làm tương tự vậy với các điểm còn lại trong hình và hình muốn so sánh sẽ thu được các biểu đồ histogram biểu diễn các điểm trên hai hình.
Bước 5: Để so sánh được hai hình sẽ so sánh biên dạng của chúng được tạo thành từu tập hợp hữu hạn các điểm và so sánh các điểm giữa hai hình với nhau nhưng vấn đề là không thể so sánh hai điểm ngẫu nhiên trên hai hình với nhau được vì sẽ rất khó khăn và không hiệu quả nếu làm như vậy vì thế ta cần so sánh hai điểm tương đồng với nhau. Vấn đề là làm sao tìm được điểm tương đồng đó?
Sau khi lập biểu đồ histogram cho các điểm của hai hình rồi so sánh biểu đồ của hai hình với nhau. Để tìm điểm tương đồng của điểm này trên hình kia sẽ lấy biểu đồ histogram của điểm đó so với tất cả các biểu đồ histogram của hình kia.
32
Hình 2.13: Cách tìm điểm tương đồng trên hai hình
Tính dựa theo công thức sau:
Trong đó Cij sẽ là biểu thị giá trị thể hiện mối tương quan giữa hi và hj, hi(k) và hj(k) sẽ là các vị trí trên biểu đồ histogram, ban đầu khi lập biểu đồ ta đã chia các khoảng cho biểu đồ có thể hiểu mỗi khoảng đó sẽ là một phần tử tương tự như một ma trận, ma trận gồm các khoảng ta chia cho biểu đồ.
33 Sau khi tính toán ta sẽ thu được các giá trị C ứng với mỗi lần so sánh
Hình 2.15: Ma trận thể hiện mối tương quan
Tìm giá trị nhỏ nhất trong các giá trị vừa thu được thì sẽ tìm được điểm tương đồng với điểm muốn trên hình kia. Ví dụ biểu đồ A2 – B12 có C=0.01 là nhỏ nhất thì điểm tương đồng với A2 trên hình kia là điểm B12. Thực hiện tương tự với các điểm còn lại để tìm ra điểm tương đồng.
Bước 6: Sau khi tính toán hết sẽ thu được các giá trị C nhỏ nhất, ta sẽ lập một ma trận từ các giá trị C đó ta sẽ sử dụng thuật toán Munkres để tối ưu ma trận tìm ra các C tối ưu, sau đó sẽ ghép các điểm tương đồng lại dựa trên 1 đỉnh chung giữa hai hình
Bước 7: Sau khi ghép 1 đỉnh chung và các điểm tương đồng thì sẽ đưa hai hình về dạng đồng nhất:
Cơ bản là những biên dạng này khác nhau nên chúng có thể không có cùng hình dạng hay kích thước như nhau, có ảnh mờ có ảnh nét, có chỗ khuyết…. vậy nên phải xử lý chúng để đồng nhất. Có thể dùng các phương pháp như:
- Phóng to - Thu nhỏ
- Lược bỏ phần không liên quan (xử lý ảnh)
34 Bước 8: Cuối cùng là tính tổng khoảng cách giữa hai hình dạng, để hai hình được coi là giống nhau nếu tổng khoảng cách giữa chúng là bằng 0 hoặc là nhỏ nhất và ngược lại chúng không giống nhau nếu tổng khoảng cách quá lớn.
Hình 2.16: So sánh hai hình với nhau
Kết quả:
Hình 2.17: Các biểu đồ histogram xây dựng được
35
Hình 2.19: Kết quả so sánh hai số năm[15] Thuật toán Munkres
Phương pháp Hungary là một thuật toán tối ưu hóa tổ hợp giải quyết vấn đề phân công trong thời gian đa thức và dự đoán các phương pháp nguyên thủy-kép sau này. Nó được phát triển và xuất bản vào năm 1955 bởi Harold Kuhn, người đã đặt tên là "phương pháp Hungary" vì thuật toán phần lớn dựa trên các công trình trước đó của hai nhà toán học Hungary.
Về tổng thể thuật toán Munkres giúp tối giản hóa giá trị có thể áp dụng trong nhiều trường hợp như phân công công việc cho từng người trong thực tế, tối ưu ma trận, tối ưu chi phí… Để giải thích rõ hơn về thuật toán ta lấy một ví dụ thực tế: dưới đây là bảng phân công công việc cho từng người, có nhiều công việc khác nhau dành cho mọi người(giả sử mức lương yêu cầu mỗi người khác nhau).
Bảng 2.3: Góc và khoảng cách giữa các điểm trong hình
Vấn đề đặt ra là với mỗi công việc khác nhau thì mỗi người sẽ có yêu cầu về mức lương khác nhau và mỗi người chỉ được nhận một công việc phải không trùng nhau,
36 bây giờ phải làm sao đưa ra phương án tối ưu nhất cho mọi người với tổng chi phí bỏ ra là thấp nhất. Đối với một số lượng công việc và số người nhỏ thì ta có thể tính toán không vấn để nhưng giả sử như ta cần phải tính toán cho một khối lượng lớn công việc thì tính tay là rất khó và mất thời gian nên thuật toán Munkres sẽ giúp ta giải quyết vấn đề trên một cách nhanh và chính xác nhất.
Với ví dụ trên thì sử dụng thuật toán ta tính ra chi phí tối ưu nhất là 45$.
Cách thuật toán hoạt động: Bảng chí phí ra dưới dạng ma trận mỗi hàng của ma
trận sẽ là mức lương của mỗi người yêu cầu với các công việc và mỗi cột sẽ là số tiền của một công việc.
30 25 10 15 10 20 25 20 15
Hình 2.20: Ma trận mô tả công việc
Bước 1: Thực hiện phép toán với hàng trên ma trận sẽ xác định phần tử nhỏ nhất trong mỗi hàng. Để lấy được giá trị đó chúng ta sẽ lấy các phần từ trong hàng đó trừ đi các phần tử còn lại trong hàng điều này sẽ dẫn đến ít nhất một số 0 trong hàng nhưng trong hàng cũng có thể xuất hiện số âm do số trừ lớn hơn số bị trừ vậy nên ta cần tìm một hàng có ít nhất 1 số 0 và không có giá trị âm, lặp lại cho tất cả các hàng trong ma trận khí đó sẽ thu được một ma trận với ít nhất một số 0 trong mỗi hàng.
30 25 10 15 10 20 25 20 15 => 20 15 0 5 0 10 10 5 0
Hình 2.21: Ma trận sau khi trừ đi giá trị nhỏ nhất mỗi hàng
Bước 2: Trong trường hợp lý tưởng thì đây có thể là giá trị tối ưu nhưng nếu thế thì có lẽ không cần đến thuật toán Munkres thực tế thì ta có thể đưa ra nhiều lựa chọn
10 10 15
37 hơn bằng cách tiếp tục tối ưu ma trận, ta có thể thấy các cột của ma trận vẫn chưa tối giản vì thế ta sẽ lặp lại bước 1 nhưng sẽ áp dụng với các cột.
20 15 0 5 0 10 10 5 0 => 15 15 0 0 0 10 5 5 0
Hình 2.22: Ma trận sau khi trừ đi giá trị nhỏ nhất các cột
Bước 3: Tất cả các số 0 trong ma trận phải được xác định bới ít hàng và cột nhất càng tốt vậy với một ma trận n hàng và n cột thì ta có thể thực hiên trừ n-1 lần. trong ví dụ này cần xác định 3 công việc cho 3 người vậy nên ta cần xác định 3 số 0 nằm trên 1 hàng và một cột bằng các thực hiện lại bước 1 hoặc 2 cho các hàng hay cột không thỏa mãn. 15 15 0 0 0 10 5 5 0 => 10 10 0 0 0 15 0 0 0
Hình 2.23: Ma trận được tối ưu
Sau khi tìm ra ma trận tối ưu ta lựa chọn các giá trị:
Hình 2.24: Tổng các chi phí cso thể tính ra được
Sau khi thực hiện thuật toán ta có thể tín ra các giá trị tối ưu nhất 10+12+25=45 và 10+15+20=45
5 0 0
5 5 5
38