2012-02-21 46 views
12

Tôi bắt đầu chơi xung quanh với OpenCV cho một dự án tôi đang làm việc trên.
Đối với dự án này, tôi trồng cây trong chậu. Hình ảnh tĩnh của các giai đoạn phát triển khác nhau được lấy từ trên (xem hình bên dưới).Cách tiếp cận tối ưu để phát hiện lá giống như hình dạng trong opencv

Original picture

Mục đích là để phát hiện và cuối cùng là đo (ví dụ: kích thước) lá của các cây trồng trong giai đoạn phát triển khác nhau.
Tôi đã thử một cách tiếp cận ngây thơ khi sử dụng phát hiện cạnh Canny, tuy nhiên nó không hoạt động tốt (xem hình bên dưới) vì nó cũng phát hiện các cạnh nhỏ trong đất (bất kể loại ngưỡng nào tôi đã sử dụng).

Canny edge detection

Tôi nghĩ rằng cách tiếp cận tốt hơn là để phân đoạn đầu tiên hình ảnh bằng màu sắc và sau đó sử dụng một số thuật toán phát hiện cạnh để phát hiện những chiếc lá.
Có cách nào tốt hơn để làm điều đó không?

Cấu trúc lá được biết trước. Tôi có thể sử dụng thuật toán học/phân loại máy để có được kết quả tốt hơn không?

Tôi cũng chưa nghĩ về cách đo kích thước của lá? Có bất kỳ mô hình phổ biến nào để đo kích thước và mô tả khác không? (có thể có một đối tượng tham chiếu với kích thước đã biết trong ảnh?).

Cuối cùng, tôi cũng phải đối phó với tắc nghẽn với một số mở rộng. Điều này là không thể nhìn thấy trong các hình ảnh nhưng trong giai đoạn phát triển sau này tôi có thể phải đối phó với lá chồng chéo. Có cách tiếp cận nào để giải quyết vấn đề đó không?

tôi không thể thiên vị các bức tranh ủng hộ tôi (ví dụ: blacking ra đất, vv) như có thể có hàng ngàn nhà máy mà phải được xử lý.

Để tóm tắt câu hỏi của tôi:

  • phương pháp tốt nhất để phát hiện lá trong một đất (xem hình) là gì?
  • Thuật toán học máy có thể cải thiện khả năng phát hiện?
  • Làm cách nào để đo kích thước của lá?
  • Làm thế nào để đối phó với lá bị tắc/chồng chéo?

Tôi thực sự biết ơn đối với một số gợi ý hoặc ý tưởng.

Cập nhật (dựa trên Jeff7 comments):

đầu tiên tôi chạy các phân khúc trung bình thay đổi màu sắc cùng với một thuật toán floodfill và kết thúc với hình ảnh này:

mean shift color segmentation

Khi tôi bây giờ chạy dò tìm mép + mép liên kết trên ảnh đó kết quả tốt hơn nhiều:

Contours

Trả lời

3

Vì bạn có rất nhiều quyền kiểm soát các điều kiện trong đó bạn chụp ảnh, các vấn đề thiên vị có lợi cho bạn. Tạo mặt nạ ra khỏi thẻ đen để đặt quanh gốc cây khi bạn muốn chụp ảnh. Vấn đề của bạn giảm xuống một trong những đốm màu xanh lá cây đốm trên nền đen. Vì bạn cũng kiểm soát vị trí của máy ảnh, vị trí của cây, bạn sẽ có thể sắp xếp các vấn đề sao cho tỷ lệ pixel/mm là hằng số trong chuỗi ảnh của bạn. Khu vực lá sau đó là một vấn đề đơn giản của đếm pixel.

Điều này chưa, đối phó với vấn đề tắc nghẽn. Bạn có thể có thể tìm ra một số thứ bằng cách lấy thêm 2 hình ảnh, độ cao của cây trong 2 mặt phẳng trực giao (một lần nữa sử dụng nền đen) để có được một số ý tưởng về hình dạng của cây.

EDIT sau khi nhận xét ...

