2013-07-17 32 views
5

Tôi hiện đang cố gắng tìm một cách gọn gàng để lưu trữ các "nhánh" riêng biệt trong một hình ảnh nhị phân. hình ảnh động nhỏ này giải thích nó:OpenCV: Tìm kiếm pixel dọc theo các chi nhánh đơn pixel

searching for branches

Như tôi đã đi dọc theo cành tôi cần phải thu thập các chỉ số điểm ảnh tạo nên một chi nhánh rộng single-pixel. Khi tôi nhấn một điểm giao nhau, nó sẽ phân chia và lưu trữ các nhánh mới.

Một cách để thực hiện nó là tạo một tiểu vùng 3x3, tìm hiểu xem có điểm ảnh màu trắng bên trong nó hay không, di chuyển nó cho phù hợp, tạo điểm giao nhau nếu có nhiều hơn hai. Luôn luôn lưu trữ các tiểu vùng trước đó để người ta có thể sử dụng nó để đảm bảo rằng chúng tôi không di chuyển đến khu vực chúng tôi đã quét. Đó là một chút khó khăn để tìm ra cách tôi sẽ đi về nó mặc dù.

Tôi về cơ bản cần phải sắp xếp lại các pixel dựa trên cấu trúc phân cấp "dòng/đường cong". Một phần khác của ứng dụng sau đó sẽ vẽ lại các số liệu, mà nội bộ hoạt động bằng cách tạo ra các dòng giữa các điểm do đó cần phải có chúng "đặt hàng".

+0

này trông giống như một [vấn đề traversal đồ thị] (http://en.wikipedia.org/wiki/Graph_traversal), nơi các điểm giao nhau là các nút và các chi nhánh rộng đơn điểm ảnh là các cạnh của đồ thị. Bắt đầu từ một điểm ban đầu tùy ý, bạn có thể khám phá tất cả các nhánh và nút giao bằng cách áp dụng các thuật toán truyền tải đồ thị như [tìm kiếm theo chiều rộng đầu tiên] (http://en.wikipedia.org/wiki/Breadth-first_search) hoặc [tìm kiếm theo chiều sâu ] (http://en.wikipedia.org/wiki/Depth-first_search) – Alexey

+0

Ngoài ra, bạn có thể xem [Ghi nhãn thành phần được kết nối] (http://en.wikipedia.org/wiki/Connected-component_labeling) – Alexey

+0

@pray Bạn có cần thực hiện tìm kiếm ở đây không? Nó có phải là một ràng buộc để bắt đầu và di chuyển dọc theo một chi nhánh? Nếu bạn có thể "nhìn thấy" toàn bộ hình ảnh, việc nhóm và gắn nhãn các nhánh trở nên dễ dàng hơn. Nếu bạn không thể, sau đó bạn cần một tìm kiếm đầu tiên chiều sâu và di chuyển trở lại ngã ba để tìm kiếm một số khác; lưu trữ dữ liệu mọi lúc - Alexey gợi ý ngay bây giờ. – baci

Trả lời

1

Tôi không biết nếu bạn có thể áp dụng nó trong trường hợp của bạn, nhưng bạn nên xem xét cv :: findContour. bạn sẽ nhận được một vectơ các điểm được đặt hàng.

http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/find_contours/find_contours.html

+0

Ah, đã thử điều đó. findContours không phát dọc theo các đường đơn pixel. Nó cũng không thực sự phù hợp với những gì tôi muốn làm sau này với dữ liệu. – prayforbacon

+0

Có thể bạn có thể chơi với ROI, nhưng để đặt hàng điểm của bạn tôi không thể làm tốt hơn ... – Poko

+0

Tôi là một thằng ngốc. Phương pháp này không hoạt động, đặc biệt với ứng dụng tỉa thưa trước. – prayforbacon

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