matlab中图像分割技术之一边缘检测

这篇具有很好参考价值的文章主要介绍了matlab中图像分割技术之一边缘检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.边缘检测
(1)Roberts边缘算子
(2)Sobel算子
(3)Prewitt算子
(4)拉普拉斯(Laplacian)算子
(5)LOG(Laplacian-Gauss)算子
(6)坎尼(Canny)算子
(7)利用霍夫(Hough)变换

图像分割技术图像分割是把图像分割成若干个特定的、具有独特性质的区域并提取出感兴趣的目标的技术和过程。在对图像的研究和应用中,人们往往仅对图像的某些部分感兴趣(目标或背景),他们一般对应图像中特定的、具有独特性质的区域。
**(1)多种特征融合的分割方法:**除利用图像的原始灰度特征外,我们还可以利用图像的梯度特征、几何特征(形态、坐标、距离、方向、曲率等)、变换特征(傅里叶谱、小波特征、分形特征等)及统计学特征(纹理、不变矩、灰度均值等)等高层次特征。
**(2)多种分割方法结合的分割方法:**由于目标成像的不确定性以及目标的多样性,单一的分割方法很难对含复杂目标的图像取得理想的分割结果。

一、边缘检测

边缘(Edge)是指图像局部亮度变化最显著的部分。边缘主要存在于目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征提取和形状特征提取等图像分析的重要基础。
(1)Roberts边缘算子
一种斜向偏差分的梯度计算方法,梯度的大小代表边缘的强度,梯度的方向与边缘走向垂直。Roberts操作实际上是求旋转±45°两个方向上微分值的和。Roberts边缘算子定位精度高,在水平和垂直方向效果较好,但对噪声敏感。
两个卷积核Gx=[1 0 0 -1],Gy=[0 1 -1 0]

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\3.jpg'); %读取图像
I=im2gray(i);
BW1=edge(I, 'Roberts',0.04);    %Roberts算子检测边缘
subplot(1,2,1),
imshow(I);
title('原图像')
subplot(1,2,2),
imshow(BW1);
title('Roberts算子检测边缘')

matlab中图像分割技术之一边缘检测
(2)Sobel算子
Sobel算子是一组方向算子,从不同的方向检测边缘。Sobel算子不是简单的求平均再差分,而是加强了中心像素上下左右四个方向像素的权重,运算结果是一副边缘图像。Sobel算子通常对灰度渐变和噪声较多的图像处理得较好。
两个卷积核Gx=[-1 0 1 -2 0 2 -1 0 1],Gy=[1 2 1 0 0 0-1 -2 -1]

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\3.jpg'); %读取图像
I=im2gray(i);
BW1=edge(I, 'Sobel',0.04);  %Sobel算子检测边缘
subplot(1,2,1),
imshow(I);
title('原图像')
subplot(1,2,2),
imshow(BW1);
title('Sobel算子检测边缘')

matlab中图像分割技术之一边缘检测
(3)Prewitt算子
Prewitt边缘算子是一种边缘样板算子,利用像素点上下、左右邻点灰度差,在边缘处达到极值检测边缘,对噪声具有平滑作用。由于边缘点像素的灰度值与其领域点像素的灰度值有显著不同,在实际应用中通常采用微分算子和模板匹配方法检测图像的边缘。Prewitt算子不仅能检测边缘点,而且能抑制噪声的影响,因此对灰度和噪声较多的图像处理得较好。
两个卷积核Gx=[-1 0 1 -2 0 2 -1 0 1],Gy=[1 2 1 0 0 0-1 -2 -1]

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\3.jpg'); %读取图像
I=im2gray(i);
BW1=edge(I, 'prewitt',0.04);     % 0.04为梯度阈值
subplot(1,2,1)
imshow(I);
title('原图像')
subplot(1,2,2),
imshow(BW1);
title('Prewitt算子检测边缘')

matlab中图像分割技术之一边缘检测
(4)拉普拉斯(Laplacian)算子
如果所求的一阶导数高于某一阈值,则可确定该点为边缘点,这样做会导致检测的边缘点太多。一种更好的方法就是求梯度局部最大值对应的点,并认定它们是边缘点,若用阈值来进行边缘检测,则在a和b之间的所有点都被记为边缘点。但通过去除一阶导数中的非局部最大值,可以检测出更精确的边缘。
(5)LOG(Laplacian-Gauss)算子
高斯滤波和拉普拉斯边缘检测结合在一起,形成LOG算法,也称之为拉普拉斯高斯算法。LOG算子是对Laplacian算子的一种改进,它需要考虑5×5邻域的处理,从而获得更好的检测效果。

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\3.jpg'); %读取图像
I=im2gray(i);
BW1=edge(I, 'log',0.003,2);                 %sigma=2
subplot(1,3,1);
imshow(I);
title('原图像')
subplot(1,3,2);
imshow(BW1);
title(' sigma =2的LOG算子检测的边缘')
BW1=edge(I, 'log',0.003,3);                 % sigma=3
subplot(1,3,3);
imshow(BW1);
title('sigma =3的LOG算子检测的边缘')

