精华内容
下载资源
问答
  • 卷积神经网络边缘检测实例

    万次阅读 2018-07-05 06:55:03
    注:本文是吴恩达网易公开课的学习笔记电脑如何搞...垂直边缘检测过程:卷积是将图片和卷积核进行卷积的过程,在python里面用的是conv_forward, tensorflow中用的是tf.nn.conv2d,在Keras中用的是Conv2D如果将一个...

    注:本文是吴恩达网易公开课的学习笔记

    电脑如何搞清楚一张图片中的物体?

    首先电脑需要检测楚图片中的垂直边缘(vertical edge),水平边缘(horizontal)。

    电脑通过卷积检测出做边缘检测。

    垂直边缘检测过程:



    卷积是将图片和卷积核进行卷积的过程,在python里面用的是conv_forward, tensorflow中用的是tf.nn.conv2d,在Keras中用的是Conv2D


    如果将一个有着明显边缘区分的图片在卷积核卷积后,可以看出卷积的结果是图片的垂直边缘被明显的高亮显示在灰色的图片中。



    展开全文
  • OpenCV Canny边缘检测实例OpenCV Canny边缘检测实例 OpenCV Canny边缘检测实例 #include "opencv2/core/utility.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/imgcodecs.hpp" #include "opencv2/...

    OpenCV Canny边缘检测的实例

    OpenCV Canny边缘检测的实例

    #include "opencv2/core/utility.hpp"
    #include "opencv2/imgproc.hpp"
    #include "opencv2/imgcodecs.hpp"
    #include "opencv2/highgui.hpp"
    
    #include <stdio.h>
    
    using namespace cv;
    using namespace std;
    
    int edgeThresh = 1;
    int edgeThreshScharr=1;
    
    Mat image, gray, blurImage, edge1, edge2, cedge;
    
    const char* window_name1 = "Edge map : Canny default (Sobel gradient)";
    const char* window_name2 = "Edge map : Canny with custom gradient (Scharr)";
    
    // define a trackbar callback
    static void onTrackbar(int, void*)
    {
        blur(gray, blurImage, Size(3,3));
    
        // Run the edge detector on grayscale
        Canny(blurImage, edge1, edgeThresh, edgeThresh*3, 3);
        cedge = Scalar::all(0);
    
        image.copyTo(cedge, edge1);
        imshow(window_name1, cedge);
    
        /// Canny detector with scharr
        Mat dx,dy;
        Scharr(blurImage,dx,CV_16S,1,0);
        Scharr(blurImage,dy,CV_16S,0,1);
        Canny( dx,dy, edge2, edgeThreshScharr, edgeThreshScharr*3 );
        /// Using Canny's output as a mask, we display our result
        cedge = Scalar::all(0);
        image.copyTo(cedge, edge2);
        imshow(window_name2, cedge);
    }
    
    static void help(const char** argv)
    {
        printf("\nThis sample demonstrates Canny edge detection\n"
               "Call:\n"
               "    %s [image_name -- Default is fruits.jpg]\n\n", argv[0]);
    }
    
    const char* keys =
    {
        "{help h||}{@image |fruits.jpg|input image name}"
    };
    
    int main( int argc, const char** argv )
    {
        help(argv);
        CommandLineParser parser(argc, argv, keys);
        string filename = parser.get<string>(0);
    
        image = imread(samples::findFile(filename), IMREAD_COLOR);
        if(image.empty())
        {
            printf("Cannot read image file: %s\n", filename.c_str());
            help(argv);
            return -1;
        }
        cedge.create(image.size(), image.type());
        cvtColor(image, gray, COLOR_BGR2GRAY);
    
        // Create a window
        namedWindow(window_name1, 1);
        namedWindow(window_name2, 1);
    
        // create a toolbar
        createTrackbar("Canny threshold default", window_name1, &edgeThresh, 100, onTrackbar);
        createTrackbar("Canny threshold Scharr", window_name2, &edgeThreshScharr, 400, onTrackbar);
    
        // Show the image
        onTrackbar(0, 0);
    
        // Wait for a key stroke; the same function arranges events processing
        waitKey(0);
    
        return 0;
    }
    
    
    展开全文
  • ffmpeg edgedetect Canny边缘检测算法

    ffmpeg命令目录


    原图,边缘图

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

    Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
    边缘检测,使用canny边缘算法
    
    The filter accepts the following options:
    滤镜接收一下参数
    
    low
    high
    Set low and high threshold values used by the Canny thresholding algorithm.
    设置Canny阈值算法使用的低阈值和高阈值。
    
    The high threshold selects the "strong" edge pixels, which are then connected through 8-connectivity with the "weak" edge pixels selected by the low threshold.
    高阈值选择“强”边缘像素,然后通过8-连通性与低阈值选择的“弱”边缘像素连接
    四连通区域是11011其中0代表中心点,4个1代表上下左右四个方向。
    八连通区域是111101111也就是除了上下左右四个方向外,还有左上、右上、左下、右下。
    
    low and high threshold values must be chosen in the range [0,1], and low should be lesser or equal to high.
    必须在[0,1]范围内选择低阈值和高阈值,低阈值应小于或等于高阈值。
    
    Default value for low is 20/255, and default value for high is 50/255.
    “低”的默认值为20/255,“高”的默认值为50/255
    
    mode
    Define the drawing mode.
    定义绘图模式
    
    ‘wires’
    Draw white/gray wires on black background.
    如上图,黑白
    
    ‘colormix’
    Mix the colors to create a paint/cartoon effect.
    最后生成图,类似油画效果,卡通效果
    
    ‘canny’
    Apply Canny edge detector on all selected planes.
    
    Default value is wires.
    
    planes
    Select planes for filtering. By default all available planes are filtered.
    

    ffmpeg edgedetect

    Canny边缘检测算法

    展开全文
  • 如何在图像中检测(垂直)边缘(计算过程):左图:灰度图像6*6矩阵,(彩色图像为6*6*3,灰度图像没有RGB三通道)中间图:为检测图形垂直边缘,构建3*3矩阵,称为过滤器(或核)右图:用3*3过滤器对6*6矩阵进行卷积...

    一.如何在图像中检测(垂直)边缘(计算过程):

    左图:灰度图像6*6矩阵,(彩色图像为6*6*3,灰度图像没有RGB三通道)

    中间图:为检测图形垂直边缘,构建3*3矩阵,称为过滤器(或核)

    右图:用3*3过滤器对6*6矩阵进行卷积运算,输出结果是右图的4*4矩阵,可以理解为另一张图片。

    卷积的计算过程:4*4矩阵的下标为(1,1)的值如下图所示:

    将3*3矩阵与6*6矩阵相应元素相乘,再相加即可。3*1+1*1+2*1+0*0+5*0+7*0+1*-1+8*-1+2*-1=-5

    4*4矩阵的下标为(1,2)的值即将3*3滤波器矩阵向右移:

    其他值同样对3*3滤波器矩阵进行移动 :

    如果用python实现这个过程用函数:conv_forward()

    二.为什么上述过程可以做垂直边缘检测?

     eg1垂直边缘检测输出结果矩阵的含义:


    左图:图像矩阵,【白 灰】,中间有一条垂直的(由浅到深色)过渡线

    中间图:滤波器矩阵 ,可视化成:【白 灰 黑】

    右图:依据上述方法卷积所得结果。如果当成图像:【灰 白 灰】(矩阵数值越大,亮度越高)

    卷积所得矩阵中间是高亮区,对应所检测图像(左图)中间有垂直边缘,但维数与原图像边缘不同,(检测到的结果太粗了)原因是图片维数(6*6)太小了。

    eg2垂直边缘检测滤波器表示明暗变化:


    图片矩阵左右翻转,滤波矩阵不便,得到的新图片矩阵中间值变成负值(原矩阵值得相反数),上图正值表示从亮到暗过渡,下图负值表示由暗到亮过渡。如果不想要这种正负提供的信息,可以将卷积所得到的矩阵取绝对值。

    eg3水平边缘检测滤波器:


    在相应边缘有明暗变化    1 1 1     -1  -1  -1

    eg4略复杂输入图片水平检测的例子:


    卷积所得输出矩阵数值与输入矩阵的绿、黄、紫(3*3)矩阵 块相互对应,输出矩阵的30,-30分别表示由亮到暗、由暗到亮的变化;10,-10是中间值(对应3*3矩阵块没有明显边缘变化)。但是当输入图片特别大的时候,不会出现10这么大的中间值。

    eg5不同的边缘检测滤波器矩阵:


    sobel filter :增加中间行权重,也就是图像中间的像素点,增加结果鲁棒性

    将垂直边缘滤波器旋转90,得到水平边缘滤波器

    eg6 复杂图像的边缘检测:

     

    复杂图像的滤波器不再是简单的垂直或者水平边缘检测,可以将滤波器矩阵设置为9个参数,利用深度学习的反向传播算法得到滤波器的参数。可以检测任意角度的边缘。






    展开全文
  • OpenCV3_C++_Sobel()sobel边缘检测 实例

    千次阅读 2017-10-14 11:05:26
    Opencv3 的开发环境安装和导入请看http://blog.csdn.net/sileixinhua/article/details/71175748所有的OpenCV3_C++实例代码请看https://github.com/sileixinhua/OpenCV_C-_tutorials实例#include "stdafx.h" ...
  • OpenCV3_C++_Canny()canny边缘检测 实例

    千次阅读 2017-10-14 11:06:19
    Opencv3 的开发环境安装和导入请看http://blog.csdn.net/sileixinhua/article/details/71175748所有的OpenCV3_C++实例代码请看https://github.com/sileixinhua/OpenCV_C-_tutorials实例#include "stdafx.h" ...
  • VC++中使用拉普拉斯边缘检测法对BMP位图进行锐化的实例包。VC++处理图像的时候会用到,锐化功能会使幅图片的轮廓更清淅,看上去图片也就更清淅,但有时候锐化过多会使图像严重失真,这就要看锐化方法的不同了。 ...
  • 链接:  ...这里将介绍基于法线的边缘检测方法,这里的shader是参考官方的:http://wiki.unity3d.com/index.php/Outlined_Diffuse_3; 运行效果如下: 代码如下: Shader "Outlined/Di
  • 这片文章将介绍基于法线的边缘检测方法
  • OpenCV实例:Canny边缘检测

    千次阅读 2011-04-02 10:42:00
     使用OpenCV,只用了几十行代码就实现了边缘检测功能,可见OpenCV的强大。使用OpenCV可以大大降低开发图形图像处理程序的复杂程度,可以使开发人员专心于具体功能的开发,而又能使用图形图像领域专家的算法来处理。...
  • 边缘检测

    2019-08-28 20:47:17
    下图清楚地显示了最简单的种情况。既然找变化最快的地方,可以通过导数来求解边缘 2、图片的导数 一张数字图片F[x,y], 其x方向导数可定义为: 3、图片的梯度 3.1 图片的梯度相关定义 几种常见的图片...
  • 本文主要分享GEE提供边缘检测函数——‘CannyEdgeDetector’ 利用NDVI检测植被边缘 //加载Landsat5大气层反射率书籍,计算NDVI var image = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_031034_20110619'); var ndvi = ...
  • *效果很明显,使得图像更清晰,可以提高边缘的质量,最后一个系数代表增强对比度的系数 emphasize (Image, ImageEmphasize, 7, 7, 5) *增加图像对比度算子 *算法原理为图像很暗的部分可以变得很亮,很...
  • 基于MATLAB边缘检测算子的实现

    万次阅读 多人点赞 2017-12-24 20:13:42
    基于MATLAB边缘检测算子的实现 1.概述 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中...边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。 一阶:Roberts Cros...
  • 边缘检测算法汇总

    千次阅读 2018-07-02 20:43:31
    Canny边缘检测算子Canny边缘检测算子是一个多级边缘检测算法。通常情况下边缘检测的目的是在保留原有图像属性的情况下,显著减少图像的数据规模。最优边缘准则Canny 的目标是找到一个最优的边缘检测算法,最优边缘...
  • 边缘检测算法

    千次阅读 2019-01-08 10:09:21
    边缘检测是图像基于边界分割的第步。由图像灰度的特点,可将边缘类型分为阶梯状边缘(处于图像两具有不同灰度值的相邻区域之间)、脉冲状边缘(它主要对应细条状灰度值突变区域,可以看做两背景阶梯状的边缘...
  • 边界轮廓提取(边缘提取)实例

    千次阅读 2020-10-25 17:15:10
    边缘提取,指数字图像处理中,对于图片轮廓的一个处理。对于边界处,灰度值变化比较剧烈的地方,就定义为边缘。也就是拐点,拐点是指函数发生凹凸性变化的点。二阶导数为零的地方。并不是一阶导数,因为一阶导数为零...
  • OpenCV边缘检测

    千次阅读 2014-08-11 16:13:42
    【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑 分类: 【OpenCV】  opencv图像处理边缘检测c++canny 目录(?)[+] 本...
  • (四)Canny边缘检测及ROI区域选择

    千次阅读 2020-06-24 11:37:04
    边缘检测是车道线识别中一个非常重要的项目。Canny边缘检测是基于求梯度变化最大值的方法来实现边缘检测,其基本原理就是对图像中各个点求梯度,梯度最大的地方就是边缘。 图像中的边界和边缘 边界和边缘不同,边界...
  • 五种边缘检测算法(附代码)

    千次阅读 2021-01-20 20:51:53
    、Roberts 边缘检测算子 Roberts边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差,即: 然后根据式(1.9.2)计算出Roberts的梯度幅度值: 它们的卷积算子为:...
  • OpenCV图像边缘检测(Canny算法)

    千次阅读 2017-07-08 09:59:06
      图像的边缘是指图像局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图像的边缘部分集中了图像的大部分信息,...
  • 彩色边缘检测和区域分割 文章目录、概念二、示例 、概念 由于这推导方法适用于二维空间,但不能扩展到高维空间 将其应用到 RGB 图像的唯一方法是,计算每幅分量彩色图像的梯度,然后将结果合并。 需要注意...
  • 图像处理常用边缘检测算子

    千次阅读 2018-03-29 18:13:30
    图像处理常用边缘检测算子  不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,190
精华内容 8,076
关键字:

一个边缘检测的实例