đếm tế bào máu


7

Làm thế nào để đếm các tế bào máu trong opencv? Vấn đề là chúng dính vào nhau.

Hình ảnh ví dụ:

nhập mô tả hình ảnh ở đây

Có lẽ cặp biểu đồ hình học ( Geometric Histograms ) thích hợp cho phù hợp với hình dạng vòng tròn một phần?


Tôi đề nghị bạn đọc "Xử lý hình ảnh kính hiển vi", từ Báo chí học thuật. Tôi đã nghe nói có một ebook "lưu hành" trực tuyến.
heltonbiker

@heltonbiker Tôi không tìm thấy thuật toán cho nhiệm vụ của mình chỉ là thuật toán đầu nguồn tiêu chuẩn.
mrgloom


@endolith nhưng tôi không thể tách rời các đốm màu.
mrgloom

@mrgloom: Cái gì? Bạn muốn đếm các vòng tròn riêng lẻ, phải không? Không phải những đốm màu?
endolith

Câu trả lời:


5

Chỉ là một ý tưởng không đảm bảo thành công:

  1. cô lập các đốm màu đỏ (ví dụ đánh dấu chúng là màu trắng, phần còn lại của hình ảnh là màu đen)
  2. thực hiện chuyển đổi khoảng cách cho các đốm màu trắng (mỗi pixel cho biết khoảng cách đến pixel đen gần nhất)
  3. thực hiện triệt tiêu không cực đại (lý tưởng là chỉ còn lại các tâm của các vòng tròn)
  4. đối phó với các điều kiện không lý tưởng (lọc ra các đỉnh nhỏ từ các vật phẩm)

Có vẻ như thuật toán đầu nguồn hoạt động imagejdocu.tudor.lu/. Vấn đề là bản đồ khoảng cách không thể xử lý với các đối tượng chồng chéo lên nhau. Tôi nghĩ rằng tôi cần sử dụng hình dạng vòng tròn bằng cách nào đó. dl.dropbox.com/u/8841028/blood%20cells/watershed.png dl.dropbox.com/u/8841028/blood%20cells/distance_map.png
mrgloom

@mrgloom: Khía cạnh hình học "hình tròn" nằm giữa các bước 2 và 3. Đối với hình tròn, điểm có khoảng cách tối đa đến các cạnh là tâm. Tài sản này giữ rất tốt ngay cả khi các vòng tròn chồng chéo. Bạn nhận được hai cực đại cho blob kết hợp. Giá trị của mỗi mức tối đa tương ứng với bán kính tương ứng, do đó, hãy kiểm tra dễ dàng trong bước 4: vẽ các vòng tròn mà bạn mong đợi và đo sự chồng chéo giữa vòng tròn và tế bào máu.
MSalters

1

Tương tự như đề xuất của @ SalemMansour, đây cũng là một cách tiếp cận dựa trên khu vực.

Một ước tính thực sự thô có thể được tính nếu chúng ta có thể giả định

  • kích thước ô (tính bằng pixel) không khác nhau nhiều trong tất cả các hình ảnh,
  • màu sắc của tế bào không khác nhau nhiều trong tất cả các hình ảnh.

Sau đó, bạn có thể sử dụng kích thước trung bình của một ô và tính toán mặt nạ giá rẻ cho các ô như thế này:

from SimpleCV import *
im = Image("s58Hl.jpg")
r,g,b = im.splitChannels()
cellmask = g.equalize().threshold(90).invert()
masksize = cellmask.getGrayNumpy().sum()/255.
cellsize = 27*27 # premeasured cell size
cellnum = masksize/cellsize
print(cellnum)

Nó cho tôi ~ 211 cho số lượng tế bào.

Hình ảnh mặt nạ là như thế này: nhập mô tả hình ảnh ở đây

Đối với hình ảnh nhỏ hơn này, tôi sẽ đếm 9 ô theo cách thủ công:

nhập mô tả hình ảnh ở đây

Giải pháp cho kết quả 9,46502057613.


Tất nhiên, nếu bất kỳ giả định nào là không hợp lệ thì phương pháp này là vô ích. Nó cũng nhạy cảm với ngưỡng màu cứng và hằng số kích thước ô. Do cân bằng màu sắc, nó hoàn toàn có thể thất bại nếu không có ô nào hiện diện trong ảnh.

Nhưng nó thực sự đơn giản và rẻ tiền :)


-1

Trước tiên, bạn phải thay đổi hình ảnh thành hình ảnh nhị phân bằng cách sử dụng ngưỡng, phương pháp otsu. Bạn có thể tách rời các ô (các ô chồng chéo) bằng cách sử dụng hình thái toán học như xói mòn, mở. Ước tính diện tích.


1
Tôi khá thích câu trả lời này và nó khá nhiều những gì tôi muốn giới thiệu, nhưng nó không rõ ràng. Nếu bạn có thể chỉnh sửa nó một chút để cải thiện sự rõ ràng, tôi chắc chắn sẽ bỏ phiếu cho nó.
nivag
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.