<个人学习记录>斑点检测


前言

斑点是数字图像的主要特征。斑点通常是指与周围有着颜色和灰度差别的区域。
斑点检测是区域检测的一种特例,是许多特征生成、目标识别等方法的重要预处理环节。

一、检测LoG斑点的Matlab源程序

1.提取斑点

功能函数如下:

function [points]=log_Blob(img,o_nb_blobs)
%功能:提取LoG斑点
%输入:img-输入的图像   o_nb_blobs-需要检测的斑点区域的数量
% 输出:points-检测出的斑点

%输入图像
img=double(img(:,:,1));
%设定检测到斑点的数量
if nargin==1   %函数输入参数个数
    nb_blobs=120;
else
    nb_blobs=o_nb_blobs;
end
%设定LoG参数
sigma_begin=2;
sigma_end=15;
sigma_step=1;
sigma_array=sigma_begin:sigma_step:sigma_end;
sigma_nb=numel(sigma_array);%返回数组中元素的个数
%变量
img_height=size(img,1);
img_width=size(img,2);
%计算尺度规范化高斯拉普拉斯算子
snlo=zeros(img_height,img_width,sigma_nb
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV提供了多种斑点检测算法,其中包括SimpleBlobDetector、MSER(Maximally Stable Extremal Regions)、SIFT(Scale-Invariant Feature Transform)等。这里以SimpleBlobDetector为例,介绍一下OpenCV中如何实现斑点检测。 1. 首先,需要导入OpenCV库并读入待检测的图像,可以使用cv::imread()函数来读入图像。 ``` #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("test.png", IMREAD_GRAYSCALE); if (image.empty()) { std::cout << "Failed to read image." << std::endl; return -1; } // 进行斑点检测 // ... return 0; } ``` 2. 创建SimpleBlobDetector对象,并设置一些参数,如阈值、最小面积、最大面积等。 ``` SimpleBlobDetector::Params params; params.minThreshold = 10; params.maxThreshold = 200; params.filterByArea = true; params.minArea = 100; params.maxArea = 10000; Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(params); ``` 3. 使用detector->detect()函数进行斑点检测,该函数返回一个vector类型的数据,其中包含了所有被检测到的斑点的坐标。 ``` std::vector<KeyPoint> keypoints; detector->detect(image, keypoints); ``` 4. 可以使用cv::drawKeypoints()函数将检测到的斑点绘制到图像上。 ``` Mat result; drawKeypoints(image, keypoints, result, Scalar(0,0,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS); imshow("Result", result); waitKey(0); ``` 这样就完成了斑点检测的过程,可以通过调整参数来适应不同的图像和应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值