边缘检测matlab算法汇总

1.      基于一阶微分算子检测边缘图像

一阶微分边缘算子又称梯度边缘算子,它是利用图像在边缘处的阶跃性,及图像梯度在边缘去得极大值得特征性进行边缘检测。

Sobel算子:image =edge(in_image,’sobel’,threshold,direction);

Prewitt算子: image = edge(in_image,’prewitt’,threshold,direction);

Roberts算子: image = edge(in_image,’sobel’,threshold);

其中,in_image 是灰度图像,threshold是阈值,direction是方向。

优点:实现简单、运算速度快

缺点:易受噪音影响,主要原因其一是实际边缘灰度与理想边缘灰度存在差异,有可能检测出多个边缘;其二是算子尺度固定不利于检测出不同尺度的边缘。

Canny算子:image = edge(in_image,’canny’,threshold);

其中,in_image 是灰度图像,threshold是阈值。

canny算子主要在原一阶微分算子基础上进行了扩展,增加了非最大值抑制和双阈值两项改进。利用非最大值抑制不仅可以有效地抑制多响应边缘,而且还可以提高边缘的定位精度。利用双阈值可以有效减少边缘的漏检率。主要分为4步进行:高斯平滑去噪、计算梯度与方向角、非最大值抑制、滞后阈值化。

2.      基于二阶微分算子检测边缘图像

二阶微分边缘检测算子是利用图像在边缘处的阶跃性导致图像二阶微分在边缘处出现零值这一特性进行边缘检测的,因此该算法又称零点算子和拉普拉斯算子。

高斯拉普拉斯方法(laplacian of Gaussian, LoG):image = edge(in_image,’log’,threshold);

其中,in_image 是灰度图像,threshold是阈值。

Log算子检测边缘的结果要由于roberts和sobel算子,检测出来的边缘比较完整,且抗噪能力较好。

3.      基于SUSAN特征检测算子的边缘提取

SUSAN(Smallest Univalue Segment AssimilatingNucleus),又称最小核值相似区。它使用一个原型模板和一个圆的中心点,通过圆心点像元值与模板圆内其他像元值的比较,统计出圆中心点像元值近似的像元数量,并与所设定的阈值进行比较,以确定是否是边缘。

[plain] view plain copy
  1. function image_out = susan(im,threshold)
  2. % 功能:实现运用SUNSAN算子进行边缘检测
  3. % 输入:image_in-输入的待检测的图像
  4. %       threshold-阈值
  5. % 输出:image_out-检测边缘出的二值图像
  6. % 将输入的图像矩阵转换成double型
  7. d = length(size(im));
  8. if d==3
  9. image=double(rgb2gray(im));
  10. elseif d==2
  11. image=double(im);
  12. end
  13. % 建立SUSAN模板
  14. mask = ([ 0 0 1 1 1 0 0 ;0 1 1 1 1 1 0;1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1;0 1 1 1 1 1 0;0 0 1 1 1 0 0]);
  15. R=zeros(size(image));
  16. % 定义USAN 区域
  17. nmax = 3*37/4;
  18. [a b]=size(image);
  19. new=zeros(a+7,b+7);
  20. [c d]=size(new);
  21. new(4:c-4,4:d-4)=image;
  22. for i=4:c-4
  23. for j=4:d-4
  24. current_image = new(i-3:i+3,j-3:j+3);
  25. current_masked_image = mask.*current_image;
  26. %   调用susan_threshold函数进行阈值比较处理
  27. current_thresholded = susan_threshold(current_masked_image,threshold);
  28. g=sum(current_thresholded(:));
  29. if nmax<g
  30. R(i,j) = g-nmax;
  31. else
  32. R(i,j) = 0;
  33. end
  34. end
  35. end
  36. image_out=R(4:c-4,4:d-4);
[plain] view plain copy
[plain] view plain copy
  1. susan_threshold函数
[html] view plain copy
  1. function thresholded = susan_threshold(image,threshold)
  2. % 功能:设定SUSAN算法的阈值
  3. [a b]=size(image);
  4. intensity_center = image((a+1)/2,(b+1)/2);
  5. temp1 = (image-intensity_center)/threshold;
  6. temp2 = temp1.^6;
  7. thresholded = exp(-1*temp2);

优点:抗噪能力好、计算量小速度快、可以检测边缘的方向信息。