Vâng, câu hỏi của bạn bao gồm báo cáo kết quả 'Đối với dự án này, tôi đang phát triển một nhà máy cụ thể trong một nồi' và bây giờ bạn muốn xử lý hàng ngàn những điều chết tiệt. Tôi vẫn theo đuổi khả năng thiên vị hình ảnh theo ý của bạn. Ví dụ: nếu hình ảnh bạn đăng không có nhựa màu xanh lá cây trong nền thì có thể bạn sẽ có một bức ảnh có thể tách rời, với độ chính xác cao, bằng cách vẽ đơn giản trên kênh màu xanh lục của (các) hình ảnh của bạn . Vì vậy, thoát khỏi nền màu xanh lá cây, và tưới nước cho đất trước khi chụp ảnh để tăng độ tối của nó.

Đối với vấn đề tắc nghẽn, bạn sẽ cần một cái gì đó thông minh hơn đề xuất ban đầu của tôi để xử lý hàng nghìn nhà máy. Có lẽ bạn có thể hy sinh một vài cây ở mỗi giai đoạn, đo 'khu vực lá quan sát từ trên cao', sau đó tách rời lá, sắp xếp chúng một cách riêng biệt trên một thẻ đen và lấy được mối quan hệ thực nghiệm giữa tổng diện tích và khu vực quan sát được.

THÊM CHỈNH SỬA

OK, vì vậy bạn không thể thiên vị cảnh trong lợi của bạn. Bạn có nghĩ đến việc sử dụng bộ lọc trên máy ảnh để chỉ nhận ánh sáng xanh lục không? Hoặc chiếu sáng làm cho các vật thể xanh sáng hơn các vật thể không phải màu xanh lá cây? Tôi không có ý tưởng về điều này ...

CHỈNH SỬA CUỐI CÙNG

Tôi đã hết các ý tưởng. Tôi nghĩ rằng cách tiếp cận ban đầu của bạn, sử dụng màu sắc để phân biệt giữa lá và nền, là tốt. Vì bạn biết cấu trúc của các lá bạn có thể thử khớp mẫu, nhưng bạn có thể ước tính cả khu vực và độ dài (hoặc sự khác biệt về diện tích và chiều dài) chỉ bằng cách đếm pixel. Bạn có thể muốn điều tra các hoạt động hình thái (ví dụ: skeletonisation) để lấy ra các thước đo hình dạng từ các hình ảnh. Bạn có thể tìm thấy tài liệu trong các tài liệu về cảm biến từ xa của tán lá (vv) giúp.

Tôi có ấn tượng rằng bạn đã cam kết với mục tiêu triển khai hệ thống thị giác máy tính, nơi mục tiêu của bạn thực sự là theo dõi sự phát triển của thực vật và một số ý tưởng của bạn (ví dụ: phát hiện cạnh, học máy) không đóng góp để đạt được mục tiêu phù hợp của bạn.

+0

cảm ơn phản hồi. Bạn đúng, tôi có quyền kiểm soát các điều kiện và tôi cũng nghĩ về "bôi đen" ra khỏi đất. Thật không may nó không thực sự có thể vì tôi phải đối phó không chỉ với một nhà máy nhưng đôi khi hàng ngàn và bôi đen ra khỏi đất sẽ là quá tốn thời gian. Để đo kích thước lá của bạn là đúng. Điều này tôi có thể kiểm soát thực sự như hình ảnh được lấy luôn từ cùng một vị trí và các chậu có cùng kích thước. –

+0

Xin lỗi vì sự nhầm lẫn. Tôi đã cập nhật các câu hỏi ban đầu để làm rõ nó một chút.Tôi chỉ cho thấy một nhà máy làm ví dụ, tuy nhiên tôi thường có 36 cái chậu trong khay. –

+0

Tôi chưa từng nghĩ về điều đó nhưng đây là những gợi ý tốt. Cảm ơn. Tôi sẽ nhìn vào nó. Bạn có thể đề xuất bất kỳ thuật toán hoặc phương pháp nào hoạt động tốt nhất trong thiết lập đó (nơi tôi không thể thiên vị hình ảnh và có loại phân phối màu này) không? –

