图片边缘化处理

五种方法

        图像边缘:是图像的重要特征,是图像中特性(如像素灰度、纹理等)分布的不连续处,图像周围特性有阶跃变化或屋脊状变化的那些像素集合。图像的边缘部分集中了图像的大部分信息,一幅图像的边缘结构与特点往往是决定图像特质的重要部分。图像边缘的另一个定义是指其周围像素灰度变化不连续的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间,因此,边缘是图像分割、图像理解及图像识别的重要特征。

图像边缘检测主要用于增强图像中的轮廓边缘、细节以及灰度跳变部分,形成完整的物体边界,达到将物体从图像中分离出来或将表示同一物体表面的区域检测出来的目的。目前为止最通用的方法是检测亮度值的不连续性,用一阶和二阶导数检测的。

1.微分法

微分法的目的是利用微分运算求信号的变化率,加强高频分量的作用,从而使轮廓清晰。遵循如下两个基本准则之一:找到亮度的一阶导数在幅度上比指定的阈值大的地方;找到亮度的二阶导数有零交叉的地方。

2.差分边缘检测方法

利用像素灰度的一阶导数算子在灰度迅速变化处得到高值来进行奇异点的检测。它在某一点的值就代表该点的边缘强度,通过对这些值设置阈值来进一步得到边缘图像。差分边缘检测方法是最原始、最基本的方法。但要求差分方向与边缘方向垂直,这就需要对图像的不同方向(一般为垂直方向、水平方向和对角线方向)都进行差分运算,增加了实际运算的繁琐性,目前很少采用。

3.Roberts边缘检测算子

Roberts边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差然后计算出Roberts的梯度幅度值.
Roberts检测器较为简单,但具有一些功能上的限制,例如,它是非对称的,而且不能检测诸如45°倍数的边缘。然而,它还是经常用于硬件实现中,因为它既简单又快速。

4.Sobel边缘检测算子

对数字图像的每个像素,考察它上下左右邻点灰度的加权差,与之接近的邻点的权大。
Sobel算子很容易在空间上实现,边缘检测效果较好,且受噪声的影响也较小。邻域增大抗噪性会更好,但计算量也会增大,得出的边缘也会相应变粗。Sobel算子会检测出许多伪边缘,边缘定位精度不够高,在精度要求不高时是一种较常用的边缘检测方法。

5.Prewitt边缘检测算子

图像中的每个像素都用这两个核作卷积,一个核对垂直边缘影响最大,另一个核对水平边缘影响最大。两个卷积的绝对值的最大值作为该点的输出值。不能简单的将小于0的值处理为0,这样会丢失信息。它比Sobel检测器在计算上要简单一些,但比较容易产生一些噪声。

6.拉普拉斯边缘检测算子

拉普拉斯边缘检测算子是一种二阶微分算子,与其它边缘检测方法的不同之处在于,该方法是一种各向同性的检测方法,即其边缘的增强程度与边缘的方向无关,从而可以满足不同走向的边缘锐化的要求。
拉普拉斯算子自身很少被直接用作边缘检测,因为二阶导数对噪声具有无法接受的敏感性,它的幅度会产生双边缘,而且它不能检测边缘的方向。然而,当与其它边缘检测技术组合使用时,拉普拉斯算子是一种有效的补充方法。例如,虽然它的双边缘使得它不适合直接用于边缘检测,但该性质可用于边缘定位。

MATLAB实现

      在MATLAB中可以由edge函数实现各算子对边缘的检测,其调用格式为:

  • BW = edge(I,’METHOD’)—自动选择阈值用指定的算子进行边缘检测;
  • BW = edge(I,’METHOD’,THRESH)—根据给定的阈值THRESH用指定的算子进行边缘检测,忽略所有小于阈值的边缘。当THRESH为空时,自动选择阈值;
  • [BW, THRESH] = edge(I,’METHOD’,…)—返回edge使用的阈值,以确定哪个梯度值足够大到可以称为边缘点。

其中,I为输入图像。返回图像BW为与I同大的二值图像,1表示边缘,0表示非边缘。I是unit8型、unit16型,或者是double型,BW是unit8型。
METHOD:使用检测算子的类型,经常使用的有:
sobel:缺省值,用导数的sobel近似值检测边缘,那些梯度最大的点返回边缘。
roberts:用导数的roberts近似值检测边缘,那些梯度最大的点返回边缘。
prewitt:用导数的prewitt近似值检测边缘,那些梯度最大的点返回边缘。
LoG:用LoG算子检测边缘。
Canny:用Canny算子检测边缘。
THRESH:指定的阈值,所有不强于thresh的边缘都被忽略。

clear clc
I=imread('dmm.png'); %imshow(x)
I=rgb2gray(I);
BW1 = edge(I,'sobel');   %sobel边缘检测算子
BW2 = edge(I,'roberts');  %Roberts边缘检测算子
BW3 = edge(I,'prewitt');  %prewitt边缘检测算子
BW4 = edge(I,'log');     %log边缘检测算子
BW5 = edge(I,'canny');   %canny边缘检测算子
subplot(2,3,1),imshow(I),title('灰度图','fontname','Times New Roman','Color','r','FontSize',16); subplot(2,3,2),imshow(BW1),title('sobel','fontname','Times New Roman','Color','b','FontSize',16) subplot(2,3,3),imshow(BW2),title('roberts','fontname','Times New Roman','Color','y','FontSize',16) subplot(2,3,4),imshow(BW3),title('prewitt','fontname','Times New Roman','Color','m','FontSize',16)
subplot(2,3,5),imshow(BW4),title('log','fontname','Times New Roman','Color','g','FontSize',16) subplot(2,3,6),imshow(BW5),title('canny','fontname','Times New Roman','Color','b','FontSize',16)

