图像边缘检测经典算子及MATLAB实现

图像边缘检测经典算子及MATLAB实现一 边缘检测边缘是图象最基本的特征 边缘检测在计算机视觉 图象分析等应用中起着重要的作用 是图象分析与识别的重要环节 这是因为子图象的边缘包含了用于识别的有用信息 所以边缘检测是图像分析和模式识别的主要特征提取手段 所谓边缘是指其周围像素灰度后阶变化或屋顶状变化的那些像素的集合 它存在于目标与背景 目标与目标 区域与区域 基元与基元之间 因此它是图象分割所依赖的重要的特征 也是纹理特征的重要信

一、边缘检测

边缘是图象最基本的特征. 边缘检测在计算机视觉、图象分析等应用中起着重要的作用,是图象分析与识别的重要环节,这是因为子图象的边缘包含了用于识别的有用信息. 所以边缘检测是图像分析和模式识别的主要特征提取手段。所谓边缘是指其周围像素灰度后阶变化或屋顶状变化的那些像素的集合,它存在于目标与背景、目标与目标、区域与区域,基元与基元之间。 因此它是图象分割所依赖的重要的特征,也是纹理特征的重要信息源和形状特征的基础;而图象的纹理形状特征的提取又常常依赖于图象分割。 图象的边缘提取也是图象匹配的基础,因为它是位置的标志,对灰度的变化不敏感,它可作为匹配的特征点。

二、边缘检测经典算子及实现

目前常用的边缘检测方法有:Roberts边缘检测算子、Sobel边缘检测算子、Prewitt边缘检测算子、Laplace边缘检测算子等等。

1、Roberts边缘检测算子

Roberts边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差。

MATLAB实验代码如下:

clear; sourcePic=imread('lena.jpg'); %读取原图像 grayPic=mat2gray(sourcePic); %实现图像矩阵的归一化操作 [m,n]=size(grayPic); newGrayPic=grayPic;%为保留图像的边缘一个像素 robertsNum=0; %经roberts算子计算得到的每个像素的值 robertThreshold=0.2; %设定阈值 for j=1:m-1 %进行边界提取 for k=1:n-1 robertsNum = abs(grayPic(j,k)-grayPic(j+1,k+1)) + abs(grayPic(j+1,k)-grayPic(j,k+1)); if(robertsNum > robertThreshold) newGrayPic(j,k)=255; else newGrayPic(j,k)=0; end end end figure,imshow(newGrayPic); title('roberts算子的处理结果') 

2、Sobel边缘检测算子

clear; sourcePic=imread('lena.jpg');%读取原图像 grayPic=mat2gray(sourcePic);%实现图像矩阵的归一化操作 [m,n]=size(grayPic); newGrayPic=grayPic;%为保留图像的边缘一个像素 sobelNum=0;%经sobel算子计算得到的每个像素的值 sobelThreshold=0.8;%设定阈值 for j=2:m-1 %进行边界提取 for k=2:n-1 sobelNum=abs(grayPic(j-1,k+1)+2*grayPic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)-2*grayPic(j,k-1)-grayPic(j+1,k-1))+abs(grayPic(j-1,k-1)+2*grayPic(j-1,k)+grayPic(j-1,k+1)-grayPic(j+1,k-1)-2*grayPic(j+1,k)-grayPic(j+1,k+1)); if(sobelNum > sobelThreshold) newGrayPic(j,k)=255; else newGrayPic(j,k)=0; end end end figure,imshow(newGrayPic); title('Sobel算子的处理结果') 

3、Prewitt边缘检测算子

clear; sourcePic=imread('lena.jpg');%读取原图像 grayPic=mat2gray(sourcePic);%实现图像矩阵的归一化操作 [m,n]=size(grayPic); newGrayPic=grayPic;%为保留图像的边缘一个像素 PrewittNum=0;%经Prewitt算子计算得到的每个像素的值 PrewittThreshold=0.5;%设定阈值 for j=2:m-1 %进行边界提取 for k=2:n-1 PrewittNum=abs(grayPic(j-1,k+1)-grayPic(j+1,k+1)+grayPic(j-1,k)-grayPic(j+1,k)+grayPic(j-1,k-1)-grayPic(j+1,k-1))+abs(grayPic(j-1,k+1)+grayPic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)-grayPic(j,k-1)-grayPic(j+1,k-1)); if(PrewittNum > PrewittThreshold) newGrayPic(j,k)=255; else newGrayPic(j,k)=0; end end end figure,imshow(newGrayPic); title('Prewitt算子的处理结果') 

4、Laplace边缘检测算子

clear; sourcePic=imread('lena.jpg');%读取原图像 grayPic=mat2gray(sourcePic);%实现图像矩阵的归一化操作 [m,n]=size(grayPic); newGrayPic=grayPic;%为保留图像的边缘一个像素 LaplacianNum=0;%经Laplacian算子计算得到的每个像素的值 LaplacianThreshold=0.2;%设定阈值 for j=2:m-1 %进行边界提取 for k=2:n-1 LaplacianNum=abs(4*grayPic(j,k)-grayPic(j-1,k)-grayPic(j+1,k)-grayPic(j,k+1)-grayPic(j,k-1)); if(LaplacianNum > LaplacianThreshold) newGrayPic(j,k)=255; else newGrayPic(j,k)=0; end end end figure,imshow(newGrayPic); title('Laplacian算子的处理结果') 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221405.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午6:11
下一篇 2026年3月17日 下午6:12


相关推荐

  • 元宝App翻译功能

    元宝App翻译功能

    2026年3月12日
    2
  • SE是什么意思_pe是什么的英文简称

    SE是什么意思_pe是什么的英文简称AEApplicationEngineer应用工程师。定位:IC流片后,需要在通用应用系统(比如Intel/AMD主板)或者关键刻画的系统平台上进行功能验证,发现问题反馈给IC设计工程师。与FAE相比,AE偏向IC设计,FAE偏向市场对一点。FAEFieldAppilcationEngineer现场应用工程师,又称现场应用技术支持工程师。定位:IC产品在客户端送样时,可能出现技术问题,协助客户的工程技术人员解决技术问题;协助市场人员,从技术角度推广产品,开拓新客户,收集客户的技术问题与

    2025年8月1日
    2
  • liunx清理磁盘du -h –max-depth=1 /data/*「建议收藏」

    liunx清理磁盘du -h –max-depth=1 /data/*

    2022年1月21日
    41
  • spring cloud gateway 网关认证登录_golang 网关

    spring cloud gateway 网关认证登录_golang 网关网关作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务,所以,使用网关的好处在于:(1)简化客户端的工作。网关将微服务封装起来后,客户端只需同网关交互,而不必调用各个不同服务;(2)降低函数间的耦合度。一旦服务接口修改,只需修改网关的路由策略,不必修改每个调用该函数的客户端,从而减少了程序间的耦合性(3)解放开发人员把精力专注于业务逻辑的实现。由网关统一实现服务路由(灰度与ABTest)、负载均衡、访问控制、流控熔断降级等非业务相关功能

    2022年10月11日
    5
  • 昆仑万维天工超级智能体APP上线后爆火!全球首款Office智能体APP,开启AI办公新时代

    昆仑万维天工超级智能体APP上线后爆火!全球首款Office智能体APP,开启AI办公新时代

    2026年3月16日
    3
  • IDEA下Log4j使用教程

    IDEA下Log4j使用教程 2015年12月14日15:30:21阅读数:13467Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些…

    2025年9月14日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号