边缘检测matlab算法汇总的更多相关文章

  1. 排序算法汇总(C/C++实现)

    前言:     本人自接触算法近2年以来,在不断学习中越多地发觉各种算法中的美妙.之所以在这方面过多的投入,主要还是基于自身对高级程序设计的热爱,对数学的沉迷.回想一下,先后也曾参加过ACM大大小小的 ...

  2. 遗传学详解及Matlab算法实现

    遗传学算法概述 从之前转载的博客<非常好的理解遗传算法的例子>中可以知道,遗传学算法主要有6个步骤: 1. 个体编码 2. 初始群体 3. 适应度计算 4. 选择运算 5. 交叉运算 6. ...

  3. matlab算法转为c语言注意事项

    matlab算法转为c语言后,影响c语言效率的关键在于multiword的产生,基于此会有multiword加减法和乘除法,极大消耗资源,减少甚至消除multiword很重要,需注意的是:算法中尽量减 ...

  4. JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)

    1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...

  5. 【机器学习】 Matlab 2015a 自带机器学习算法汇总

    MATLAB机器学习没看到啥教程,只有一系列函数,只好记录下: MATLAB每个机器学习方法都有很多种方式实现,并可进行高级配置(比如训练决策树时设置的各种参数) ,这里由于篇幅的限制,不再详细描述. ...

  6. 数字图像处理:基于MATLAB的车牌识别项目 标签: 图像处理matlab算法 2017-06-24 09:17 98人阅读 评论(0)

    学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用 ...

  7. matlab算法

    流水线型车间作业调度问题遗传算法Matlab源码流水线型车间作业调度问题可以描述如下:n个任务在流水线上进行m个阶段的加工,每一阶段至少有一台机器且至少有一个阶段存在多台机器,并且同一阶段上各机器的处 ...

  8. Python: PS 图层混合算法汇总

    本文用 Python 实现了PS 中的图层混合算法,把很多常见的图层混合算法都汇总到了一起,比起以前写的算法,就是用矩阵运算代替了很耗时的for 循环,运行效率有所提升.具体的代码如下: import ...

  9. 【matlab系列汇总】小白博主的matlab学习实战快速进阶之路(持续更新)

    我把之前在学习和工作中使用matlab的技巧和使用教程等相关整理到这里,方便查阅学习,如果能帮助到您,请帮忙点个赞: MATLAB可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程 ...

随机推荐

  1. 基础篇:3.1)规范化:3d草绘

    本章目的:3d草绘不同于cad工程图,但也有自己的规范要求.草绘要多多练习. 1.建模草图绘制 草图是大多数 3D 模型的基础.通常,创建模型的第一步是绘制草图,随后可以从草图生成特征.将一个或多个特 ...

  2. [蓝桥杯][2016年第七届真题]路径之谜(dfs)

    题目描述 小明冒充X星球的骑士,进入了一个奇怪的城堡. 城堡里边什么都没有,只有方形石头铺成的地面. 假设城堡地面是 n x n 个方格.[如图1.png]所示. 按习俗,骑士要从西北角走到东南角. ...

  3. python自动化day4-函数嵌套、名称空间、作用域、装饰器

    1.函数嵌套 #函数的镶套调用:在调用一个函数的过程中,又调用其他函数 def max2(x,y): if x > y: return x else: return y def max4(a,b ...

  4. TreeSet和TreeMap不能存放重复元素?能不能存放null?

    问题一:本来认为TreeMap不能存放重复元素?其实并非如此: 其实一般情况下是不允许存放重复元素的,但是它并非这么死板,在一些情况下是可以存放重复元素的,存了又会有引入其他问题. 问题二:能不能存放 ...

  5. GoldenGate安装配置

    GOLDENGATE安装 1. 下载与数据库对应版本的goldengate安装介质. 2. 创建goldengate系统用户,设置用户环境变量,如果是oracle,建议直接使用oracle作为用户安装 ...

  6. String字符串排序1.8 lamda表达式以及1.7自定义排序

    // 1.8 public class text { public static void main(String[] args) { String s1 = "哈哈哈11,呵呵呵22,嘿嘿 ...

  7. ubuntu16.04 安装python3.6

    https://www.cnblogs.com/yjlch1016/p/8641910.html

  8. Fiddler模拟发送post请求

    fiddler在进行接口测试时,会模拟post请求,发送不同的请求参数,返回不同的结果,今天我们就来分享一下,怎么用Fiddler工具模拟post请求: 打开Fiddler工具,在右侧点击“compo ...

  9. Android JPush极光推送应用

    JPush纠结了5-6个小时,一直报下面的错误,纠结! [AndroidUtil] AndroidManifest.xml missing required intent filter for Pus ...

  10. 九度oj 1031 xxx定律 2009年浙江大学计算机及软件工程研究生机试真题

    题目1031:xxx定律 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5153 解决:3298 题目描述:     对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n ...