10.1.2 线检测

  • 检测指定方向的线

      f = imread('c:\图像\线检测样本.tif');g = abs(imfilter(double(f),w));figure,imshow(f)figure,imshow(g)gtop = g(1:120,1:120);gtop = pixeldup(gtop,4);figure,imshow(gtop,[])gbot = g(end-119:end,end-119:end);gbot = pixeldup(gbot,4);figure,imshow(gbot,[]);g = abs(g);figure,imshow(g,[])T = max(g(:));g = g >= T;figure,imshow(g)
    

    图像1为原始图像

    图像2使用-45度检测器处理后的结果

    图像3是图像2的左上角放大图

    图像4是图像2的右下角放大图

    图像5为图像2的绝对值

    图像6为值满足条件 g >= T的所有点(白色),其中g是图像5所示的图像

10.1.3 使用edge函数的边缘检测


  • Sobel边缘检测器

Sobel检测器的调用方法为:

[g, t] = edge(f,‘sobel’,T,dir)

其中,f是输入图像,T是一个指定的阈值,dir指定检测边缘的首选方向:‘horizontal’,‘vertical’或’both’(默认值)。g是在被检测到边缘的位置处为1而在其他位置为0的逻辑类图像。输出参数是可选的,它是函数edge所用的阈值。若指定了T的值,则t = T。否则,若T未被赋值(或为空,[]),则函数edge会令t等于它自动确定的一个阈值,然后用于边缘检测。在输出参量中要包括t的主要原因之一是为了得到一个阈值的初始值。若使用语法g = edge(f)或[g,t] = egde(f),则函数edge会默认使用Sobel检测器。

图像1为原始图像

图像2为使用带有自动确定的阈值的一个垂直Sobel掩模后,函数edge导致的结果;

图像3为使用指定阈值后的结果

图像4是使用指定阈值来决定垂直边缘和水平边缘的结果

图像5使用函数imfilter(具有指定掩模和阈值)计算45度边缘的结果;

图像6是-45度边缘的结果


  • Prewitt边缘检测器(使用图10.5©)

    基本语法:[g,t] = edge(f,‘prewitt’,T,dir)

    该函数的参数和Sobel的参数相同。Prewitt检测器比Sobel检测器在计算上要简单一些,但比较容易产生一些噪声(系数为2的Sobel检测器可提供一种平滑作用)。

  • Roberts边缘检测器(使用图10.5(d))

    基本语法:[g,t] = edge(f,‘roberts’,T,dir)

  • Laplacian of a Gaussian

  • 零交叉检测器

    这种检测器基于与LoG方法相同的概念,但卷积是使用指定的滤波函数H执行。调用语法为

    [g, t] = edge(f,‘zerocross’,T,H)

    其他参数的解释与LoG中的参数相同

  • Canny边缘检测器

  • Sobel,LoG和Canny边缘检测器的比较

      f = imread('c:\图像\边缘检测样本.tif');[g_sobel_default,ts] = edge(f,'sobel');[g_log_default,tlog] = edge(f,'log');[g_canny_default,tc] = edge(f,'canny');figure,imshow(g_sobel_default)figure,imshow(g_log_default)figure,imshow(g_canny_default)g_sobel_best = edge(f,'sobel',0.05);g_log_best = edge(f,'log',0.003,2.25);g_canny_best = edge(f,'canny',[0.04 0.10],1.5);figure,imshow(g_sobel_best)figure,imshow(g_log_best)figure,imshow(g_canny_best)
    

    图像1 - 3分别为使用默认选项’Sobel’,'log’和’canny’得到的边缘图像:


图像4 - 6交互地显示原图像的主要特征所得到的结果,该结果减少了无关的细节。这是到目前为止Canny边缘检测器产生的最好结果

