2016-04-11 15 views
7

Có thể phát hiện phía trên của xúc xắc không? Trong khi điều này sẽ là một nhiệm vụ dễ dàng nếu bạn nhìn từ phía trên, từ nhiều quan điểm, nhiều bên có thể nhìn thấy được.Phát hiện phía trên của xúc xắc

Dưới đây là một ví dụ về một con xúc xắc, cảm thấy tự do để chụp ảnh của riêng bạn: enter image description here

Bạn thường muốn biết số điểm bạn đã đạt được. Nó rất dễ dàng cho tôi để trích xuất tất cả các dấu chấm, nhưng làm thế nào để chỉ trích xuất những người trên đầu trang? Trong trường hợp đặc biệt này, mặt trên là lớn nhất, nhưng điều này có thể không phải lúc nào cũng đúng. Tôi đang tìm cái gì đó đánh giá sự biến dạng của hình vuông trên cùng (hoặc hình tròn trong trường hợp này, mà tôi có thể trích xuất) liên quan đến quan điểm được đưa ra bởi lưới ở phía dưới.

Chương trình mẫu với một số kết quả được đưa ra dưới đây.

import numpy as np 
import cv2 

img = cv2.imread('dice.jpg') 


# Colour range to be extracted 
lower_blue = np.array([0,0,0]) 
upper_blue = np.array([24,24,24]) 

# Threshold the BGR image 
dots = cv2.inRange(img, lower_blue, upper_blue) 

# Colour range to be extracted 
lower_blue = np.array([0,0,0]) 
upper_blue = np.array([226,122,154]) 

# Threshold the BGR image 
upper_side_shape = cv2.inRange(img, lower_blue, upper_blue) 

cv2.imshow('Upper side shape',upper_side_shape) 
cv2.imshow('Dots',dots) 

cv2.waitKey(0) 
cv2.destroyAllWindows() 

Một số kết quả hình ảnh: enter image description here

+1

Cách đơn giản nhất là bằng cách xác định khu vực có trình độ của mỗi chấm trắng. Về bản chất, chấm trắng phải có giá trị ít nhất 40-50px hoặc một cái gì đó. Đó là một cách tiếp cận. – Adib

+1

Tôi nghĩ tôi hiểu ý của bạn là gì: Quan điểm của bạn là, độc lập với quan điểm, bên trong một bên, kích thước của các chấm sẽ luôn gần như đồng nhất. Nếu sau đó tôi tìm dấu chấm ở vị trí cao nhất, tôi chỉ phải đếm tất cả các dấu chấm có kích thước "bằng nhau" "được xác định bởi khoảng cách kích thước đến các dấu chấm khác, và thuộc về một mẫu chấm bị méo – tfv

+0

Đó là chính xác.Bạn có thể căn cứ vào sự khoan dung đối với các dấu chấm lớn nhất.Ví dụ, nếu dấu chấm lớn nhất là 45px, bạn có thể đặt giá trị đó là max, và sau đó bạn có thể đặt dung sai là -2. các chấm của bạn phải nằm trong khoảng 44-45 (từ 45 đến tối đa) – Adib

Trả lời

1

Giải pháp tốt nhất là chấm kích thước, mà tôi đã đề cập trong nhận xét. Bạn tìm thấy dấu chấm lớn nhất, xem xét nó là tối đa, và sau đó tạo ra một mức độ khoan dung.

Nhưng nếu tất cả các dấu chấm gần như bằng nhau (xem nó từ cạnh ở góc làm cho mọi thứ cách đều), hoặc thậm chí quá nhỏ? Giải pháp tốt nhất cho điều đó là tạo ra một ranh giới để nắm bắt các dấu chấm. Điều này đòi hỏi sự phân tích của cạnh xúc xắc (phát hiện cạnh về cơ bản), nhưng một khi bạn xác định ranh giới, bạn chắc chắn.

Tất cả những gì bạn cần là nắm bắt các cạnh của xúc xắc từ góc nhìn bạn đang nhìn thấy.

Dưới đây là một ví dụ trực quan:

enter image description here

Vì bạn có một bộ ranh giới ảo, bạn sẽ chỉ đơn giản là đo chấm trên một điểm cụ thể trên trục y.

1

Kích thước chấm là một heuristic tốt, nhưng tôi cũng sẽ thêm dấu chấm tròn: nếu bạn tính thứ tự thứ hai image moments của các chấm được đục lỗ, thời gian x và y càng giống nhau, hình tròn càng tròn. Tất nhiên, điều này sẽ không thành công, như kích thước, đối với một mặt, nhưng sau đó "mặt trên" thực sự có nghĩa là gì nếu bạn không thể cảm nhận được lực hấp dẫn ..

0

tại sao cố gắng cắt hình ảnh? dựa trên những con số bạn thấy ở bên cạnh, bạn có thể phỏng đoán số nào ở trên cùng. các số phụ của bạn có thể được sử dụng làm séc để xác thực phỏng đoán của bạn.

lưu ý rằng bạn sẽ phải cẩn thận về thuận tay (xem: http://mathworld.wolfram.com/Dice.html)

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