【OpenCV图像处理】1.18 拉普拉斯算子 - Laplance算子

2023-11-03

1. 相关理论

在上一节已经提到过, f ( t ) f(t) f(t)的一阶导就是 f ′ ( t ) f'(t) f(t),对应的是Sobel算子,二阶导就是 f ′ ′ ( t ) f''(t) f(t),对应的就是本节的拉普拉斯算子。对应的图形如下所示:
在这里插入图片描述在这里插入图片描述
针对上图的解释:在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。

  • Laplance算子

    • 如果二阶导数不会,别担心 -->拉普拉斯算子(Laplance operator)
      Laplace ( f ) = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 \text {Laplace}(f)=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} Laplace(f)=x22f+y22f
    • Opencv已经提供了相关API - cv::Laplance
  • 处理流程

    • 高斯模糊 – 去噪声GaussianBlur()
    • 转换为灰度图像cvtColor()
    • 拉普拉斯 – 二阶导数计算Laplacian()
    • 取绝对值convertScaleAbs()
    • 显示结果
  • API使用 - Laplacian

    Laplacian(
    InputArray src,
    OutputArray dst,
    int depth, //深度CV_16S
    int ksize = 1, // 3
    double scale = 1,
    double delta =0.0,
    int borderType = 4
    )
    

2. 代码 & 运行效果

完整代码:

