python3+opencv3用拉普拉斯算子实现边缘检测

图像处置过程中边缘检测常采用索贝尔,拉普拉斯算子等方式。普遍用于各类处置方式前期加工之中,方式也良多。本文采用python的opencv函数库利用Laplacian算子实现边缘检测。

东西/原料

  • pycharm和windows7情况
  • python3情况下opencv3模块

方式/步调

  1. 1

    理论描述:

    按照官网描述和图形描画,第一张图可知:diyiznag可以形象得知,强度的一阶导数,边缘的特征是最大值,是像素强度显示“跳跃”或强度的高转变。

    第二张图可知二阶导数为零时,是边缘跳跃或强度的高转变。也就是边缘。

    这两张图很是形象的描画了边缘检测的理论根本。

  2. 2

    为了简单,本身构建了一个米框图,便于不雅察!

    import cv2 as cv

    import numpy as np

    import matplotlib.pyplot as plt

    image = cv.imread('c:\\black_MiLine.png',0)

    cv.imshow('image',image)

    cv.waitKey(0)

  3. 3

    Laplacian函数简介:

    dst = cv.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

    前两个是必需的参数:

    第一个原图像;

    第二个是图像的深度,-1暗示与原图像不异深度。方针图像深度必需大于等于原图像深度;

    厥后是可选的参数:

    dst方针图像;

    ksize是算子的巨细,必需为1、3、5、7。默认为1。

    scale是缩放导数的比例常数,默认无伸缩系数;

    delta是可选增量,会加到最终的dst中,默认环境下无额外的值加dst;

    borderType是判定图像鸿沟模式。缺省cv.BORDER_DEFAULT。

  4. 4

    进行变换:

    Laplacian = cv.Laplacian(image, cv.CV_16S, ksize=3)cv.imshow('Laplacian',Laplacian)

    我们发现输出是会的。没有其他内容。

  5. 5

    对上述成果进行convertScaleAbs,再看成果!

    Laplacian_result = cv.convertScaleAbs(Laplacian)

    print(Laplacian_result)

    cv.imshow('Laplacian_result',Laplacian_result)

    cv.waitKey(0)

  6. 6

    再来一个单步模拟

    kernel = np.array([[0,-1,0],[-1,4,-1],[0,-1,0]],np.float32)

    image_tmp = np.float64(image)

    img_filter = cv.filter2D(image_tmp,-1,kernel)

    cv.imshow('img_filter',img_filter)

    cv.waitKey(0)

    至此完当作拉普拉斯算子。

注重事项

  • 就两步 1)先cv.Laplacian(image, cv.CV_16S, ksize=3)
  • 2)再 cv.convertScaleAbs(Laplacian) 即可
  • 发表于 2019-03-12 20:01
  • 阅读 ( 1114 )
  • 分类:其他类型

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具