欢迎加群:707914447

matlab对图片边缘化处理相关推荐

  1. 使用MATLAB转换图片为数据进行vga显示

    如题,本文参考邓堪文老师的博文教程. 之前这个问题纠结了很久,就是在使用MATLAB转换图片的时候,手里有的代码是将一副图片转为八位332显示的格式. 类似这种,但是,要将显示的图片是全蓝色的. 因为 ...

  2. 利用MATLAB将图片转换成coe文件、TXT文件、mif文件、bin文件

    利用MATLAB将图片转换成coe文件.TXT文件.mif文件 利用MATLAB将图片转换成coe文件 利用MATLAB将图片转换成txt文件 利用MATLAB将图片转换成mif文件 利用MATLAB ...

  3. 使用Matlab把图片集合生成视频流文件

    上一次在写过<使用Matlab读取视频流文件>博客,地址:https://blog.csdn.net/lingyunxianhe/article/details/83543282 这次是: ...

  4. matlab设置图片名称,如何在matlab中批量修改图片名称

    %% % 提供原图片文件路径 oldPath = 'H:\毕业设计相关matlab代码\图片'; % 原来的放图片的文件夹地址 newPath = 'C:\Users\HS\Desktop\实验图片' ...

  5. 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)

    上一篇文章讲到通过Matlab实现图片隐藏文件,这一篇我使用C#调用Matlab编译的.Net程序集构建了一个小的应用程序. 原理很简单,使用上一篇文章中的Matlab代码,写成两个函数,分别用来隐藏 ...

  6. Matlab给图片加网格

    如何使用matlab给图片添加网格 总体思路是使用Matlab的meshgrid函数生成网格,再用plot函数绘制网格. 本文参考链接 另一种相似的办法:Click here 代码如下: p = im ...

  7. matlab中asc格式,matlab将图片转换成asc码txt文本格式 | 学步园

    matlab将图片转换成asc码 function img2txt(imfile,varargin); % using an ASCII character for every stepx pixel ...

  8. matlab保存所有图,Matlab中图片保存的5种方法

    matlab的绘图和可视化能力是不用多说的,可以说在业内是家喻户晓的. Matlab提供了丰富的绘图函数,比如ez**系类的简易绘图函数,surf.mesh系类的数值绘图函数等几十个.另外其他专业工具 ...

  9. Matlab 在图片上画虚线矩形框

    matlab在图片上rectangle详解 Rectangle 属性 矩形的外观和行为 矩形属性控制矩形对象的外观和行为.通过更改属性值,您可以修改矩形的特定方面.使用圆点表示法查询和设置属性. h ...

  10. 利用Matlab将图片转换成素描(简笔画)风格

    题目: 利用Matlab将图片转换成素描(简笔画)风格 记得曾经看过别人的网络头像,是那种类似简笔画或素描的图片,一直以来都想做一个类似的头像,但始终不得要领.今天当我看到文献[1]中的图5.28时( ...

最新文章

  1. 一文搞懂 Prometheus 的直方图
  2. 最大信息系数MIC--minepy安装
  3. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)
  4. 预测2019那些可能改变我们生活的技术
  5. jquery ajax实例get,jQuery中ajax的get()方法用法实例
  6. Java -- Servlet面试题及答案(需更深入了解)
  7. android设置动画循环播放,Android动画之AnimatorSet如何循环执行
  8. 只能修饰唯一一个html元素的选择器是,HTML常用标签和CSS选择器的使用及演示——2019.1.14...
  9. 游戏客户端安全方案。
  10. 想学Docker?我教你啊~
  11. 【Java学习路线之JavaWeb】Spring MVC框架入门教程
  12. 利用图像内插法放大缩小图像 Matlab
  13. Spyder 错误:error: (-215:Assertion failed) dst.data = src.data in function ‘cv::undistort‘
  14. matlab BPSK调制方式代码实现
  15. nyoj 黑色帽子
  16. 使用matlab画网格线--多条横线多条竖线
  17. 读论文——RoBERTa
  18. Huffman和Priority_queue 解决POJ 1521
  19. GPRS模块--PPP手动拨号
  20. 博奥智源公司,图书馆管理软件开发功能详解

热门文章

  1. 进程同步之信号量机制(pv操作)及三个经典同步问题(转)
  2. sue的小球 牛客(区间dp)
  3. 电商api数据接口,淘宝item_cat_get,淘宝API接口分类!!!
  4. 关于未知的USB设备(设备描述符请求失败)的解决方法
  5. 关爱女性健康的移动产品竞品分析报告
  6. 为什么visio输出图片俩边有留白_Microsoft Office Visio导出图片添加边界的操作教程...
  7. 网络爬虫Python试验
  8. unity3d双面材质_unity3d中创建双面材质
  9. 4个免费又好用的wordpress企业主题
  10. objectc:dictionary使用