一维曲线极值检测

二维存储的一维曲线极值检测程序

clc;clear;close all;
BW1 = imread(‘BW1.BMP‘);
figure,imshow(BW1,[]);

% 提取图像中的曲线
[M,N] = size(BW1);
x=[];y=[];
j=1;
while j<=N,
    for i = 1 : M
     try
        if BW1(i, j) == 1
          x = [x, N - j]; %#ok<*AGROW>
          y = [y, M - i];
          j=j+1;
          break;
        end
     catch
        fprintf(1,‘%d, %d\n‘,i,j);
     end
    end
end

xx = max(x) : -0.1 : min(x);
yy = interp1(x, y, xx, ‘linear‘); % 一维数据插值cublic
x = xx;
y = yy;
N = size(y, 2);
y(N) = y(N - 1) + 1;
left = 1;
right = 0;
Sk = 0; % 0:斜率未知,1:上升,-1:下降
peak = [];

for j = 2 : N,
    if Sk == 0
        if (y(j) <= y(j - 1))
            Sk = 0;          % 下降及保持信号、初始信号
            continue;
        else
            Sk = 1;          % 上升信号
            left = j;
            continue;
        end;
    end;

    if (Sk == 1)
        if (y(j) < y(j - 1))
            Sk = -1;         % 下降信号
            continue;
        end
    else if (Sk == -1)
            if (y(j) < y(j - 1))
                right = j;
            end;
            if (y(j) > y(j - 1))
                Sk = 0;
                disp([left, right]);
                peak = [peak; left, right];
                continue;
            end
        end
    end

    if Sk == 0
        if (y(j) <= y(j - 1))
            Sk = 0;
            continue;
        end;
        if (y(j) > y(j - 1))
            Sk = 1;
            left = j;
            continue;
        end;
    end;
end;

% 画出峰值
figure,
plot(y);
hold on;
[M,N] = size(peak);
for j = 1 : M
    minP = min(peak(j, 1), peak(j, 2));
    maxP = max(peak(j, 1), peak(j, 2));
    [C, I] = max(y(minP : maxP));
    plot([minP + I, minP + I], [0, C], ‘g‘);
end;

参考, pund, getMultiPeak.m

时间: 2024-10-09 22:19:20

一维曲线极值检测的相关文章

亚像素数值极值检测算法总结

动机 在计算机视觉领域,经常需要检测极值位置,比如SIFT关键点检测.模板匹配获得最大响应位置.统计直方图峰值位置.边缘检测等等,有时只需要像素精度就可以,有时则需要亚像素精度.本文尝试总结几种常用的一维离散数据极值检测方法,几个算法主要来自论文<A Comparison of Algorithms for Subpixel Peak Detection>,加上自己的理解和推导. 问题定义 给定如下离散值,求其极值位置.可知125为观察极值. \[[60, 80, 100, 120, 125,

C++实现MATLAB一维数组函数findpeaks()函数求一维离散值极值(波峰波谷)

一.代码 #include <iostream> #include <vector> using namespace std; // //C++实现求一维离散数据极值(波峰.波谷) // //参数:数组,数组大小 void findPeaks(int *num,int count) { vector<int> sign; for(int i = 1;i<count;i++) { /*相邻值做差: *小于0,赋-1 *大于0,赋1 *等于0,赋0 */ int di

Hough变换直线检测

Hough变换直线检测 [email protected] http://blog.csdn.net/kezunhai 霍夫变换是图像变换中的经典算法之一,主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).霍夫变换寻找直线与圆的方法相比与其它方法可以更好的减少噪声干扰.Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的曲线通过转换到参数空间的一个点. 从图中可以看到,x-y坐标和K-b坐标有点--线的对偶性.x-y坐标中的P1.P2对应于k-b坐标中的L1.L2:

边缘检测之Sobel检测算子

在讨论边缘算子之前,首先给出一些术语的定义: (1)边缘:灰度或结构等信息的突变处,边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像. (2)边缘点:图像中具有坐标[x,y],且处在强度显著变化的位置上的点. (3)边缘段:对应于边缘点坐标[x,y]及其方位 ,边缘的方位可能是梯度角. 二.Sobel算子的基本原理 Sobel算子是一阶导数的边缘检测算子,在算法实现过程中,通过3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘. 一个特殊卷积所实现的

4-SIFT特征提取和检测的基本步骤

1- 有4个主要步骤 尺度空间的极值检测 搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和选择不变的兴趣点. 特征点定位 在每个候选的位置上,通过一个拟合精细模型来确定位置尺度,关键点的选取依据他们的稳定程度. 特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向.尺度和位置进行变换,从而提供这些特征的不变性. 特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大

OpenCV入门笔记(六) 轮廓检测(Detect Contours)

轮廓(Contours),指的是有相同颜色或者密度,连接所有连续点的一条曲线.检测轮廓的工作对形状分析和物体检测与识别都非常有用. 在轮廓检测之前,首先要对图片进行二值化或者Canny边缘检测.在OpenCV中,寻找的物体是白色的,而背景必须是黑色的,因此图片预处理时必须保证这一点. cv2.findContours函数 Python版示例如下,也可以参考[OpenCV-Python教程(11.轮廓检测)][Contours : Getting Started] contours, hierar

图像处理检测方法 — SIFT和SURF

0.特征与匹配方法总结汇总对比 参考:http://simtalk.cn/2017/08/18/%E7%89%B9%E5%BE%81%E4%B8%8E%E5%8C%B9%E9%85%8D/#ORB 1.SIFT  参考文献:https://blog.csdn.net/chuhang_zhqr/article/details/50890546 原理:在前面两节我们学习了一些角点检测技术,比如Harris 等.它们具有旋转不变特性,即使图片发生了旋转,我们也能找到同样的角点.很明显即使图像发生旋转之

CV:object detection(SIFT)

1.SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置.尺度.旋转不变量,此算法由 David Lowe在1999年所发表,2004年完善总结. 其应用范围包含物体辨识.机器人地图感知与导航.影像缝合.3D模型建立.手势辨识.影像追踪和动作比对. 此算法有其专利,专利拥有者为英属哥伦比亚大学. 局部影像特征的描述与侦测可以帮助辨识物体,SIFT

SIFT算法详解(转)

http://blog.csdn.net/zddblog/article/details/7521424 目录(?)[-] 尺度不变特征变换匹配算法详解 Scale Invariant Feature TransformSIFT Just For Fun zdd  zddmailgmailcom or zddhubgmailcom SIFT综述 高斯模糊 1二维高斯函数 2 图像的二维高斯模糊 3分离高斯模糊 1 尺度空间理论 2 尺度空间的表示 3 高斯金字塔的构建 尺度空间在实现时使用高斯金