2016-03-12 19 views
9

Vấn đề của tôi là như sau:tuyến tính thay đổi giữa 2 bộ tọa độ

Đối với công việc của tôi, tôi cần phải so sánh hình ảnh của tấm ảnh quét với một danh mục của một mẫu của các ngôi sao nổi tiếng trong khu vực nói chung của bầu trời các tấm bìa (tôi gọi nó là danh mục chính). Để kết thúc, tôi trích xuất thông tin, như độ sáng trên hình ảnh và vị trí trên bầu trời, của các đối tượng trong hình ảnh và lưu nó vào bảng. Sau đó tôi sử dụng python để tạo ra một phù hợp đa thức để hiệu chỉnh độ lớn của các ngôi sao trong hình ảnh. Điều đó làm việc lên đến độ chính xác nhất định khá tốt, nhưng tiếc là không đủ tốt, vì có sự dịch chuyển nhỏ giữa các tọa độ mà đối tượng có trong các tấm ảnh và trong danh mục chính.

đây các vòng tròn màu xanh lá cây chỉ ra vị trí (trung tâm của vòng tròn) của các đối tượng trong danh mục chủ. Như bạn có thể thấy các ngôi sao thực tế luôn nằm ở phía trên bên trái của các đối tượng trong danh mục chính.

Tôi đã xem xét một chút so với hình ảnh (ví dụ: How to detect a shift between images) nhưng hiện tại tôi đang mất một chút, vì tôi không thực sự so sánh hình ảnh nhưng mảng với tọa độ của đối tượng. Một vấn đề nữa ở đây là (như bạn có thể thấy trong hình) có các đối tượng trong danh mục chính không hiển thị trên các tấm và không phải tất cả các tấm đều có độ sâu giống nhau (nghĩa là một số hiển thị nhiều ngôi sao hơn những cái khác).

Điều tôi muốn biết là cách tìm và sửa sự dịch chuyển tuyến tính giữa 2 mảng có kích thước tọa độ khác nhau trong python. Không nên có bất kỳ phép quay nào, vì vậy nó chỉ là một sự dịch chuyển theo hướng x và y. Các mảng là các tái diễn thô lỗ bình thường.

Trả lời

1

Tôi sẽ thay đổi đề xuất của @ OphirYoktan một chút. Bạn có những vòng kết nối này. Tôi giả sử bạn biết bán kính, và bạn có giá trị bán kính đó vì một lý do.

Thay vì chọn điểm ngẫu nhiên, hãy lọc danh mục chính cho x, y trong bán kính mẫu của bạn. Sau đó tính toán tuy nhiên nhiều vectơ bạn cần tính toán cho tất cả các mục nhập danh mục chính có thể trong phạm vi mẫu của bạn. Làm điều tương tự lặp đi lặp lại, sau đó thu thập một biểu đồ của các vectơ. Có lẽ một số nhỏ sẽ xảy ra nhiều lần, đó là những bản dịch có thể đúng. (Lý tưởng là "số nhỏ" == 1.)

+0

Bán kính của vòng tròn là bán kính tìm kiếm cho thuật toán xem qua danh mục chính của tôi để tìm các kết quả phù hợp giữa danh mục và hình ảnh. Vì vậy, tôi đã trích xuất tất cả các kết quả phù hợp có thể và tính toán sự khác biệt giữa chúng như bạn đã đề xuất và có vẻ như nó hoạt động. Các biểu đồ không hoàn hảo nhưng sau khi làm mịn chúng ra, tôi nhận được tối đa mà tôi có thể sử dụng để có được bản dịch. Cảm ơn –

1

Có một số giải pháp khả thi Lưu ý - đây là những gợi ý mức độ cao, bạn sẽ cần một số công việc để chuyển đổi nó sang mã

Các giải pháp gốc (cross tương quan) có thể được thích nghi với cấu trúc dữ liệu hiện tại làm việc, và nên làm việc

một tin rằng RANSAC sẽ được tốt hơn trong trường hợp của bạn về cơ bản nó có nghĩa là: tạo ra một mô hình dựa trên một số ít các điểm dữ liệu (số lượng tối thiểu được yêu cầu để xác định một mô hình có liên quan), và xác minh đó là sự chính xác bằng cách sử dụng tập dữ liệu đầy đủ.

đặc biệt, nếu bạn chỉ có dịch để xem xét (và không quy mô):

  1. chọn một trong những điểm bạn
  2. trận đấu nó đến một điểm ngẫu nhiên trong danh mục [bạn có thể làm "ước đoán" , nếu bạn có một số trước về những gì bản dịch có nhiều khả năng]
  3. hợp này mang đến cho bạn bản dịch
  4. xác minh dịch này phù hợp với phần còn lại của số điểm của bạn
  5. lặp lại cho đến khi bạn tìm thấy một goo d phù hợp với
1

Tôi giả định ở đây các đối tượng không nhất thiết phải theo cùng thứ tự trong cả tấm ảnh và danh mục chính.

Hãy xem xét tập các vectơ vị trí, A, của các đối tượng trong tấm ảnh và tập hợp các vectơ vị trí, B, của các đối tượng trong danh mục chính.Bạn đang tìm kiếm một vector, v, chẳng hạn rằng đối với mỗi một trong A, một + v là xấp xỉ một số yếu tố trong b.

Thuật toán rõ ràng nhất đối với tôi sẽ nói cho mỗi một, đối với mỗi b, chúng ta hãy v = b - một. Bây giờ, đối với mỗi phần tử trong A, hãy kiểm tra xem có một phần tử tương ứng trong B đủ gần (trong khoảng cách e mà bạn chọn) cho phần tử đó + v. Khi bạn tìm thấy v đáp ứng điều kiện này, v là sự thay đổi của bạn.

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