matlab中图像分割技术之一边缘检测
(6)坎尼(Canny)算子
检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字逼近。

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\3.jpg'); %读取图像
I=im2gray(i);
BW1=edge(I, 'canny',0.2);      %Canny算子边缘检测
subplot(1,2,1);
imshow(I);
title('原图像')
subplot(1,2,2);
imshow(BW1);
title('Canny算子边缘检测')

matlab中图像分割技术之一边缘检测

%%所有都放一起比较
clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\3.jpg'); %读取图像
I=im2gray(i);
BW1=edge(I, 'Roberts',0.04);        %Roberts算子
BW2=edge(I, 'Sobel',0.04);          %Sobel算子
BW3=edge(I, 'Prewitt',0.04);        %Prewitt算子
BW4=edge(I, 'LOG',0.004);           % LOG算子
BW5=edge(I, 'Canny',0.04);          % Canny算子
subplot(2,3,1),
imshow(I);
title('原图像');
subplot(2,3,2),
imshow(BW1)
title('Roberts ')
subplot(2,3,3),
imshow(BW2)
title(' Sobel ')
subplot(2,3,4),
imshow(BW3)
title(' Prewitt ')
subplot(2,3,5),
imshow(BW4)
title(' LOG ')
subplot(2,3,6),
imshow(BW5)
title('Canny ')

matlab中图像分割技术之一边缘检测
Roberts算子提取边缘的结果边缘较粗,边缘定位不很准确,Sobel算子和Prewitt算子对边缘的定位就准确了一些,而采用拉普拉斯高斯算子进行边缘提取的结果要明显优于前三种算子,特别是边缘比较完整,位置比较准确。相比而言,Canny算子提取的边缘最为完整,而且边缘的连续性很好,效果优于以上其他算子,这主要是因为它进行了“非极大值抑制”和形态学连接操作的结果。

(7)利用霍夫(Hough)变换
检测图像边缘的算法Hough变换本来是应用于直线检测中的,充分体现了Hough变换具有明了的几何解析性、一定的抗干扰能力以及易于实现并行处理等优点。

		clc;                %clc的作用就是清屏幕
		clear;              %clear是删除所有的变量
		close all;          %close all是将所有打开的图片关掉。
		I=imread('E:\我的桌面\MATLAB\练习\3.jpg'); %读取图像
		rotI=rgb2gray(I);
		subplot(2,2,1);
        imshow(rotI);
        title('灰度图像');
        axis([50,250,50,200]);
        grid on;
        axis on;
        BW=edge(rotI, 'prewitt');          %prewitt算子边缘检测
        subplot(2,2,2);
        imshow(BW);
        title('prewitt算子边缘检测后图像');
        axis([50,250,50,200]);
        grid on;
        axis on;
        [H, T, R]=hough(BW);               %霍夫变换
        subplot(2,2,3);
        imshow(H, [], 'XData', T, 'YData', R, 'InitialMagnification', 'fit');
        title('霍夫变换图');
        xlabel('\theta'), ylabel('\rho');
        axis on , axis normal, hold on;
        P=houghpeaks(H,5, 'threshold', ceil(0.3*max(H(:))));
        x=T(P(:,2)); y=R(P(:,1));
        plot(x, y, 's', 'color', 'white');
        lines=houghlines(BW, T, R, P, 'FillGap',5, 'MinLength',7);
        subplot(2,2,4); , imshow(rotI);
        title('霍夫变换图像检测');
        axis([50,250,50,200]);
        grid on;
        axis on;
        hold on;
        max_len=0;
        for k=1:length(lines)
        xy=[lines(k).point1; lines(k).point2];
        plot(xy(:,1), xy(:,2), 'LineWidth',2, 'Color', 'green');
        plot(xy(1,1), xy(1,2), 'x', 'LineWidth',2, 'Color', 'yellow');
        plot(xy(2,1), xy(2,2), 'x', 'LineWidth',2, 'Color', 'red');
        len=norm(lines(k).point1-lines(k).point2);
        if(len>max_len)
        max_len=len;
        xy_long=xy;
        end
        end
        plot(xy_long(:,1), xy_long(:,2), 'LineWidth',2, 'Color', 'cyan');

