【数字图像处理matlab】(边界跟踪-光栅扫描法)

调用Matlab自带图像测试,光栅扫描法实现边界跟踪。

function coor = edge_search(I)
%边缘跟踪
%输入:灰度图矩阵,用Matlab自带图像 rice.png 进行测试
%输出:米粒边缘坐标(顺时针)
%调用------------------------------------
%I=imread('rice.png');edge_search(I);
%----------------------------------------%转化为标记矩阵
%L=bwlabel(BW,n) 返回一个和BW大小相同的L矩阵,包含了标记了BW中每个联通区域的类别标签,n的值为4/8,默认为8(连通寻找)
I = I >130;   %得到logical型矩阵
L = bwlabel(I);%标记连通图像
[row,col] = size(L);
connected = zeros(row,col);
labeled = [];
coor = {};
curr_coor = [];%8邻域坐标
offsets = [0 -1; -1 -1; -1 0; -1 1; 0 1; 1 1; 1 0; 1 -1; 0 -1];
flag = true;for i = 1:rowfor j = 1:col%判断L(i,j)为前景 且 未被标记 且 该区域未被标记%[ismember(a,b),返回与a大小相同的逻辑数组如果a中元素属于b,a中相应位置返回1,否则返回0]if L(i,j) ~= 0 && connected(i,j) == 0 && ~ismember(L(i,j),labeled)%初始方向dir = 2;%保存当前区域标签labeled = [labeled L(i,j)];pix = [i,j];curr_coor = [curr_coor; i j];%坐标入队flag = true;while flagflag = false;%循环到每圈初始时将方向初始化if pix(1,1) == i && pix(1,2)== jdir = 2;end%邻域搜索for k = dir:dir+7tmp = mod(k,8);if tmp == 0tmp = 8;endn_pix = bsxfun(@plus,pix, offsets(tmp,:));%每圈终止if pix(1,1) == i && pix(1,2)== j && length(curr_coor) > 2 && n_pix(1,1) == curr_coor(2,1) && n_pix(1,2) == curr_coor(2,2)flag = false;break;end%判断坐标在范围内if n_pix(1) >= 1 && n_pix(1) <= row && n_pix(2) >= 1 && n_pix(2) <= colif L(n_pix(1),n_pix(2)) ~= 0%标记(画图connected(n_pix(1),n_pix(2)) = 255;                            %保存坐标值curr_coor = [curr_coor; n_pix(1) n_pix(2)];                                               %更新坐标pix = [n_pix(1),n_pix(2)];flag = true;%更新反方向的下一方向dir = mod(tmp + 5,8);if dir == 0dir = 8;endbreak;endendendend%保存一圈坐标coor = [coor; curr_coor];curr_coor = [];endend
end%输出显示
subplot(1,2,1);imshow(I);
title('原图像');
subplot(1,2,2);imshow(connected,[]);
title('边界跟踪(光栅扫描法)');
end

测试:

【数字图像处理matlab】(边界跟踪-光栅扫描法)相关推荐

  1. 【资源分享】数字图像处理MATLAB版冈萨雷斯+中文高清版+随书源码链接

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 1.数字图像处理MATLAB版冈萨雷斯+中文高清版 2.数字图像处理MATLAB版冈萨雷斯随书源码 1.数字图像处 ...

  2. 【数字图像处理matlab】(HSI变换融合算法)

    [数字图像处理matlab](HSI变换融合算法) 输入一张高分辨率的全色影像HR,一张低分辨率的多光谱影像MS,采用HSI变换融合算法实现影像融合,其中RGB与HSI影像的相互转换调用自定义函数RG ...

  3. 《数字图像处理 MATLAB版》学习笔记

    学习教材:<数字图像处理 MATLAB版>(第二版) 冈萨雷斯 学习过程中的图片代码和及我收集的一些关于数字图像处理的其他学习资料,需要的可以评论留下邮箱(需要购买专栏),加油 文章目录 ...

  4. 数字图像处理MATLAB学习笔记(五)

    数字图像处理MATLAB学习笔记(五) Color Image Processing 1 Color Image Representation in MATLAB 这里不多说了,彩色图片在计算机中以R ...

  5. [数字图像处理Matlab]任选一幅灰度图,自行编写程序,完成直方图均衡化。鼠鼠的数字图像处理实验要求:不能用MATLAB自带的histeq函数实现直方图均衡化

    数学理论前提:见数字图像处理(第三版) 李俊山等编著  p50-53 1.利用imhist函数统计像素点个数 Im = imread("C:\Users\鼠鼠\Desktop\数字图像处理m ...

  6. 图像处理----入门资料,Matlab r2019最新版,r2008a,《数字图像处理》冈萨雷斯 第三版 《数字图像处理 Matlab 版》

    研究生想研究的方向是图像处理,现在离开学还有四个月,希望能稍微入门吧.同时也希望通过博客的形式记录一下学习的进度,学习的心情.目前学习两周,安装了基本的软件,收集书籍,学习了灰度变换,空间滤波,频率滤 ...

  7. 数字图像处理matlab作业,数字图像处理matlab大作业

    <数字图像处理matlab大作业>由会员分享,可在线阅读,更多相关<数字图像处理matlab大作业(23页珍藏版)>请在人人文库网上搜索. 1.几个图像处理实例,matlab ...

  8. 数字图像处理MATLAB学习笔记(一)

    数字图像处理MATLAB学习笔记(一) 灰度转换与空间滤波 本节主要使用Matlab语言进行灰度转换与空间滤波的使用 并对相关数学原理进行总结 1. Intensity Transformer Fun ...

  9. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

最新文章

  1. 阶乘的累加(3.11)(Java)
  2. Cocos Creator 为Button添加事件的两种方法
  3. Authentication 方案优化探索(JWT, Session, Refresh Token, etc.)
  4. Fastboot和Recovery
  5. POJ2446-Chessboard【最大匹配,二分图,奇偶建图】
  6. SCCM 2007 R2 报表问题(二)
  7. 软件评测-信息安全-应用安全-资源控制-用户登录限制(上)
  8. nlogn最长单调递增
  9. canopy java_在Windows上安装带有Enthought Canopy的Theano
  10. c语言程序设计教程 郭浩志,C语言程序设计教程答案杨路明郭浩志.doc
  11. Hibernate的SQL查询
  12. 拖放drag drop(PyQt或Qt for python)
  13. 【每日一P】利用通道抠图更换天空
  14. @Valid对页面传参的校验问题
  15. 自制适合城市家庭的鱼菜共生系统
  16. win10安装账户卡住_安装win10系统卡住不动的原因和处理方法
  17. 用计算机的声音编辑工具录制一段语音信号,传媒2020年7月《影视录音基础》课程考试在线作业考核试题题目【标准答案】...
  18. 浅浅瞅瞅RSA-PSS 算法
  19. 我们普通生的出路在哪里
  20. java版能播flac_Java中如何写FLAC文件实例

热门文章

  1. 第24节 if语句的嵌套
  2. HTTPS成“新宠”,七牛云推出SSL证书免费申请 并宣布HTTPS调价
  3. 调用百度地图显示当前位置
  4. 汉字和数字站几个字节,估算内存占用情况
  5. CentOS7的LVM动态扩容
  6. 亚洲名人人脸数据库制作
  7. mysql 约束基本概念 主键约束 外键约束
  8. 九、PyQt5多线程编程
  9. 记一次jdbc连接sqlserver问题
  10. 2016年年终总结----拒绝平庸的一年