5

Tôi đang tìm một thuật toán tính toán những điều sau: Tôi có hình ảnh với khu vực được xác định trước (hình ảnh màu xanh lá cây trên hình ảnh đính kèm). Người dùng vẽ hình chữ nhật màu đỏ và thuật toán sẽ tính toán liệu hình chữ nhật màu đỏ có khớp với hình chữ nhật màu xanh lục hay không. Ví dụ, vị trí của hình chữ nhật màu đỏ trên hình ảnh đính kèm sẽ là ok.Thuật toán cho phù hợp với vị trí và kích thước của hai hình chữ nhật

Cách tốt để tính toán điều này là gì? Có bất kỳ thuật toán thực hành tốt nhất?

Ý tưởng của tôi là tính toán giữa hình chữ nhật màu đỏ và sau đó để xác định xem giữa có nằm trong hình chữ nhật màu xanh lục hay không. Ngoài ra, tôi sẽ tính toán nếu chiều dài và chiều cao khớp với chiều dài và chiều cao của màu xanh lá cây (25% nhiều hơn hoặc ít hơn).

Đây có phải là một ý tưởng hay không? Bất kỳ đề xuất nào khác?

enter image description here

+1

Tùy thuộc vào những gì bạn đang cố gắng đạt được. – SergeyS

+0

Luôn luôn là hình chữ nhật được vẽ của người dùng phải chồng lên hình ảnh hoặc hình chữ nhật có thể được vẽ bất kỳ vị trí nào trong khu vực? –

+0

Người dùng nên chọn một mục đặc biệt trên hình ảnh và thuật toán sẽ tính toán liệu anh ta đã chọn đúng mục hay chưa. –

Trả lời

10

Tính diện tích giao lộ và chia tỷ lệ trung bình của khu vực của hai hình chữ nhật (số học hoặc hình học). Bạn sẽ nhận được một phần nhỏ. Càng gần 1, thì trận đấu càng tốt.

1
  • Lấy khoảng cách trung bình giữa các đỉnh làm tiêu chí cho không khớp.
  • Hãy giả định đỉnh đầu tiên hình chữ nhật của là [x1,y1], [x2,y2], [x3,y3], [x4,y4] và trong một giây là [a1,b1],[a2,b2],[a3,b3],[a4,b4]
  • Get euclidiean distance giữa các điểm
  • khoảng cách thấp hơn có nghĩa là trận đấu tốt hơn, ví dụ như sự chồng chéo chính xác sẽ cho 0, một sự thay đổi hình dạng hoặc thay đổi bù đắp của bất kỳ chữ nhật sẽ tăng khoảng cách trung bình của đỉnh.

enter image description here

1

tra vấn đề này, tôi có xu hướng suy nghĩ về những điều kiện cần thực hiện so sánh của màu xanh lá cây và hình chữ nhật màu đỏ thất bại, cùng với lập luận về các điều kiện không, riêng về từng trường hợp.

Những gì tôi có nghĩa là ở trên, thực tế, là tôi muốn các câu trả lời sau đây từ các thuật toán, làm cho rõ ràng những gì khía cạnh của sự so sánh thất bại: chiều rộng

  1. của hình chữ nhật của bạn là cách tắt.
  2. Chiều cao hình chữ nhật của bạn đang tắt.
  3. Vị trí ngang của hình chữ nhật của bạn đang tắt.
  4. Vị trí dọc của hình chữ nhật của bạn đang tắt.

Hãy để chúng tôi gọi các điều kiện ở trên "điều kiện không thành công". Những điều kiện thất bại này cho thấy quan điểm của tôi về sự so sánh, điều không thể tránh khỏi đã chỉ đạo cách tiếp cận của tôi. Người ta có thể xem nó một cách khác nhau ("Khu vực hình chữ nhật của bạn là cách tắt."). Người dùng, tất nhiên, có thể nhận được nhiều phản hồi chung chung hơn như sau:

  • Kích thước hình chữ nhật của bạn đang tắt.
  • Vị trí hình chữ nhật của bạn đang tắt.
  • Hình chữ nhật của bạn đang tắt. Thử lại.
  • Anh bạn, bạn có say không?