matlab中图像分割技术之一边缘检测文章来源地址https://www.toymoban.com/news/detail-462656.html

到了这里,关于matlab中图像分割技术之一边缘检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像分割--点、线和边缘检测

    图像分割是指将图像细分为构成它的子区域或物体 本章算法基于灰度值的两个基本性质之一:不连续性和相似性 就像局部平均平滑一幅图像那样,假设平均处理类似于积分,对于灰度的突变,局部变化可以用微分来检测 使用空间滤波器来计算图像中每个像素位置处的一阶导

    2024年02月09日
    浏览(44)
  • python数字图像处理基础(五)——Canny边缘检测、图像金字塔、图像分割

    梯度是什么? 梯度就是变化的最快的那个方向 edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 第一个参数是需要处理的原图像,该图像必须为单通道的灰度图; 第二个参数是阈值1; 第三个参数是阈值2。 原理步骤 1)使用高斯滤波器,以平滑图像,滤除噪

    2024年01月18日
    浏览(44)
  • OPENCV C++图像提取,图像处理,roi,阈值分割,连通区域筛选,边缘检测(以箱子边缘框选为例)

    本周有机会接触了一点opnev, 在此做一下记录, 最终以 框选出下图箱子为目的( 图片箱子为相机实拍结果,曝光有点低,会有亿点点暗 ), 本文会拆解步骤并附上图片, 完整的源码在最后.PS: 本文参考了好多大佬分享的理论知识, 在此先感谢大佬的分享~~ 首先是梳理一下流程, 下图是

    2024年02月07日
    浏览(48)
  • 【边缘检测】基于matlab八方向sobel图像边缘检测【含Matlab源码 1865期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年02月05日
    浏览(71)
  • 【计算机视觉】图像分割与特征提取——基于Log、Canny的边缘检测

    个人简介:  📦个人主页:赵四司机 🏆学习方向:JAVA后端开发  ⏰往期文章:SpringBoot项目整合微信支付 🔔博主推荐网站:牛客网 刷题|面试|找工作神器 📣种一棵树最好的时间是十年前,其次是现在! 💖喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。 前言:

    2024年02月03日
    浏览(42)
  • 图像处理——边缘检测(MATLAB实现)

    实验表明,人眼对图像中边缘的识别不是通过设置阈值来分割的,目标的边缘一般表现为灰度(对彩色图像还包括色度)的特变。对于人类的视觉感知,图像边缘对理解图像内容起到关键作用。在灰度渐变的图像中无法区分其灰度变化的边界,但如果边界灰度有突变,则可以区

    2024年02月03日
    浏览(39)
  • 【图像处理】基于matlab蚁群聚类图像边缘检测

    目录 基于matlab蚁群聚类图像边缘检测 蚁群聚类是一种模拟自然界中蚂蚁群体行为的算法,常用于解决优化问题。该算法可以用于图像处理中的边缘检测。下面给出一个基于MATLAB的蚁群聚类图像边缘检测的示例代码。 我们首先读入待处理图像,并将其转换为灰度图像。然后,

    2023年04月22日
    浏览(49)
  • 8 图像去噪 滤波 锐化 边缘检测案例(matlab程序)

    1. 简述        学习目标:一个图像处理的经典综合案例 一、图像锐化的原理   图像锐化的目的是凸显物体的细节轮廓,通常可以用梯度、Laplace算子和高通滤波来实现,下面一一说明: 1、梯度法 梯度计算可以参考 小白学习图像处理——canny边缘检测算法 ,假设Gx为x方

    2024年02月12日
    浏览(40)
  • 【图像处理】基于matlab边缘检测 Sobel、Roberts、Prewitt

    Sobel 算子算子包含两组 3x3 的矩阵,如图所示: 对于图像而言,取 3 行 3 列的图像数据,将图像数据与对应位置的算子的值相乘再相加,得到 x 方向的 Gx ,和 y 方向的 Gy ,将得到的 Gx 和 Gy ,平方后相加,再取算术平方根,得到 Gxy ,近似值为 Gx 和 Gy 绝对值之和,将计算得

    2024年02月04日
    浏览(52)
  • 毕业设计-基于 MATLAB 的图像边缘检测算法的研究和实现

    目录 前言 课题背景和意义 实现技术思路 一、MATLAB概述 二、图像边缘检测 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不

    2023年04月11日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包