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ụ:
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?
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ụ:
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?
Câu trả lời:
Chỉ là một ý tưởng không đảm bảo thành công:
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
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:
Đối với hình ảnh nhỏ hơn này, tôi sẽ đếm 9 ô theo cách thủ công:
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 :)
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.