精华内容
下载资源
问答
  • matlab交通标志识别.zip

    2021-05-27 08:13:50
    matlab交通标志识别.zip
  • matlab交通标志识别 代码
  • 基于MATLAB交通标志识别系统

    千次阅读 热门讨论 2020-03-18 15:28:13
    说明: 基于数字图像处理,实现一个公路交通标志(限速)分割和识别的仿真系统。要求系统具有界面并实现以下功能: 1)读入交通标志图像; 2)预处理及交通标志定位; 3)多种图像分割功能; 4)形态学滤波等功能; ...

    说明: 基于数字图像处理,实现一个公路交通标志(限速)分割和识别的仿真系统。要求系统具有界面并实现以下功能: 1)读入交通标志图像; 2)预处理及交通标志定位; 3)多种图像分割功能; 4)形态学滤波等功能; 5)对标志中的数字进行识别。
    下载链接:Matlab交通标志识别
    https://download.csdn.net/download/matlab1998_vx/14954126

    展开全文
  • 该课题是基于MATLAB神经网络的交通标志识别系统。主要分3个步骤:定位,分割,识别。其中定位部分,考虑我国的交通标志主要分禁令类,指示类和警示类,其中禁令类为红色,指示类为蓝色,警示类为黄色。根据不同颜色...
  • 一、参考设计思路【图片可自定义,含GUI可视化界面】 1.读入图片,根据路标的颜色进行大致的分割 这是数据库中的二值图像,路标很多,所以选择几种典型的,我选择了的是:三角形(黄色)和圆形(红色)的,对应着...
  • Matlab交通标志识别系统,bp,模版,可自动识别禁令,警示等表示。带gui界面。
  • 通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。 (2)定位关键点并确定特征方向:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。然后基于图像局部的...

    一、简介

    SIFT即尺度不变特征变换,是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。
    1 SIFT算法特点:
    (1)具有较好的稳定性和不变性,能够适应旋转、尺度缩放、亮度的变化,能在一定程度上不受视角变化、仿射变换、噪声的干扰。
    (2)区分性好,能够在海量特征数据库中进行快速准确的区分信息进行匹配
    (3)多量性,就算只有单个物体,也能产生大量特征向量
    (4)高速性,能够快速的进行特征向量匹配
    (5)可扩展性,能够与其它形式的特征向量进行联合

    2 SIFT算法实质
    在不同的尺度空间上查找关键点,并计算出关键点的方向。
    在这里插入图片描述
    3 SIFT算法实现特征匹配主要有以下三个流程:
    (1)提取关键点:关键点是一些十分突出的不会因光照、尺度、旋转等因素而消失的点,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。此步骤是搜索所有尺度空间上的图像位置。通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。
    (2)定位关键点并确定特征方向:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。然后基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
    (3)通过各关键点的特征向量,进行两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

    4 尺度空间
    (1)概念
    尺度空间即试图在图像领域中模拟人眼观察物体的概念与方法。例如:观察一颗树,关键在于我们想要观察是树叶子还是整棵树:如果是一整棵树(相当于大尺度情况下观察),那么就应该去除图像的细节部分。如果是树叶(小尺度情况下观察),那么就该观察局部细节特征。
    SIFT算法在构建尺度空间时候采取高斯核函数进行滤波,使原始图像保存最多的细节特征,经过高斯滤波后细节特征逐渐减少来模拟大尺度情况下的特征表示。
    利用高斯核函数进行滤波的主要原因有两个:
    a 高斯核函数是唯一的尺度不变核函数。
    b DoG核函数可以近似为LoG函数,这样可以使特征提取更加简单。同时,David. Lowe作者在论文中提出将原始图像进行2倍上采样后滤波能够保留更多的信息便于后续特征提取与匹配。其实尺度空间图像生成就是当前图像与不同尺度核参数σ进行卷积运算后产生的图像。
    (2)表示
    L(x, y, σ) ,定义为原始图像 I(x, y)与一个可变尺度的2维高斯函数G(x, y, σ) 卷积运算。
    在这里插入图片描述
    5 高斯金字塔的构建
    (1)概念
    尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两步:
    a 对图像做高斯平滑;
    b 对图像做降采样。
    在这里插入图片描述
    图像的金字塔模型是指将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。如上图所示,将图像金字塔每层的一张图像使用不同参数做高斯模糊,Octave表示一幅图像可产生的图像组数,Interval表示一组图像包括的图像层数。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。
    (2)表示
    高斯图像金字塔共o组、s层,则有
    在这里插入图片描述
    6 DOG空间极值检测
    (1)DOG函数
    在这里插入图片描述
    (2)DoG高斯差分金字塔
    a 对应DOG算子,需构建DOG金字塔。
    可以通过高斯差分图像看出图像上的像素值变化情况。(如果没有变化,也就没有特征。特征必须是变化尽可能多的点。)DOG图像描绘的是目标的轮廓。
    在这里插入图片描述
    b DOG局部极值检测
    特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如下图,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
    在这里插入图片描述
    b 去除边缘效应
    在边缘梯度的方向上主曲率值比较大,而沿着边缘方向则主曲率值较小。候选特征点的DoG函数D(x)的主曲率与2×2Hessian矩阵H的特征值成正比。
    在这里插入图片描述
    在这里插入图片描述
    7 关键点方向分配
    (1)通过尺度不变性求极值点,需要利用图像的局部特征为给每一个关键点分配一个基准方向,使描述子对图像旋转具有不变性。对于在DOG金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。梯度的模值和方向如下:
    在这里插入图片描述
    (2)本算法采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点确定关键点方向。在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱,其中每柱10度。如下图所示,直方图的峰值方向代表了关键点的主方向,方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。
    在这里插入图片描述
    8 关键点描述
    对于每一个关键点,都拥有位置、尺度以及方向三个信息。为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。
    在这里插入图片描述
    Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。

    9 关键点匹配
    (1)分别对模板图(参考图,reference image)和实时图(观测图,
    observation image)建立关键点描述子集合。目标的识别是通过两点集内关键点描述子的比对来完成。具有128维的关键点描述子的相似性度量采用欧式距离。
    (3)匹配可采取穷举法完成,但所花费的时间太多。所以一般采用kd树的数据结构来完成搜索。搜索的内容是以目标图像的关键点为基准,搜索与目标图像的特征点最邻近的原图像特征点和次邻近的原图像特征点。
    Kd树如下如所示,是个平衡二叉树
    在这里插入图片描述
    10 总结
    SIFT特征具有稳定性和不变性,在图像处理和计算机视觉领域有着很重要的作用,其本身也是非常复杂的,由于接触SIFT不是很久,对其中的相关知识了解还很不足,经多方查阅参考,写得此文,内容还不够详尽,望多多见谅。以下是SIFT算法的粗略总结。
    (1)DoG尺度空间的极值检测。
    (2)删除不稳定的极值点。
    (3)确定特征点的主方向
    (4)生成特征点的描述子进行关键点匹配。

    二、源代码

    close all;
    clear;
    clc;
    [filename pathname]=uigetfile('*.jpg','Open File');
    Image=imread([pathname filename]);
    image(Image);
    [imshowage,flag,Im1,Im2,Im3,Im1_1,Im2_1,Im3_1]=extraction(Image);
    
    if imshowage==1
        if(flag==1)     
        figure,imshow(Im1_1);
        end
        if(flag==2)
        figure, imshow(Im1_1);
        figure, imshow(Im2_1);
        end 
        if(flag==3)
        figure,imshow(Im1_1); 
        figure,imshow(Im2_1);
        figure,imshow(Im3_1);  
       end
       % [image, descriptors, locs] = sift(imageFile)
    %
    % This function reads an image and returns its SIFT keypoints.
    %   Input parameters:
    %     imageFile: the file name for the image.
    %
    %   Returned:
    %     image: the image array in double format
    %     descriptors: a K-by-128 matrix, where each row gives an invariant
    %         descriptor for one of the K keypoints.  The descriptor is a vector
    %         of 128 values normalized to unit length.
    %     locs: K-by-4 matrix, in which each row has the 4 values for a
    %         keypoint location (row, column, scale, orientation).  The 
    %         orientation is in the range [-PI, PI] radians.
    %
    % Credits: Thanks for initial version of this program to D. Alvaro and 
    %          J.J. Guerrero, Universidad de Zaragoza (modified by D. Lowe)
    
    function [image, descriptors, locs] = sift(image)
    
    % Load image
    % image = imread(imageFile);
    
    % If you have the Image Processing Toolbox, you can uncomment the following
    %   lines to allow input of color images, which will be converted to grayscale.
    if size(image,3)>1
       image = rgb2gray(image);
    end
    
    [rows, cols] = size(image); 
    
    % Convert into PGM imagefile, readable by "keypoints" executable
    f = fopen('tmp.pgm', 'w');
    if f == -1
        error('Could not create file tmp.pgm.');
    end
    fprintf(f, 'P5\n%d\n%d\n255\n', cols, rows);
    fwrite(f, image', 'uint8');
    fclose(f);
    
    % Call keypoints executable
    if isunix
        command = '!./sift ';
    else
        command = '!siftWin32 ';
    end
    command = [command ' <tmp.pgm >tmp.key'];
    eval(command);
    
    % Open tmp.key and check its header
    g = fopen('tmp.key', 'r');
    if g == -1
        error('Could not open file tmp.key.');
    end
    [header, count] = fscanf(g, '%d %d', [1 2]);
    if count ~= 2
        error('Invalid keypoint file beginning.');
    end
    num = header(1);
    len = header(2);
    if len ~= 128
        error('Keypoint descriptor length invalid (should be 128).');
    end
    
    % Creates the two output matrices (use known size for efficiency)
    locs = double(zeros(num, 4));
    descriptors = double(zeros(num, 128));
    
    % Parse tmp.key
    for i = 1:num
        [vector, count] = fscanf(g, '%f %f %f %f', [1 4]); %row col scale ori
        if count ~= 4
            error('Invalid keypoint file format');
        end
        locs(i, :) = vector(1, :);
        
        [descrip, count] = fscanf(g, '%d', [1 len]);
        if (count ~= 128)
            error('Invalid keypoint file value.');
        end
    

    三、运行结果

    在这里插入图片描述

    四、备注

    版本:2014a

    展开全文
  • 基于MATLAB交通标志自动识别装置,韩毅,景琳浪,交通标志自动识别系统是智能交通系统的重要组成部分.本文提供一种基于MATLAB交通标志自动识别装置,通过车载摄像头对车辆行驶过程�
  • % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from ...

    一、简介

    SIFT即尺度不变特征变换,是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。
    1 SIFT算法特点:
    (1)具有较好的稳定性和不变性,能够适应旋转、尺度缩放、亮度的变化,能在一定程度上不受视角变化、仿射变换、噪声的干扰。
    (2)区分性好,能够在海量特征数据库中进行快速准确的区分信息进行匹配
    (3)多量性,就算只有单个物体,也能产生大量特征向量
    (4)高速性,能够快速的进行特征向量匹配
    (5)可扩展性,能够与其它形式的特征向量进行联合

    2 SIFT算法实质
    在不同的尺度空间上查找关键点,并计算出关键点的方向。
    在这里插入图片描述
    3 SIFT算法实现特征匹配主要有以下三个流程:
    (1)提取关键点:关键点是一些十分突出的不会因光照、尺度、旋转等因素而消失的点,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。此步骤是搜索所有尺度空间上的图像位置。通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。
    (2)定位关键点并确定特征方向:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。然后基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
    (3)通过各关键点的特征向量,进行两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

    4 尺度空间
    (1)概念
    尺度空间即试图在图像领域中模拟人眼观察物体的概念与方法。例如:观察一颗树,关键在于我们想要观察是树叶子还是整棵树:如果是一整棵树(相当于大尺度情况下观察),那么就应该去除图像的细节部分。如果是树叶(小尺度情况下观察),那么就该观察局部细节特征。
    SIFT算法在构建尺度空间时候采取高斯核函数进行滤波,使原始图像保存最多的细节特征,经过高斯滤波后细节特征逐渐减少来模拟大尺度情况下的特征表示。
    利用高斯核函数进行滤波的主要原因有两个:
    a 高斯核函数是唯一的尺度不变核函数。
    b DoG核函数可以近似为LoG函数,这样可以使特征提取更加简单。同时,David. Lowe作者在论文中提出将原始图像进行2倍上采样后滤波能够保留更多的信息便于后续特征提取与匹配。其实尺度空间图像生成就是当前图像与不同尺度核参数σ进行卷积运算后产生的图像。
    (2)表示
    L(x, y, σ) ,定义为原始图像 I(x, y)与一个可变尺度的2维高斯函数G(x, y, σ) 卷积运算。
    在这里插入图片描述
    5 高斯金字塔的构建
    (1)概念
    尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两步:
    a 对图像做高斯平滑;
    b 对图像做降采样。
    在这里插入图片描述
    图像的金字塔模型是指将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。如上图所示,将图像金字塔每层的一张图像使用不同参数做高斯模糊,Octave表示一幅图像可产生的图像组数,Interval表示一组图像包括的图像层数。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。
    (2)表示
    高斯图像金字塔共o组、s层,则有
    在这里插入图片描述
    6 DOG空间极值检测
    (1)DOG函数
    在这里插入图片描述
    (2)DoG高斯差分金字塔
    a 对应DOG算子,需构建DOG金字塔。
    可以通过高斯差分图像看出图像上的像素值变化情况。(如果没有变化,也就没有特征。特征必须是变化尽可能多的点。)DOG图像描绘的是目标的轮廓。
    在这里插入图片描述
    b DOG局部极值检测
    特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如下图,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
    在这里插入图片描述
    b 去除边缘效应
    在边缘梯度的方向上主曲率值比较大,而沿着边缘方向则主曲率值较小。候选特征点的DoG函数D(x)的主曲率与2×2Hessian矩阵H的特征值成正比。
    在这里插入图片描述
    在这里插入图片描述
    7 关键点方向分配
    (1)通过尺度不变性求极值点,需要利用图像的局部特征为给每一个关键点分配一个基准方向,使描述子对图像旋转具有不变性。对于在DOG金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。梯度的模值和方向如下:
    在这里插入图片描述
    (2)本算法采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点确定关键点方向。在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱,其中每柱10度。如下图所示,直方图的峰值方向代表了关键点的主方向,方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。
    在这里插入图片描述
    8 关键点描述
    对于每一个关键点,都拥有位置、尺度以及方向三个信息。为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。
    在这里插入图片描述
    Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。

    9 关键点匹配
    (1)分别对模板图(参考图,reference image)和实时图(观测图,
    observation image)建立关键点描述子集合。目标的识别是通过两点集内关键点描述子的比对来完成。具有128维的关键点描述子的相似性度量采用欧式距离。
    (3)匹配可采取穷举法完成,但所花费的时间太多。所以一般采用kd树的数据结构来完成搜索。搜索的内容是以目标图像的关键点为基准,搜索与目标图像的特征点最邻近的原图像特征点和次邻近的原图像特征点。
    Kd树如下如所示,是个平衡二叉树
    在这里插入图片描述
    10 总结
    SIFT特征具有稳定性和不变性,在图像处理和计算机视觉领域有着很重要的作用,其本身也是非常复杂的,由于接触SIFT不是很久,对其中的相关知识了解还很不足,经多方查阅参考,写得此文,内容还不够详尽,望多多见谅。以下是SIFT算法的粗略总结。
    (1)DoG尺度空间的极值检测。
    (2)删除不稳定的极值点。
    (3)确定特征点的主方向
    (4)生成特征点的描述子进行关键点匹配。

    二、源代码

    function varargout = interface(varargin)
    % INTERFACE M-file for interface.fig
    %      INTERFACE, by itself, creates a new INTERFACE or raises the existing
    %      singleton*.
    %
    %      H = INTERFACE returns the handle to a new INTERFACE or the handle to
    %      the existing singleton*.
    %
    %      INTERFACE('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in INTERFACE.M with the given input arguments.
    %
    %      INTERFACE('Property','Value',...) creates a new INTERFACE or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before interface_OpeningFunction gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to interface_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
    
    % Edit the above text to modify the response to help interface
    
    % Last Modified by GUIDE v2.5 01-Jun-2007 09:23:14
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @interface_OpeningFcn, ...
                       'gui_OutputFcn',  @interface_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin & isstr(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
    
    
    % --- Executes just before interface is made visible.
    function interface_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to interface (see VARARGIN)
    
    % Choose default command line output for interface
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes interface wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    
    % --- Outputs from this function are returned to the command line.
    function varargout = interface_OutputFcn(hObject, eventdata, handles)
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Get default command line output from handles structure
    varargout{1} = handles.output;
    
    
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    [filename,path]=uigetfile('*.jpg;*.bmp','*.bmp','打开文件');
    
    allfilename=strcat(path,filename);
    ima=imread(allfilename);
    
    axes(handles.axes1);
    imshow(ima);title('输入的图像')
    [imshowage,flag]=Require(ima);
    I=imread('r1.bmp');
    figure
    imshow(I);
    I=imread('r1.bmp');
    imshow(I);
       X=cent(Max(i),1);Y=cent(Max(i),2);%白色为1MX(i)=round(X);MY(i)=round(Y);
        bx=boud(Max(i),1);by=boud(Max(i),2);blen=boud(Max(i),4);bwid=boud(Max(i),3);
        bx1=round(bx);by1=round(by);Mblen(i)=round(blen);Mbwid(i)=round(bwid);
        if (blen>=bwid)
            MR=bwid;
        else
            MR=blen;
        end
     
        if (MX(i)+round(MR/4)<=lie&&MY(i)+round(MR/6)<=hang&&TC(MY(i)+round(MR/6),MX(i)+round(MR/4))==1)
            t2=1;  
        end
     
        if (MX(i)-round(MR/4)>0&&MY(i)-round(MR/6)>0&&TC(MY(i)-round(MR/6),MX(i)-round(MR/4))==1)   
            t4=1;
        end
        
       if (MY(i)+round(MR/6)<=hang&&MX(i)-round(MR/4)>0&&TC(MY(i)+round(MR/6),MX(i)-round(MR/4))==1)
            t7=1;
        end
         if (MY(i)-round(MR/6)>0&&MX(i)+round(MR/4)<=lie&&TC(MY(i)-round(MR/6),MX(i)+round(MR/4))==1)
            t8=1;
        end
    figure
    imshow(J);
    imwrite(J,'r11.bmp','bmp');
    

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述

    四、备注

    版本:2014a

    展开全文
  • 该课题是基于MATLAB神经网络的交通标志识别系统。主要分3个步骤:定位,分割,识别。其中定位部分,考虑我国的交通标志主要分禁令类,指示类和警示类,其中禁令类为红色,指示类为蓝色,警示类为黄色。根据不同颜色...
  • matlab识别交通信号标志,代码完美运行,无bug,无乱码,完整项目,绝对可以运行,支持交通信号识别
  • matlab开发-交通警告标志识别标签代码。交通警示标志识别Matlab代码使用Matlab演示,来自Matlab 7.5的视频处理C
  • 通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。 (2)定位关键点并确定特征方向:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。然后基于图像局部的...

    一、简介

    SIFT即尺度不变特征变换,是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。
    1 SIFT算法特点:
    (1)具有较好的稳定性和不变性,能够适应旋转、尺度缩放、亮度的变化,能在一定程度上不受视角变化、仿射变换、噪声的干扰。
    (2)区分性好,能够在海量特征数据库中进行快速准确的区分信息进行匹配
    (3)多量性,就算只有单个物体,也能产生大量特征向量
    (4)高速性,能够快速的进行特征向量匹配
    (5)可扩展性,能够与其它形式的特征向量进行联合

    2 SIFT算法实质
    在不同的尺度空间上查找关键点,并计算出关键点的方向。
    在这里插入图片描述
    3 SIFT算法实现特征匹配主要有以下三个流程:
    (1)提取关键点:关键点是一些十分突出的不会因光照、尺度、旋转等因素而消失的点,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。此步骤是搜索所有尺度空间上的图像位置。通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。
    (2)定位关键点并确定特征方向:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。然后基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
    (3)通过各关键点的特征向量,进行两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

    4 尺度空间
    (1)概念
    尺度空间即试图在图像领域中模拟人眼观察物体的概念与方法。例如:观察一颗树,关键在于我们想要观察是树叶子还是整棵树:如果是一整棵树(相当于大尺度情况下观察),那么就应该去除图像的细节部分。如果是树叶(小尺度情况下观察),那么就该观察局部细节特征。
    SIFT算法在构建尺度空间时候采取高斯核函数进行滤波,使原始图像保存最多的细节特征,经过高斯滤波后细节特征逐渐减少来模拟大尺度情况下的特征表示。
    利用高斯核函数进行滤波的主要原因有两个:
    a 高斯核函数是唯一的尺度不变核函数。
    b DoG核函数可以近似为LoG函数,这样可以使特征提取更加简单。同时,David. Lowe作者在论文中提出将原始图像进行2倍上采样后滤波能够保留更多的信息便于后续特征提取与匹配。其实尺度空间图像生成就是当前图像与不同尺度核参数σ进行卷积运算后产生的图像。
    (2)表示
    L(x, y, σ) ,定义为原始图像 I(x, y)与一个可变尺度的2维高斯函数G(x, y, σ) 卷积运算。
    在这里插入图片描述
    5 高斯金字塔的构建
    (1)概念
    尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两步:
    a 对图像做高斯平滑;
    b 对图像做降采样。
    在这里插入图片描述
    图像的金字塔模型是指将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。如上图所示,将图像金字塔每层的一张图像使用不同参数做高斯模糊,Octave表示一幅图像可产生的图像组数,Interval表示一组图像包括的图像层数。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。
    (2)表示
    高斯图像金字塔共o组、s层,则有
    在这里插入图片描述
    6 DOG空间极值检测
    (1)DOG函数
    在这里插入图片描述
    (2)DoG高斯差分金字塔
    a 对应DOG算子,需构建DOG金字塔。
    可以通过高斯差分图像看出图像上的像素值变化情况。(如果没有变化,也就没有特征。特征必须是变化尽可能多的点。)DOG图像描绘的是目标的轮廓。
    在这里插入图片描述
    b DOG局部极值检测
    特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如下图,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
    在这里插入图片描述
    b 去除边缘效应
    在边缘梯度的方向上主曲率值比较大,而沿着边缘方向则主曲率值较小。候选特征点的DoG函数D(x)的主曲率与2×2Hessian矩阵H的特征值成正比。
    在这里插入图片描述
    在这里插入图片描述
    7 关键点方向分配
    (1)通过尺度不变性求极值点,需要利用图像的局部特征为给每一个关键点分配一个基准方向,使描述子对图像旋转具有不变性。对于在DOG金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。梯度的模值和方向如下:
    在这里插入图片描述
    (2)本算法采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点确定关键点方向。在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱,其中每柱10度。如下图所示,直方图的峰值方向代表了关键点的主方向,方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。
    在这里插入图片描述
    8 关键点描述
    对于每一个关键点,都拥有位置、尺度以及方向三个信息。为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。
    在这里插入图片描述
    Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。

    9 关键点匹配
    (1)分别对模板图(参考图,reference image)和实时图(观测图,
    observation image)建立关键点描述子集合。目标的识别是通过两点集内关键点描述子的比对来完成。具有128维的关键点描述子的相似性度量采用欧式距离。
    (3)匹配可采取穷举法完成,但所花费的时间太多。所以一般采用kd树的数据结构来完成搜索。搜索的内容是以目标图像的关键点为基准,搜索与目标图像的特征点最邻近的原图像特征点和次邻近的原图像特征点。
    Kd树如下如所示,是个平衡二叉树
    在这里插入图片描述
    10 总结
    SIFT特征具有稳定性和不变性,在图像处理和计算机视觉领域有着很重要的作用,其本身也是非常复杂的,由于接触SIFT不是很久,对其中的相关知识了解还很不足,经多方查阅参考,写得此文,内容还不够详尽,望多多见谅。以下是SIFT算法的粗略总结。
    (1)DoG尺度空间的极值检测。
    (2)删除不稳定的极值点。
    (3)确定特征点的主方向
    (4)生成特征点的描述子进行关键点匹配。

    二、源代码

    close all;
    clear;
    clc;
    [filename pathname]=uigetfile('*.jpg','Open File');
    Image=imread([pathname filename]);
    image(Image);
    [imshowage,flag,Im1,Im2,Im3,Im1_1,Im2_1,Im3_1]=extraction(Image);
    
    if imshowage==1
        if(flag==1)     
        figure,imshow(Im1_1);
        end
        if(flag==2)
        figure, imshow(Im1_1);
        figure, imshow(Im2_1);
        end 
        if(flag==3)
        figure,imshow(Im1_1); 
        figure,imshow(Im2_1);
        figure,imshow(Im3_1);  
       end
       % [image, descriptors, locs] = sift(imageFile)
    %
    % This function reads an image and returns its SIFT keypoints.
    %   Input parameters:
    %     imageFile: the file name for the image.
    %
    %   Returned:
    %     image: the image array in double format
    %     descriptors: a K-by-128 matrix, where each row gives an invariant
    %         descriptor for one of the K keypoints.  The descriptor is a vector
    %         of 128 values normalized to unit length.
    %     locs: K-by-4 matrix, in which each row has the 4 values for a
    %         keypoint location (row, column, scale, orientation).  The 
    %         orientation is in the range [-PI, PI] radians.
    %
    % Credits: Thanks for initial version of this program to D. Alvaro and 
    %          J.J. Guerrero, Universidad de Zaragoza (modified by D. Lowe)
    
    function [image, descriptors, locs] = sift(image)
    
    % Load image
    % image = imread(imageFile);
    
    % If you have the Image Processing Toolbox, you can uncomment the following
    %   lines to allow input of color images, which will be converted to grayscale.
    if size(image,3)>1
       image = rgb2gray(image);
    end
    
    [rows, cols] = size(image); 
    
    % Convert into PGM imagefile, readable by "keypoints" executable
    f = fopen('tmp.pgm', 'w');
    if f == -1
        error('Could not create file tmp.pgm.');
    end
    fprintf(f, 'P5\n%d\n%d\n255\n', cols, rows);
    fwrite(f, image', 'uint8');
    fclose(f);
    
    % Call keypoints executable
    if isunix
        command = '!./sift ';
    else
        command = '!siftWin32 ';
    end
    command = [command ' <tmp.pgm >tmp.key'];
    eval(command);
    
    % Open tmp.key and check its header
    g = fopen('tmp.key', 'r');
    if g == -1
        error('Could not open file tmp.key.');
    end
    [header, count] = fscanf(g, '%d %d', [1 2]);
    if count ~= 2
        error('Invalid keypoint file beginning.');
    end
    num = header(1);
    len = header(2);
    if len ~= 128
        error('Keypoint descriptor length invalid (should be 128).');
    end
    
    % Creates the two output matrices (use known size for efficiency)
    locs = double(zeros(num, 4));
    descriptors = double(zeros(num, 128));
    
    % Parse tmp.key
    for i = 1:num
        [vector, count] = fscanf(g, '%f %f %f %f', [1 4]); %row col scale ori
        if count ~= 4
            error('Invalid keypoint file format');
        end
        locs(i, :) = vector(1, :);
        
        [descrip, count] = fscanf(g, '%d', [1 len]);
        if (count ~= 128)
            error('Invalid keypoint file value.');
        end
    

    三、运行结果

    在这里插入图片描述

    四、备注

    版本:2014a

    展开全文
  • % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from ...
  • % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from ...
  • 二、源代码 function varargout = Traffic_Iden(varargin) % TRAFFIC_IDEN MATLAB code for Traffic_Iden.fig % TRAFFIC_IDEN, by itself, creates a new TRAFFIC_IDEN or raises the existing % singleton*....
  • 一、简介 1 概述 BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科研小组提出,参见他们发表在Nature上的论文 Learning representations by back-propagating errors 。 ...
  • 教育教学论坛 EDUCATIONTEACHINGFORUM 2016 年 3 月第 12 期 Mar.2016 NO.12 基于MATLAB的道路交通标志识别 孙 巍,孙国荣,张瑞龙 (上海工程技术大学高等职业技术学院,上海市高级技工学校,上海 200437) 摘要:...
  • 该课题为基于MATLAB的bp神经网络的交通标志识别系统,可以识别禁令标志,警示标志,指示标志三种标志,带GUI界面,流程为,输入测试图,训练,定位,分割,识别。可自动识别是三种中的哪一种。定位是采用颜色的方法...
  • 该框架为基于matlab的雾霾天气的交通标志识别,传统的交通标志都是正常天气的识别,而有时候天气恶劣,如沙尘暴,雾霾,雨天等,是否也可以识别呢。该设计图片为雾霾下,需要先进行去雾然后进行识别,带有GUI界面。
  • 1.课题背景传统的交通标志识别,都是对正常图片进行处理识别。如果恶劣一点的天气,如雾霾天气,雨天,沙尘暴等恶劣天气下就无法识别了。该课题为在雾霾天气下的交通标志识别。首先需要利用暗通道算法进行图像去雾,...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

matlab交通标志识别

matlab 订阅