Trong phần sau tôi sử dụng green để tham chiếu hình chữ nhật màu xanh làm đối tượng và red để tham chiếu hình chữ nhật màu đỏ làm đối tượng. Tất cả các điều kiện đều dựa trên các lỗi tương đối, đó là các lỗi tuyệt đối được chuẩn hóa theo các giá trị thực tế, tức là các giá trị của hình chữ nhật màu xanh lục.

Một điều cần được chỉ định là "cách tắt" có nghĩa là vị trí ngang và dọc. Nó có nghĩa là có một sự phân kỳ giữa vị trí của một điểm quan trọng của hình chữ nhật màu xanh lá cây và vị trí của điểm quan trọng tương ứng của hình chữ nhật màu đỏ. Chúng ta hãy chọn trung tâm của một hình chữ nhật làm điểm mấu chốt để so sánh (người ta có thể chọn góc trên cùng bên trái của hình chữ nhật).

Điều khác cần được chỉ định là cách bạn có thể so sánh hai điểm theo cách tương đối, riêng biệt cho mỗi trục. Bạn cần một giá trị tham chiếu. Những gì bạn có thể làm là tính toán độ lệch tuyệt đối giữa hai điểm trong mỗi trục. Sau đó, bạn có thể tính toán độ lệch tương đối so với kích thước tương ứng của hình chữ nhật màu xanh lá cây. Ví dụ, bạn có thể tính toán độ lệch ngang tương đối như độ lệch tuyệt đối giữa các tâm trong trục x chia cho chiều rộng của hình chữ nhật màu xanh lá cây. Tất cả trong tất cả, để so sánh thành công, tôi muốn các hình chữ nhật có cùng kích thước và gần như cùng một trung tâm. Trường hợp "gần như" nên được định lượng theo phần trăm.

Về thất bại trong điều kiện (1), giả định rằng tối đa cho phép sai số tương đối cho chiều rộng của hình chữ nhật là 25%, giá trị boolean mà chúng ta phải tính toán là:

| green.width - red.width |/green.width > 0.25 

Nếu giá trị trên là true, sau đó tình trạng thất bại (1) sẽ tắt. Dude có thể say rượu. Chúng tôi có thể thoát ra và thông báo.

Về thất bại trong điều kiện (2), giả định rằng tối đa cho phép sai số tương đối so với chiều cao của hình chữ nhật là 30%, giá trị boolean mà chúng ta phải tính toán là:

| green.height - red.height |/green.height > 0.30 

Nếu giá trị trên là true, sau đó tình trạng thất bại (2) sẽ tắt. Chúng tôi có thể thoát ra và thông báo.

Về thất bại trong điều kiện (3), giả định rằng tối đa cho phép sai số tương đối cho ngang của hình chữ nhật bù đắp là 15%, giá trị boolean mà chúng ta phải tính toán là:

| green.center.x - red.center.x |/green.width > 0.15 

Nếu giá trị trên là true , sau đó tình trạng thất bại (3) sẽ tắt. Chúng tôi có thể thoát ra và thông báo.

Về thất bại trong điều kiện (4), giả định rằng tối đa cho phép sai số tương đối cho của hình chữ nhật dọc bù đắp là 20%, giá trị boolean mà chúng ta phải tính toán là:

| green.center.y - red.center.y |/green.height > 0.20 

Nếu giá trị trên là true , sau đó tình trạng thất bại (4) sẽ tắt. Chúng tôi có thể thoát ra và thông báo.

Nếu ít nhất một điều kiện không hoạt động, thì khi so sánh không thành công. Nếu không có điều kiện lỗi là true, thì so sánh thành công, hình chữ nhật màu xanh lục và màu đỏ gần như giống nhau.

Tôi tin rằng cách tiếp cận ở trên có rất nhiều lợi thế, chẳng hạn như lý luận cho các khía cạnh riêng biệt của so sánh, cũng như xác định các ngưỡng khác nhau cho các điều kiện không thành công. Bạn cũng có thể điều chỉnh các ngưỡng theo sở thích của bạn. Tuy nhiên, trong các trường hợp cực đoan, nhiều thông số có thể cần được tính đến.

Các vấn đề liên quan