```c
#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/types_c.h>

using namespace std;
using namespace cv;

#ifndef P18
#define P18 18
#endif

int main() {
    std::string path = "../fei.JPG";
    cv::Mat img = cv::imread(path, 5);

    string str_input = "input image";
    string str_output = "output image";

    if(img.empty())
    {
        std::cout << "open file failed" << std::endl;
        return -1;
    }
    
#if P18     //拉普拉斯算子
    Mat gray;
    GaussianBlur(img, img,Size(3,3),0,0);
    cvtColor(img,gray, COLOR_BGR2GRAY);

    Mat edge_image;
    Laplacian(gray, edge_image, CV_16S, 3);
    convertScaleAbs(edge_image,edge_image);

    threshold(edge_image, edge_image, 0, 255, THRESH_OTSU | THRESH_BINARY);
    namedWindow("Laplacian",WINDOW_AUTOSIZE);
    imshow("Laplacian",edge_image);
#endif

    cv::waitKey(0);
    cv::destroyAllWindows();
    return 0;
}

代码说明:
threshold函数是图像的阈值操作,具体可见【OpenCV图像处理】1.14 基本阈值操作

运行效果:
在这里插入图片描述

在这里插入图片描述

第二幅图形,经过拉普拉斯算子运算后的结果和Sobel算子运算结果的差异不太大,Sobel算子的结果为:
在这里插入图片描述
这里为什么会有两个不同个结果,是因为不同的处理方法导致的,详细可以参考:【OpenCV图像处理】1.17 Sobel算子

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【OpenCV图像处理】1.18 拉普拉斯算子 - Laplance算子 的相关文章

  • 从扫描文档中提取行表 opencv python

    我想从扫描的表中提取信息并将其存储为 csv 现在我的表提取算法执行以下步骤 应用倾斜校正 应用高斯滤波器进行去噪 使用 Otsu 阈值进行二值化 进行形态学开局 Canny 边缘检测 进行霍夫变换以获得表格行 去除重复行 10像素范围内相
  • 开放简历fisherfaces

    我有这个问题 当我使用 vs2010 调试 opencv 2 4 0 facetec demo c 运行时 程序出现此错误 OpenCV错误 未知函数中图像步长错误 矩阵不连续 因此其行数无法更改 文件 src opencv modul e
  • 如何加速 svm.predict?

    我正在编写一个滑动窗口来提取特征并将其输入到 CvSVM 的预测函数中 然而 我偶然发现 svm predict 函数相对较慢 基本上 窗口以固定的步幅长度在图像比例上滑动穿过图像 遍历图像加上提取每个图像特征的速度 窗口大约需要 1000
  • 使用卡尔曼滤波器跟踪位置和速度

    我正在使用卡尔曼滤波器 恒定速度模型 来跟踪物体的位置和速度 我测量对象的 x y 并跟踪 x y vx vy 这是有效的 但是如果在传感器读数 x y vx vy 上添加 20 mm 的高斯噪声 即使该点没有移动 只是噪声也会发生波动 对
  • 使用 OpenCV 进行相机校准 - 如何调整棋盘方块大小?

    我正在使用 OpenCV Python 示例开发相机校准程序 来自 OpenCV 教程 http opencv python tutroals readthedocs io en latest py tutorials py calib3d
  • 在Python中从整个图像中检测表格部分

    我有一张尺寸为 3500x5000 的图像 现在我只想检测整个图像中的表格部分 如果不能直接进行 OCR 处理 则对其进行裁剪和旋转 经过所有搜索后 我想到了使用裁剪图像中的每个单元格的想法https medium com coinmonk
  • 针对不同处理器架构的 Gradle android 构建

    我想使用 Gradle 为 4 个不同的 Android CPU 处理器架构 armeabi armeabi v7a x86 mips 构建 4 个单独的 apk 我有为 4 个 CPU 架构构建的本机 OpenCV 库libs folde
  • 如何选择图像插值方法? (Emgu/OpenCV)

    Emgu OpenCV的 net包装器 提供的图像调整大小功能可以使用四种插值方法中的任意一种 http www emgu com wiki files 1 4 0 0 html 596dd03d 301e d3c6 4c53 c42855
  • 尝试使使用 OpenCV 的 java 应用程序(可执行 Jar)可移植。出现不满意的链接错误

    我制作了一个应用程序 用于从网络摄像头抓取视频并使用 OpenCV 和 JavaCV 检测运动 我正在尝试使用 eclipse 导出为可执行 jar 该程序在 eclipse 中运行良好 就像我编写该程序的计算机上的 exe jar 一样
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • OpenCV功能类似于matlab的“查找”

    我正在寻找 openCV 中的一个函数来帮助我制作图像蒙版 例如在 MATLAB 中 B A or B 零 大小 A B A 10 c 有些功能可以让你通过mask向他们提出论据 按照您描述的方式创建面具 我认为您正在追求Cmp 或 Cmp
  • CV_MAT_ELEM 中的编译错误

    调用estimateRigidTransform 的结果是我得到一个名为 trans 的cv Mat 对象 为了检索其包含的矩阵 我尝试以这种方式访问 其元素 for i 0 i lt 2 i for j 0 j lt 3 j mtx j
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • opencv不失真图像有一个奇怪的圆圈

    我尝试使用 opencv 针孔模型来计算校准参数 然后使图像不失真 问题是 未失真的图像中有一个奇怪的圆圈 如下所示 代码 原始图像和结果图像是here https github com wennycooper A004 pinhole 任
  • 使用 OpenCV 从轮廓获取掩模

    我想从我通过 cv findContours 计算的轮廓 它只存在 1 个轮廓 获取图像掩模 然而 虽然我的轮廓变量不为空 但我无法使用 cv drawContours 检索图像蒙版 我的目标图像始终为空 这是我的代码 img mosaic
  • cv2.imdecode 始终返回 None

    我正在从存储 JPEG 图像的 sqlite BLOB 读取二进制数据 sqlite3 Binary 图像被写入数据库 img cv2 imread images image jpg c execute INSERT INTO pictur
  • opencv cmake安装的python包路径错误

    我一直在尝试遵循 opencv 安装步骤pyimagesearch com http www pyimagesearch com 2015 06 15 install opencv 3 0 and python 2 7 on osx 与虚拟
  • 使用 Xcode 为 OS X Lion / Mountain Lion 编译 OpenCV (2.3.1+)

    谁能给我提供一些如何使用 Xcode 在 OS X Lion 上编译 OpenCV 2 3 1 的详细指南 我对此很生气 我得到了源代码 使用 cmake 创建 Xcode 模板并尝试构建它 但它失败并出现大约 200 个错误 提前致谢 多
  • 从 PyCharm IDE 运行 Django 项目时出现“ImportError:没有名为 cv2 的模块”

    我正在从 PyCharm 运行一个 Django 项目 其配置设置为使用 virtualenv 中的 Python 解释器 该解释器依赖于 opencv 当我运行时 该网站在本地运行良好django admin py runserver 但
  • 变形:Opencv 使用 Visual Studio 将图像显示到曲面屏幕

    我正在尝试使用 opencv API 来扭曲图像 以便将其显示到曲面屏幕上 我已经浏览了opencv中提供的翘曲apihere http docs opencv org 2 4 modules stitching doc warpers h

随机推荐

  • 关于blob类型的字段使用mybatis进行对mysql数据库的读取,修改properties文件后缀名为yml的问题,报不能bound statement的错的解决

    1 在处理blob类型的时候用到的类型处理器 org apache ibatis type BlobTypeHandler是MyBatis框架中的一个类型处理器 TypeHandler 用于处理数据库中的BLOB binary large
  • Linux 下 vim/Gvim配置

    Sections gt General gt VIM user interface gt Colors and Fonts gt Files and backups gt Text tab and indent related gt Vis
  • Turbo跨平台开源渲染引擎

    Turbo跨平台开源渲染引擎 基于Vulkan开发的跨平台渲染引擎 欢迎来参观 使用 提意见 o o Turbo开源引擎地址 Turbo开源引擎开发记录视频
  • NodeJs安装与全局配置

    1 首先我们要到nodejs官网 https nodejs org 上下载node 选择一个自己喜欢的版本下载 我这里选择的是最新版 2 下载完了就直接双击安装 安装过程中可以另外指定安装路径 我的安装路径是E FRONT nodejs 3
  • poi添加倾斜线

    添加倾斜线 org junit Test public void main1 try Workbook wb new XSSFWorkbook Sheet sheet wb createSheet XX销售对照表 CreationHelpe
  • Glide3.7.0源码详解

    基于的Glide版本 3 7 0 本文分析的是Glide最基本的一行代码 Glide with this load url into imageView 我们认准这一个功能点 来看看Glide默默为我们做了什么 这篇文章会分析这行代码背后的
  • 树莓派vlc配置

    本文目的是用树莓派播放一个MP4视频 硬件版本 树莓派3b 系统版本 2018 04 18 raspbian stretch vlc版本 3 0 3 换源 etc apt sources list deb http mirrors aliy
  • java的h2是什么_什么是H2数据库

    展开全部 H2是Thomas Mueller提供的一个开源的 纯java实现的关系数据库 e68a84e8a2ad3231313335323631343130323136353331333366306436 H2是一个开源的嵌入式数据库引擎
  • 《数学之美》——机器学习最佳入门教程

    本文转载至 http www cricode com 3095 html 数学之美系列 目录 作者 吴军 Google研究员 来源 Google黑板报 快课网整理 数学之美 一 统计语言模型 数学之美 二 谈谈中文分词 数学之美 三 隐含马
  • [Python学习] 专题二.条件语句和循环语句的基础知识

    前面讲述了 专题一 函数的基础知识 而这篇文章讲述的Python的条件语句和循环语句的基础知识 主要内容包括 1 条件语句 包括单分支 双分支和多分支语句 if elif else 2 循环语句 while的使用及简单网络刷博器爬虫 3 循
  • ENSP网络综合实验(WALN+隧道+NAT)

    实验拓扑 https wwa lanzoub com ivTyH0w8vz6d 设备接入 汇聚交换机 S3700 S5700 路由器 AR3200 为例 接入层 用户角色包括员工 接入方式包括有线和无线 和访客 仅能通过无线接入 办公WIF
  • java注解反射之自定义Retrofit 项目实战

    java注解反射之自定义Retrofit 项目实战 前言 一 自定义注解 二 自定义按钮事件 三 功能实现 总结 前言 前面我用了两篇的文章 来讲解注解与反射的原理 简单的项目实战 本篇文章我将带领大家 进一步的深入学习 我们将通过代理的方
  • Redis的线程模型,单线程和多线程的抉择

    Redis单线程就应对了大多数场景 但是用户的需求总是无止境的 其次硬件 操作系统均有较高的配置 如果一直使用单线程 也是对硬件的一种浪费了 所以在redis 6 0之后 可以开启多线程 所以面试题又多了一项 简单了解了解就可以了 1 Re
  • 基于MegEngine实现语义分割【附部分源码及模型】

    文章目录 前言 语义分割发展史及意义 一 数据集的准备 二 基于MegEngine的语义分割框架构建 1 引入库 2 CPU GPU配置 3 数据标准化 4 解析数据集到列表中 5 设置数据迭代器 6 获取loader 7 模型构建 8 模
  • 从源代码编译安装 Mono 2.4 和 MonoDevelop 2.0

    从源代码编译安装 Mono 2 4 和 MonoDevelop 2 0 虽然现在几乎所有的Linux发行版都预置了Mono软件 但是大多数都比较旧 因此要体验最新版本的Mono 还是要用源代码自己进行编译安装的 先说几句废话 Mono 2
  • F12打断电调试

    举例 比如一个系统查询信息 点击 查询 显示需要 工号为纯数字 此刻需要F12开发者工具调试 第一步 按下键盘F12 找到Sources 对应的代码 打断点 第二步 在页面右键单击 重新加载框架 此刻会在打断点的地方停止 点击Console
  • [已解决]ln: failed to create symbolic link ‘/usr/bin/python’: File exists

    安装python3 在添加软链时报错如下 翻译过来的意思就是 创建符号链接失败 文件存在 root VM 12 15 centos Python 3 7 6 ln s usr local python3 bin python3 7 usr
  • git学习记录3-----分支操作

    git学习记录3 分支操作 从master分支创建feature A 分支和 fix B 分支 查看分支 创建 切换分支 培育分支实操 首先在READEME md进行修改 切换回master分支 切换回上一个分支 特性分支 主干分支 分支合
  • 判断子序列(C语言)

    判断子序列 思路简单 所用知识比较基础 题目 给定字符串 s 和 t 判断 s 是否为 t 的子序列 字符串的一个子序列是原始字符串删除一些 也可以不删除 字符而不改变剩余字符相对位置形成的新字符串 例如 ace 是 abcde 的一个子序
  • 【OpenCV图像处理】1.18 拉普拉斯算子 - Laplance算子

    文章目录 1 相关理论 2 代码 运行效果 1 相关理论 在上一节已经提到过 f t f t f t 的一阶导就是 f