Tôi đang giúp một phòng khám thú y đo áp lực dưới chân chó. Tôi sử dụng Python để phân tích dữ liệu của mình và bây giờ tôi bị mắc kẹt khi cố gắng chia các bàn chân thành các tiểu vùng (giải phẫu).
Tôi đã tạo một mảng 2D của mỗi chân, bao gồm các giá trị tối đa cho mỗi cảm biến đã được tải bởi chân theo thời gian. Đây là một ví dụ về một chân, trong đó tôi đã sử dụng Excel để vẽ các khu vực tôi muốn 'phát hiện'. Đây là 2 trong 2 hộp xung quanh cảm biến với cực đại cục bộ, cùng nhau có tổng tiền lớn nhất.
Vì vậy, tôi đã thử một số thử nghiệm và quyết định chỉ đơn giản là tìm kiếm mức tối đa của mỗi cột và hàng (không thể nhìn theo một hướng do hình dạng của bàn chân). Điều này dường như 'phát hiện' vị trí của các ngón chân riêng biệt khá tốt, nhưng nó cũng đánh dấu các cảm biến lân cận.
Vậy đâu là cách tốt nhất để nói với Python rằng mức tối đa nào là thứ tôi muốn?
Lưu ý: Các hình vuông 2x2 không thể trùng nhau, vì chúng phải là các ngón chân riêng biệt!
Ngoài ra, tôi lấy 2x2 làm tiện lợi, mọi giải pháp tiên tiến hơn đều được hoan nghênh, nhưng tôi chỉ đơn giản là một nhà khoa học về chuyển động của con người, vì vậy tôi không phải là một lập trình viên thực sự hay một nhà toán học, vì vậy hãy giữ cho nó 'đơn giản'.
Đây là phiên bản có thể được tải vớinp.loadtxt
Các kết quả
Vì vậy, tôi đã thử giải pháp của @ jextee (xem kết quả bên dưới). Như bạn có thể thấy, nó hoạt động rất tốt ở bàn chân trước, nhưng nó hoạt động kém hơn đối với chân sau.
Cụ thể hơn, nó không thể nhận ra đỉnh nhỏ đó là ngón chân thứ tư. Điều này rõ ràng là cố hữu với thực tế là vòng lặp nhìn từ trên xuống về phía giá trị thấp nhất, mà không tính đến nơi này.
Có ai biết làm thế nào để điều chỉnh thuật toán của @ jextee, để nó cũng có thể tìm thấy ngón chân thứ 4 không?
Vì tôi chưa xử lý bất kỳ thử nghiệm nào khác, tôi không thể cung cấp bất kỳ mẫu nào khác. Nhưng dữ liệu tôi đưa ra trước đây là trung bình của mỗi chân. Tệp này là một mảng với dữ liệu tối đa là 9 chân theo thứ tự chúng đã liên lạc với tấm.
Hình ảnh này cho thấy cách chúng được trải rộng trên không gian.
Cập nhật:
Tôi đã thiết lập một blog cho bất kỳ ai quan tâm và tôi đã thiết lập SkyDrive với tất cả các phép đo thô. Vì vậy, cho bất cứ ai yêu cầu nhiều dữ liệu hơn: nhiều quyền lực hơn cho bạn!
Cập nhật mới:
Vì vậy, sau khi được giúp đỡ, tôi đã nhận được câu hỏi của mình về phát hiện chân và phân loại chân , cuối cùng tôi đã có thể kiểm tra phát hiện ngón chân cho mỗi chân! Hóa ra, nó không hoạt động tốt trong bất cứ thứ gì ngoại trừ bàn chân có kích thước giống như trong ví dụ của tôi. Dĩ nhiên, về mặt nhận thức, đó là lỗi của tôi khi chọn 2x2 một cách tùy tiện.
Đây là một ví dụ hay về sai lầm: móng tay được nhận ra là ngón chân và 'gót chân' rất rộng, nó được nhận ra hai lần!
Bàn chân quá lớn, do đó, việc lấy kích thước 2x2 không có sự chồng chéo, khiến một số ngón chân bị phát hiện hai lần. Một cách khác, ở những con chó nhỏ thường không tìm thấy ngón chân thứ 5, mà tôi nghi ngờ là do diện tích 2x2 quá lớn.
Sau khi thử giải pháp hiện tại trên tất cả các phép đo của tôi tôi, tôi đã đi đến kết luận đáng kinh ngạc rằng gần như tất cả những con chó nhỏ của tôi, nó không tìm thấy ngón chân thứ 5 và trong hơn 50% tác động đối với những con chó lớn, nó sẽ tìm thấy nhiều hơn!
Vì vậy, rõ ràng tôi cần phải thay đổi nó. Dự đoán của riêng tôi là thay đổi kích thước của neighborhood
một cái gì đó nhỏ hơn cho những con chó nhỏ và lớn hơn cho những con chó lớn. Nhưng generate_binary_structure
sẽ không để tôi thay đổi kích thước của mảng.
Do đó, tôi hy vọng rằng bất cứ ai khác có một gợi ý tốt hơn để xác định vị trí các ngón chân, có lẽ có tỷ lệ diện tích ngón chân với kích thước bàn chân?