码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数字图像处理——实验四 数字图像的边缘检测实验


    数字图像处理——实验四 数字图像的边缘检测实验

    • 一、实验目的
    • 二、实验主要仪器设备
    • 三、实验原理
    • 四、实验内容及代码
      • 4.1 实验内容
      • 4.2 实验数据
      • 4.3 实验代码
        • 4.3.1 LoG检测器
        • 4.3.2 Scharr算子
        • 4.3.3 Canny边缘检测器

    一、实验目的

    (1)掌握数字图像的空间域滤波原理;

    (2)掌握数字图像的边缘检测原理及常用的边缘检测算子;

    (3)掌握阈值分割及图像的二值化。

    二、实验主要仪器设备

    (1)计算机;

    (2)Python 3.x及PyCharm软件;

    (3)典型的灰度、彩色图像文件。

    • 注:opencv-python 使用的是3.x 版本

    三、实验原理

    (1) 图像空间滤波原理

    空间滤波是一种采用滤波处理的影像增强方法。其理论基础是空间卷积和空间相关。目的是改善影像质量,包括去除高频噪声与干扰,及影像边缘增强、线性增强以及去模糊等。分为低通滤波(平滑化)、高通滤波(锐化)和带通滤波。

    (2) 边缘检测原理

    边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。

    四、实验内容及代码

    4.1 实验内容

    (1)读取图像;

    (2)使用 opencv-python 对图片进行边缘检测,并对三种算子得出的结果进行比较。

    4.2 实验数据

    本实验有且仅用到一张图片,原始图片如 图1 所示:

    在这里插入图片描述

    图1. 原始图像

    4.3 实验代码

    4.3.1 LoG检测器

    实现代码:

    import cv2
    
    img = cv2.imread(r'./data/3.jpg')
    cv2.imshow('img_origin', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 1. LoG检测器
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 图像高斯滤波去噪
    img_blur = cv2.GaussianBlur(img_gray, (3, 3), 1, 1)     # 核尺寸通过对图像的调节自行定义
    # 调用Laplacian算法进行图像轮廓提取
    LOG_result = cv2.Laplacian(img_blur, cv2.CV_16S, ksize=1)
    img_LOG = cv2.convertScaleAbs(LOG_result)   # 得到 LOG 算法处理结果
    cv2.imshow('img_LOG', img_LOG)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    LoG边缘检测器效果展示:

    在这里插入图片描述

    图2. LoG边缘检测器效果

    4.3.2 Scharr算子

    实现代码:

    # 2. Scharr算子
    Scharr_result = cv2.Scharr(img_gray, cv2.CV_16S, dx=1, dy=0)
    img_Scharr = cv2.convertScaleAbs(Scharr_result)
    cv2.imshow('img_Scharr', img_Scharr)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Scharr算子边缘检测效果展示:

    在这里插入图片描述

    图3. Scharr算子边缘检测效果

    4.3.3 Canny边缘检测器

    实现代码:

    # 3. Canny边缘检测器
    img_blur_canny = cv2.GaussianBlur(img_gray, (7, 7), 1, 1)
    img_Canny = cv2.Canny(img_blur_canny, 50, 150)
    cv2.imshow('img_Canny', img_Canny)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Canny算子边缘检测效果展示:

    在这里插入图片描述

    图4. Canny算子边缘检测效果
  • 相关阅读:
    判断字符串的两半是否相似
    浅谈当下7个网页设计趋势 优漫动游
    MIKE水动力笔记12_数字化海图1之提取确值水深点
    java封装国密SM4为 jar包,PHP调用
    Fiddle日常运用手册(2)-使用过滤器进行接口精准拦截
    【Maven】SpringBoot多模块项目利用reversion占位符,进行版本管理.打包时版本号不能识别问题
    python快速入手
    一文看懂推荐系统:经典双塔模型:微软DSSM模型(Deep Structured Semantic Models),无特征交互,后来美团改进了
    自动化测试之路 —— Appium元素定位
    SRE 排障利器,接口请求超时试试 httpstat
  • 原文地址:https://blog.csdn.net/alan1ly/article/details/125379899
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号