2012-06-06 31 views
6

Tôi đang làm việc trên một nhiệm vụ cố gắng chuyển đổi một bản phác thảo 2D với các nếp nhăn gấp thành một biểu diễn 3D đầy đủ. Đường màu đỏ sẽ là các thung lũng và các ngọn núi xanh/ngọn núi. Tôi muốn tính toán các tọa độ được chuyển đổi/ánh xạ {P1 '... P8'}. Tôi chưa tìm thấy bất kỳ phần mềm tốt nào có thể thực hiện điều này một cách tự động nhưng sẽ đánh giá cao các mẹo.Gấp một tờ giấy (Computer Vision)

Folding Pattern

  • một - gấp góc
  • P - Phối hợp
  • E - yếu tố
  • xanh dòng - núi gập
  • đỏ dòng - gấp thung lũng

Folded Với a1 = a2 = a3 = 90 deg (pi/2 rad) (góc gấp) và mũi tên như normals surfare

Tôi đang sử dụng Matlab nhưng tôi đang tìm kiếm các thuật toán chung để giải quyết vấn đề này.

Giả sử điểm P0 được cố định trong Origo và yếu tố E1 sẽ không thay đổi tọa độ của nó, làm thế nào nên tôi mô tả tốt nhất việc chuyển đổi? Tôi có nên sử dụng tọa độ không đồng nhất hoặc đồng nhất, tọa độ cực không?

Ví dụ, điểm P8 phụ thuộc vào các tọa độ khác phụ thuộc vào các góc.

Tôi cho rằng tôi có thể sử dụng một loại ma trận kề cho các điểm (Nodes) và/hoặc ma trận ghép mỗi phần tử với các nút của nó. Ví dụ: [E1 P0 P4 P5 P1; E2 P1 P5 P6 P2; ...]

Việc chuyển đổi cho mọi tọa độ là chuyển đổi + xoay và phép biến đổi phụ thuộc vào tọa độ/phần tử. Nhưng nó được khôn lanh với một số yếu tố kết nối ...

Làm cách nào để tôi có thể làm phẳng một "giấy" 2D với các mẫu gấp thành tọa độ 3D?

+0

Bạn có chắc chắn rằng giấy sẽ không chạy vào nhau không? Ngoài ra, thứ tự gấp (xoay là KHÔNG giao hoán) là gì? – tskuzzy

Trả lời

1

bạn có thể lặp qua từng nếp nhăn gấp và tính toán chuyển đổi của tất cả các pixel nằm ở một bên của nếp gấp.

bạn có thể sử dụng ma trận biến đổi để tính tọa độ của các điểm gấp. hãy xem the wikipedia article describing transformation matrix.

trước tiên, dịch tất cả các điểm sao cho nếp nhăn được căn chỉnh với trục, sau đó xoay tất cả các điểm trên một mặt của nếp gấp theo hướng của nếp gấp. sau đó bạn có thể đảo ngược bản dịch đầu tiên để hình trở lại vị trí ban đầu của nó. lặp lại với quá trình với nếp nhăn tiếp theo, cho đến khi bạn đã hoàn toàn gấp hình.

sử dụng MATLAB, tính toán ma trận khá dễ dàng để tạo phôi.

+0

Âm thanh somwhat những gì tôi đã có trong tâm trí! Tôi đang sử dụng công thức xoay của Rodrigues. Tuy nhiên, khi các mô hình gấp phức tạp hơn tôi cần phải sắp xếp mà điểm để gấp tôi tin. Gấp tất cả khác sẽ làm cho một mớ hỗn độn? Có một cái nhìn tại pic này. Bạn nghĩ sao? [link] http://i49.tinypic.com/2ewfozq.png) – POHU

+0

eck! những gì một mô hình gấp! cho một mô hình như vậy, bạn sẽ có vấn đề mà gấp di chuyển các điểm khác hơn so với những người bạn đang gấp. rõ ràng đang đẩy vào đường màu xanh sẽ kéo một số điểm dọc theo đường màu đỏ ... và điều đó phức tạp hơn nhiều so với những gì tôi đã mô tả. –

+0

Ha yes! Tôi thấy loại vấn đề này rất tiên tiến. Bạn có nghĩ rằng đó là trong những trường hợp hợp lý có thể viết một thuật toán làm việc cho kiểu mẫu này, nhưng điều đó cũng cho một mẫu tùy ý? Ngày đầu tiên trong công việc, may mắn cho tôi hehe ... – POHU

1

Bạn có thể sử dụng các kỹ thuật được sử dụng để mô tả rô bốt có nhiều khớp quay; vấn đề của bạn có thể được mô tả như là một vấn đề forward kinematics.Một bài đọc thú vị khác có thể là this.

0

Bạn chỉ muốn áp dụng phép chuyển đổi tuyến tính cho mỗi điểm ở một bên của đường kẻ.

Việc chuyển đổi là một vòng quay quanh một trục, có ma trận biến đổi là given by

enter image description here

Kể từ khi trục không được làm trung tâm về nguồn gốc, bạn sẽ cần phải đầu tiên áp dụng một dịch về nguồn gốc, sau đó quay vòng, sau đó dịch ngược lại.

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