10.2 使用Hough变换的线检测

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E9EdThVV-1593138195503)(https://s2.ax1x.com/2019/07/13/Zhl4vn.png)]

  •   f = imread('c:\图像\Hough函数样本.tif');f = zeros(101,101);f(1,1) = 1;f(101,1) = 1;f(1,101) = 1;f(101,101) = 1;f(51,51) = 1;H = hough(f);figure,imshow(H,[])figure,imshow(f)figure,imshow(H,[])
    

10.2.1 使用Hough变换做峰值检测

10.2.2 使用Hough变换做线检测和链接

10.3 阈值处理

10.3.1 全局阈值处理

  • 函数graythresh能够计算阈值,其语法为:T = graythresh(f)

    其中,f是输入图像,T是产生的阈值。为了分割图像,我们在函数im2bw中使用阈值T。因为阈值已被归一化到范围[0,1]内,因此必须在使用阈值之前将其缩放到合适范围。例如,若f是uint8类图像,则我们在使用T之前要让T乘以255.

  • 计算全局阈值

      f = imread('c:\图像\计算阈值样本.tif');T = 0.5*(double(min(f(:))) + double(max(f(:))));done = false;while~doneg = f >= T;Tnext = 0.5*(mean(f(g)) + mean(f(~g)));done = abs(T - Tnext) < 0.5;T = Tnext;endfigure,imshow(f)T2 = graythresh(f)T2 =0.3961>> T2 * 255ans =101while~doneg = f >= T2;T2next = 0.5*(mean(f(g)) + mean(f(~g)));done = abs(T2 - Tnext) < 0.5;T2 = T2next;endfigure,imshow(g)
    

    图1为原图像,图2为策略迭代的结果,图3为使用graythresh的结果

10.3.2 局部阈值处理


f = imread(‘c:\图像\计算阈值样本.tif’);

 g = imsubtract(imadd(f, imtophat(f, strel('disk', 3))),imtophat(f, strel('disk', 3)));subplot(1, 3, 1), imshow(f), title('原图');subplot(1, 3, 2), imshow(g), title('顶帽后');subplot(1, 3, 3), imshow(im2bw(g, graythresh(tofloat(g))))title('顶帽后进行阈值处理');

数字图像处理(冈萨雷斯版)学习笔记(6)第10章相关推荐

  1. 数字图像处理(MATLAB版)学习笔记(1)——第1章 绪言

    0.下定决心 当当入手数字图像处理一本,从此开此正式跨入数字图像处理大门.以前虽然多多少少接触过这些东西,也做过一些相关的事情,但感觉都不够系统,也不够专业,从今天开始,一步一步地学习下去,相信会有成 ...

  2. PMBOK(第六版) 学习笔记 ——《第七章 项目成本管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  3. PMBOK(第六版) 学习笔记 ——《第六章 项目进度管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  4. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第10章 分析句子的意思

    第10章 分析句子的意思 10.1 自然语言理解 查询数据库 自然语言.语义和逻辑 10.2 命题逻辑 10.3 一阶逻辑 一阶定理证明 一阶逻辑语言总结 真值模型 独立变量和赋值 量化 量词范围歧义 ...

  5. 数字图像处理--冈萨雷斯第4版--第二章 数字图像基础

    数字图像处理--冈萨雷斯版--第二章 第二章 数字图像基础 2.1 视觉感知要素 2.1.1 人眼的结构 2.1.2 人眼中图像的形成 2.1.3 亮度适应与辨别 2.2 光和电磁波谱 2.3 图像感 ...

  6. 数字图像处理--冈萨雷斯第4版--第一章 绪论

    数字图像处理--冈萨雷斯版--第一章 绪论 第一章 绪论 1.1 什么是数字图像处理 1.2 数字图像处理的起源 1.3 数字图像处理技术应用领域实例 1.3.1 伽马射线成像 1.3.2 X射线成像 ...

  7. PMBOK(第六版) 学习笔记 ——《第一章 引论》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  8. PMBOK(第六版) 学习笔记 ——《考试、成绩、PDU》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  9. PMBOK(第六版) 学习笔记 ——《第十章 项目沟通管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

最新文章

  1. linux 代码获取当前路径,【linux】shell代码,获取当前路径,创建文件夹
  2. 【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?...
  3. 为TIF、JPG图片添加地理坐标/平面直角坐标
  4. javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法
  5. [原创]修改oracle 数据库默认时间格式
  6. java calendar字符串显示_java关于字符串和日期的代码展示
  7. 水星无线网dns服务器是什么,水星路由dns设置教程,-1
  8. aspcms模板转php,aspcms转换zzzcms,aspcms迁移数据,aspcms替换模板,aspcms模板转换-下载-zzzcms官网-开源免费建站系统...
  9. c++ sleep函数_我们如何在C,C ++中控制/安排线程的执行?
  10. SAP License:MM-采购订单migo,101收货,有三种方式冲销,可以使库存减少,有何不同?
  11. 看病要排队 (hdu1873,优先队列)
  12. 【MATLAB】设定坐标的轴的范围
  13. 用文本文档写的代码怎么运行?
  14. 个人创建微信公众号步骤
  15. 1999年冬发出第一个论坛帖,弹指二十年后,他们遇见了AI
  16. 360手机号码归属地查询抓取、免费稳定高效手机号码归属地查询
  17. BBQ EasyBuns
  18. java基于ssm的论坛贴子网站ssm论坛项目发帖子网站论坛系统论坛源码
  19. 5-5中央处理器-指令流水线
  20. 21天打卡挑战 - 经典算法之折半查找

热门文章

  1. Django期末考试复习
  2. netstat,ss,nc ,wget,dig
  3. MFC获取主机IP地址
  4. java的jar文件
  5. 使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情、5日均线、10日均线行情并显示
  6. openssl私有CA证书签发与单双向认证
  7. 区块链+金融潜力有多大?透视这30家金融机构的布局!
  8. Mac U盘安装High Sierra
  9. 本科毕业论文参考文献可以随便写吗?
  10. 关于 git pull 和 git pull origin develop 的区别