gpt4 book ai didi

opencv - 红细胞计数

转载 作者:行者123 更新时间:2023-12-02 16:29:47 25 4
gpt4 key购买 nike

我正在尝试计算显微镜图像上的红细胞数量。这些是较小的细胞。 (我已经尝试过首先使用CNN和滑动窗口,但它太慢了,所以我正在寻找更简单的分割)

我的做法是:

  • 阈值
  • 查找并绘制所有已填充的轮廓,以便单元格不会有孔,
  • 进行距离变换
  • 遍历所有最大值
  • 用一个半径为最大值的圆掩盖当前最大值并存储最大位置

  • 我的问题是,一些单元格在中间明亮区域有一个“洞”,与背景的值相似。如果我对图像进行阈值处理,则某些单元格掩码将变为半圆形,而不是圆形,并且距离变换值远低于预期值。

    我已经在掩码图像上标记了具有“孔”的单元格。

    我可以关闭这个洞或圆圈吗?是否有阈值方法或技巧?

    以下是负责单元格提取的代码部分:
    cv::adaptiveThreshold(_imgIn ,th, 255, ADAPTIVE_THRESH_GAUSSIAN_C, (bgblack ? CV_THRESH_BINARY: CV_THRESH_BINARY_INV), 35, 5 );//| CV_THRESH_OTSU);
    Mat kernel1 = Mat::ones(3, 3, CV_8UC1);
    for (int i=0; i< 5;i++)
    {
    dilate(th, th, kernel1);
    erode(th, th, kernel1);
    }
    vector<vector<Point> > contours;

    findContours(th, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

    mask = 0;
    for( unsigned int i = 0; i < contours.size(); i++ )
    {
    drawContours(mask, contours, i, Scalar(255), CV_FILLED);
    }


    cv::distanceTransform(mask, dist, CV_DIST_L2, 3);
    }



    double min, max;
    cv::Point pmax;
    Mat tmp1 = dist.clone();
    while (true)
    {
    cv::minMaxLoc(tmp1, 0, &max, 0, &pmax);
    if ( max < 5 )
    break;
    cv::circle(_imgIn, pmax, 3 , cv::Scalar(0), CV_FILLED );
    cv::circle(tmp1, pmax, max , cv::Scalar(0), CV_FILLED );

    }

    Detected
    Mask
    Origin

    最佳答案

    封闭孔
    Closing是数学形态学领域的重要算子。和它的双算子开一样,它可以从腐 eclipse 和膨胀的基本运算中推导出来。与那些运算符一样,它通常应用于二进制图像,尽管有灰度版本。闭合在某些方面类似于膨胀,因为它倾向于扩大图像中前景(明亮)区域的边界(并缩小这些区域中的背景色孔),但它对原始边界形状的破坏性较小。与其他形态算子一样,确切的操作由结构元素决定。运算符的作用是保留与该结构元素具有相似形状的背景区域,或者可以完全包含该结构元素的背景区域,同时消除所有其他背景像素区域。

    在 Open CV 中,这看起来如下

    import cv2 as cv
    import numpy as np

    img = cv.imread('j.png',0)
    kernel = np.ones((5,5),np.uint8)
    erosion = cv.erode(img,kernel,iterations = 1)

    closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)

    Closing example

    完整文档 here .

    关于opencv - 红细胞计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51113773/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com