3

Hãy xem phân đoạn màu thay đổi trung bình (có một ví dụ đi kèm với OpenCV trong thư mục mẫu). Bạn có thể sử dụng điều này để tách hình ảnh của bạn thành 2 lớp (thực vật và đất) và sử dụng nó để xử lý dữ liệu của bạn.

Để đo lường, bạn có thể muốn bỏ qua hiệu ứng tắc và hiệu chỉnh máy ảnh ban đầu và chỉ nhìn vào phần diện tích trong hình ảnh là lớp thực vật.

Nếu bạn muốn xuống để đo từng lá riêng lẻ, bạn có thể sử dụng phương pháp "theo dõi" nơi bạn sử dụng thông tin thời gian cũng như thông tin không gian trong hình ảnh. Thông tin thời gian có thể là vị trí và kích thước của lá trong hình ảnh trước đó. Có thể có rất nhiều kỹ thuật bạn có thể áp dụng, nhưng tôi sẽ bắt đầu đơn giản nếu tôi là bạn và xem bạn đã đạt được bao xa.

+0

Cảm ơn phản hồi. Tôi đã cập nhật câu trả lời của tôi dựa trên dữ liệu đầu vào của bạn. Có vẻ như để làm việc khó khăn tôi đã phải chơi xung quanh một chút với các thông số phân khúc thay đổi trung bình để có được kết quả tốt (tôi đã phải tăng bán kính không gian cửa sổ bằng một số tiền hợp lý mà làm cho các thuật toán chạy khá chậm) –

0

PlantCV chỉ ra rằng bạn càng kiểm soát được thiết lập của bạn, bạn càng ít phải làm việc trong phần mềm.
Nếu bạn kiểm soát vị trí giống của mình (thay vì chỉ tán xạ chúng trên khay), bạn có thể che khuất xung quanh cây con và loại bỏ sự lộn xộn của nền. Đây cũng là một sự trợ giúp quan trọng để làm việc với các cây riêng lẻ, và tìm kiếm cùng một cây trong các hình ảnh khác nhau. Các nhà máy chồng chéo sẽ làm cho một tình huống không thể xảy ra, hoặc khi bạn phân tán hạt giống và mầm mọc cạnh nhau, hoặc khi chúng vượt quá kích thước khoảng cách của bạn. Bạn phải quyết định xem bạn có trồng cây để có những quan sát tốt nhất hay tăng trưởng tối ưu. Cả hai không tương thích lẫn nhau. Theo kinh nghiệm của tôi, bạn có quyền sử dụng màu (cv2.inRange) làm bước chính, sau đó chuyển sang phát hiện cạnh Canny. Từ đó, bạn có thể nhận được đường nét. Tôi đoán bạn đang sử dụng Arabadopsis, vì vậy bạn có thể tìm kiếm một mẫu hình tròn để đếm lá (không hoạt động với rau diếp). Khi bạn đã tách các cây của mình và có các đường bao (bên ngoài), bạn có thể sử dụng cv2.contourArea và cv2.minAreaRectangle để lấy một số chỉ số cơ bản. Đây là tuyến đường tôi đang làm việc.

0

Đây là khu vực nghiên cứu hoạt động. Tôi khuyên bạn nên sử dụng các giấy tờ sau:

  • Scharr et al. 2016: Leaf sự phân hóa trong kiểu hình cây: một nghiên cứu đối chiếu (pdf)

  • Bell và Dee 2016: nhà máy Xem nuôi thương phẩm một giấy vị trí trên computer vision và Arabidopsis thaliana. http://doi.org/10.1049/iet-cvi.2016.0127

PlantCV có một số phương tiện để phân đoạn lá với biến đổi khoảng cách và lưu vực, và tôi muốn thêm nhiều hơn nữa. Xem preprint của chúng tôi, một phiên bản sửa đổi sẽ sớm được xuất bản trong PeerJ.

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