【EMGUCV】simpleblob detector 斑点检测
来源:互联网 发布:买家淘宝违规怎么处理 编辑:程序博客网 时间:2024/06/08 11:51
本文主要介绍emgucv中的simpleblob detector。
算法原理
该检测器的原理主要如下:
1. 先设置步进值(thresholdStep)跟二值化阈值范围[minThreshold,maxThreshold),把原图像SrcImg在阈值范围内按照步进依次转化为二值化图像。
2. 从这些二值化图像中提取轮廓,并且计算这些轮廓的中心。
3. 根据这些轮廓的中心坐标进行分组,坐标接近的属于同一个blob,坐标要有多接近才算接近?这个通过minDistBetweenBlobs控制。
4. 最后,在找到的这些分组中,进一步根据所选的参数来进行判断是否blob。这些参数有:
1) color: 通过判断blob中心坐标的颜色是否跟所选颜色一致来决定是否要丢弃这个blob,blobColor=0表示要提取黑色的点,blobColor=255表示要提取白色的点
2)area:通过判断blob的面积,也就是像素总数是否在[minArea,maxArea)
3)circularity:圆心率,公式为:
4)
5)convexity:凸度,凸度公式是
以下是从 其他网站上看到的比较形象的图示:
具体代码
需要注意的是,EMGUCV中,版本在3.0之上才会有SimpleBlobDetector这个类。
opencv中应该是2.4版本就有了,调用方法基本一致
Image<Gray, byte> imgGray = img.Convert<Gray, byte>();/* blob detector *///Gray Gavg = imgGray.GetAverage();double minValue = 255;double maxValue = 0;Point minLoc = new Point();Point maxLoc = new Point();CvInvoke.MinMaxLoc(imgGray, ref minValue, ref maxValue, ref minLoc, ref maxLoc);SimpleBlobDetectorParams blobparams = new SimpleBlobDetectorParams();blobparams.FilterByArea = true;blobparams.MinArea = 150;blobparams.MaxArea = 1500;blobparams.MinThreshold = (float)minValue + 1;blobparams.MaxThreshold = (float)maxValue;blobparams.FilterByCircularity = false; //斑点圆度blobparams.MinCircularity = (float)0.5;blobparams.MaxCircularity = 1;blobparams.FilterByConvexity = true; //斑点凸度blobparams.MinConvexity = (float)0.2;blobparams.MaxConvexity = 1;blobparams.FilterByInertia = true; //斑点惯性率blobparams.MinInertiaRatio = (float)0.4;blobparams.MaxInertiaRatio = 1;blobparams.FilterByColor = false;blobparams.ThresholdStep = 2;blobparams.MinRepeatability = new IntPtr(2);SimpleBlobDetector detector = new SimpleBlobDetector(blobparams);MKeyPoint[] keypoints = detector.Detect(imgGray);Image<Bgr, byte> imgBgr = img.Copy();foreach (MKeyPoint keypoint in keypoints){ imgBgr.Draw(new Rectangle((int)(keypoint.Point.X - keypoint.Size / 2), (int)(keypoint.Point.Y - keypoint.Size / 2), (int)keypoint.Size, (int)keypoint.Size), new Bgr(255,0,0), 1); pictureBox1.Image = imgBgr.ToBitmap();}
- 【EMGUCV】simpleblob detector 斑点检测
- 斑点检测
- 斑点检测
- 斑点检测
- 斑点检测
- 斑点检测
- 斑点检测
- 斑点SimpleBlobDetector检测
- LOG斑点检测
- LOG斑点检测
- OpenCV进行斑点检测 impleBlobDetector
- 图像特征提取,斑点检测
- 图像特征提取:斑点检测
- 斑点检测系列Lob拉普拉斯--总结
- sift算法简介(一种斑点检测算法)
- Detector 检测内存泄露
- 【EmguCv】人脸/人眼检测
- 图像局部特征学习(笔记1之斑点检测)
- Caffe解读(二)
- 5013. 珠宝
- 微信订阅号开发过程中遇到的问题及解决办法。
- 把变量写入txt文本
- linux基本命令(一)
- 【EMGUCV】simpleblob detector 斑点检测
- 将字符串转换为驼峰格式
- Axure之实现图片自动循环切换效果
- Python HackerRank|Time Delta(from datetime import datetime)
- 1467: Pku3243 clever Y
- Atitit spring 3.0 3.1 3.2 4.0 4.3 5.0 新特性
- leetcode82. Remove Duplicates from Sorted List II
- #ifdef #else #endif #if #ifndef 的用法
- mysql 5.7.17 x64安装遇到的问题