【问题标题】:Skin pores analysis using Blob detection in OpenCV在 OpenCV 中使用 Blob 检测进行皮肤毛孔分析
【发布时间】:2017-02-14 19:05:49
【问题描述】:

我正在做一个项目,我想检测给定皮肤图像中的毛孔。 我已经使用 Java 从 OpenCv 尝试了各种方法(HoughCircles、BlobDetection 和 Contours),但是我无法继续。

HoughCircles 向我展示了所有错误的圆圈,轮廓也是如此。 我当前的代码使用 blob 检测技术,该技术也没有显示所需的内容。示例代码如下:

public void detectBlob() {

    Mat orig = Highgui.imread("skin_pore.jpg",Highgui.IMREAD_GRAYSCALE);

    Mat MatOut= new Mat();

    FeatureDetector blobDetector;

    blobDetector = FeatureDetector.create(FeatureDetector.SIFT);

    MatOfKeyPoint keypoints1 = new MatOfKeyPoint();

    blobDetector.detect(orig,keypoints1); 

    org.opencv.core.Scalar cores = new org.opencv.core.Scalar(0,0,255);

    org.opencv.features2d.Features2d.drawKeypoints(orig,keypoints1,MatOut,cores,2);

    Highgui.imwrite("PhotoOut.jpg", MatOut);
}
    public static void main(String args[]) {
        BlobDetection bd = new BlobDetection();
        bd.detectBlob();
    }

当我使用 FeatureDetector.SIMPLEBLOB 而不是 FeatureDetector.SIFT 尝试相同的代码时,它显示几乎 0 个 blob。

为上述代码附加了输出和源图像。源图像

使用 SIFT 输出图像

是否有任何其他算法可以帮助实现该结果,或者有什么合适的方法可以实现这一目标?

【问题讨论】:

    标签: java opencv image-processing feature-detection


    【解决方案1】:

    由于您没有在问题中提出任何问题,因此我不会给您答案。更多一些一般性建议。

    您尝试使用命名算法解决该问题清楚地表明您完全不知道自己在做什么。您缺乏图像处理的基础知识。 如果您甚至不知道数字如何移动,这就像试图赢得与体面的国际象棋棋手一样。

    我强烈建议您为自己准备一本初学者书籍,阅读并确保您了解其内容。然后在你使用它们之前对你想使用的算法做更多的研究。 你不能随便拿一些图像,把它输入到你在互联网上找到的一些随机特征检测算法中并期望成功。

    例如,圆的霍夫变换适用于寻找半径大致已知的圆形轮廓。如果您知道它在内部是如何工作的,您就会知道为什么在您的图像上使用它不是一个好主意。

    https://en.wikipedia.org/wiki/Circle_Hough_Transform

    基于 Blobdetection 和轮廓的算法可能会起作用,但需要经过大量预处理。您的图像不是很“适合分段”

    https://en.wikipedia.org/wiki/Image_segmentation https://en.wikipedia.org/wiki/Blob_detection

    通常必须使用参考图像和参考关键点来教授 SIFT 检测器。我在您的代码中也没有看到这一点。

    https://en.wikipedia.org/wiki/Scale-invariant_feature_transform

    请注意,阅读这些维基百科文章只会让您初步了解正在发生的事情。您必须阅读更多内容。

    始终从处理链的开头开始。你能得到更好的图像吗? (更好意味着更适合您想要检测的内容)。这就像 10% 的相机和 90% 的照明。我不认为检测皮肤毛孔对于糟糕的手机图片来说是一项经典任务,所以为什么不在你的成像设置上花点功夫呢?

    图像处理的第一条规则:废话=废话。你至少应该改变照明的角度,甚至更好地接近阴影的形状。

    为您必须执行的检测而优化的图像至关重要。它将使图像处理变得更加容易。

    然后是预处理:如何将拥有的图像转换为可以轻松提取特征的图像?

    等等……

    【讨论】:

    • 经过一些研究,我了解了一些图像处理的基础知识。但是,是的,我对此并不陌生,而且我必须在本周末之前展示基本的工作功能(只是为了至少检测皮肤毛孔)。因此,由于这个原因,我希望通过这个渠道获得一些帮助。我必须使用手机摄像头来获取图像并进行处理。此图片仅用于测试目的。
    • 要求你从手机图像中检测皮肤毛孔的人根本不知道他在做什么或在说什么,而且性格非常可疑。我认为正确的术语是一个**洞。大多数手机相机如果不是全部都不能正确解决皮肤毛孔……但是如果你必须使用手机,你的第一个错误就是没有使用手机图像。第一步,试着用你的手机拍一张有用的照片!
    • 我曾就此争论过,现在决定我们应该从实验室早期使用的适当设备上拍摄图像。现在我的问题是,当我有合适的图像时,我仍然没有合适的解决方案来检测毛孔。上述算法无法做到这一点,我做研究的时间非常少。如果你能帮助我找到逻辑将是一个很大的帮助。
    • 然后提供该适当设备的图像。如果可能,请使用某种暗场照明以获得良好的对比度。尝试尽可能均匀地照亮以简化进一步的图像处理。
    猜你喜欢
    • 2012-10-09
    • 2017-03-28
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多