我是Matlab的新手。 我有一个图像块,如下图所示:

白色显示像素的值等于1,黑色显示像素的值等于0,

我想获取vertical only lines。 这意味着应删除水平线,如下所示:

我也想得到horizontal only lines。 这意味着应删除垂直线,如下所示:

如何在Matlab中执行此操作? 为此,我更喜欢进行形态学操作。

我认为您将需要定义更多规则,例如1)1个像素既不能水平也不能垂直,那么应该将其删除吗? 2)如果一条水平线和一条垂直线相交,那么删除水平线也会从垂直线中删除一个像素。 您要如何处理? 3)您是否同意调用构成一条线的一组像素所需的最小像素为2? 一旦定义了这些,就可以直接检测到感兴趣的黑色像素的连续窗口。

有趣的问题,因为有很多方法可以做到这一点。

本质上,您需要取出特定尺寸的连续像素。

我想解决这个问题的一种方法是与[1 1]或[1 1]'向量进行卷积,然后取出获得值2的所有元素。

bw(conv2(bw,[1 1],'same')==2)=0;

这仍然会留下单个像素,您可以轻松使用

bw = bwareaopen(bw,2) ;

这只是主要想法,您可能需要在边缘周围更加小心,或使用零填充以免conv2可能产生的边缘伪像)...

另一个想法是,使用霍夫变换来检测线并仅保留theta = 0或90度的线...

谢谢您的回答。一种新方法...但是第二个答案是正确和完整的。 +1为您的答案

假设您的图片位于以下BW中:

% detecting all connected regions:

B = bwboundaries(BW,4);

这导致包含所有"补丁"的单元阵列B,这些"补丁"是通过连接值为1的相邻单元而形成的,这些值从4个侧面之一(即非对角线)连接。

例如:

>> B{6}

ans =

3     7

3     8

3     7

每行是一个单元格坐标。第一列是其"行",第二列是其"列",并且第一个和最后一个单元格始终相同。

现在,我们需要遍历B中的单元格,并找出其中哪些是水平或垂直线,并将它们保存到新矩阵中。

% matrices for horizontal and vertical lines:

BWh = zeros(size(BW)); % horizontal lines

BWv = zeros(size(BW)); % vertical lines

for k = 1:numel(B)

% if the coordinates changes ONLY vertically:

% a vertical line is where all the coulmn indecies are the same

% and there are different row indices

if all(B{k}(1,2)==B{k}(:,2)) && B{k}(1,1)~=B{k}(2,1)

BWv(sub2ind(size(BW),B{k}(:,1),B{k}(:,2))) = 1;

end

% if the coordinates changes ONLY horizontaly:

% a vertical line is where all the row indecies are the same

% and there are different column indices

if all(B{k}(1,1)==B{k}(:,1)) && B{k}(1,2)~=B{k}(2,2)

BWh(sub2ind(size(BW),B{k}(:,1),B{k}(:,2))) = 1;

end

end

subplot 131

imagesc(BWh)

title('Horizontal lines')

subplot 132

imagesc(BWv)

title('Vertical lines')

在排除这些线之后,剩下的就是"对角线边缘",因此我们可以寻找到目前为止找不到的东西:

subplot 133

imagesc(BW & ~BWv & ~BWh)

title('Diagonal edges')

colormap 'gray'

此方法将忽略任何不是一个单元格粗线的内容,因此,例如,下图中中间的正方形将仅以对角线边缘模式显示:

对不起,有什么办法可以识别仅对角线的边缘吗?我更喜欢不使用图像减法。

尊敬的EBH,如果可能,请提供更多有关算法性能的注释

@ Babak.Abad我将在几个小时内添加更多评论。什么是仅对角线边缘?

对角线边缘表示不包含的像素(水平和垂直线)。例如,在最后一张图像中,(8,2),(4,6)处的像素是对角线。也不能如点(6,12)所示是单一的。对于未定义对角线边缘的错误以及我的英文写作不好,我深表歉意。还要再次感谢您花费我的时间。

@ Babak.Abad请参阅我的编辑以获取更多说明和"对角线边缘"提取。

非常感谢您提供完整而全面的答案,并且最近进行了更新。就速度和复杂性而言,您所有的方法都比我的方法(连接组件分析)好。

matlab中水平垂直线,关于Matlab:水平-垂直线相关推荐

  1. matlab中dist的命令,matlab dist函数

    dist--欧式距离加权函数(Euclidean distance weight function) 语法: Z = dist(W,P) df = dist('deriv') D = dist(pos ...

  2. matlab中错误使用fmincon,MATLAB中fmincon 函数问题

    MATLAB中fmincon 函数问题 Matlab的fmincon优化问题 请问: 各位高手帮忙看看我的程序又什么问题?显示错误 Error in ==> Fun at 33 [w,fval] ...

  3. matlab中集合的表示,Matlab常用命令集合

    1.常用命令-->管理命令和函数 addpath添加目录到MATLAB搜索路径doc在Web浏览器上现实HTML文档help显示Matlab命令和M文件的在线帮助helpwin helpdesk ...

  4. matlab中赋值和等号,matlab中的约等号怎么写?

    问题描述: matlab中的约等号怎么写? 我在用小波做数字水印提取时,求了原始图像与待检测图像(带水印)的小波变换的水平低频区分量的差值,根据差值是否接近于0恢复水印~我是新手一个,很多都不懂的~麻 ...

  5. matlab中oad什么意思,MATLAB函数参考

    MATLAB主要命令汇总: 附录1.1 管理用命令 函数名    功能描述    函数名    功能描述 addpath    增加一条搜索路径    rmpath    删除一条搜索路径 demo  ...

  6. MATLAB中 raw(,利用Photoshop + Matlab 解析10-bit RAW

    1.Photoshop处理RAW 运行Photoshop,打开RAW图.在跳出的选项窗口填入图像基本信息: 宽度.长度:Sensor长宽: 通道数量:1: 位深(Depth):16Bits: 字节顺序 ...

  7. m 文件 dll matlab 中调用_Java与MatLab混编

    该篇介绍Java与MatLab的混合编程 环境:Windows10,Jdk 1.8.0_261 64位,MatLab r2018b 64位 先安装MatLab MatLab安装 一.打开MatLab, ...

  8. matlab中向量norm,【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关

    [Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处外链网址已屏蔽 norm范数使用 help norm norm ...

  9. Matlab中的类(Class),Matlab中的class用法

    Matlab中的class主要是返回对象的数据类型,用法为class(); 可能的返回值有: double          -- Double precision floating point nu ...

  10. matlab中udt函数,《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算...

    本节书摘来自异步社区<MATLAB信号处理超级学习手册>一书中的第2章,第2.5节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区"异步社区"公 ...

最新文章

  1. 最新OCR开源神器来了!
  2. 算法(掘金上经典的文档)
  3. Windows核心编程 第五章 作业(上)
  4. 冰豹lua驱动设置_通过编写“猜数字”游戏学习 Lua | Linux 中国
  5. 地理文本处理技术在高德的演进(下)
  6. Chrome浏览器用IDM插件下载出现401、403、404错误
  7. 服务器 分辨率问题 显示器不显示不出来,显示器没有最佳分辨率及分辨率调不了的解决方法...
  8. 基于selenium的码市外包信息爬虫
  9. Python金融科技:cufflinks绘制金融图表
  10. 大佬给总结的单片机看门狗详解很有用
  11. java时间戳是什么类型_java 获取时间戳的三种方式
  12. 0030铁道部花大价钱打造的12306订票网站的核心模型设计思路其实胜过无数网站
  13. JavaScript 学习手册二
  14. 化工厂中用计算机系统控制物料比,2015河南省全国计算机等级考试二级笔试试卷VB考资料...
  15. java学习推荐书籍
  16. python去水印如何制作mask_浅谈图像处理中掩膜(mask)的意义
  17. 大数据营销的十个关键内容
  18. 计算机文字排版竞赛标准,文字录入与排版高手竞赛方案(Word2010)
  19. 小车手app安卓版下载_汽车助手安卓版app下载_汽车助手安卓版v1.0.0 手机版v1.0.0 手机版 - Win7旗舰版...
  20. bno055传感器数据不更新_Bosch BNO055 应用特定型传感器节点实现智能化 9 轴绝对方向感应...

热门文章

  1. EXCEL按照文字颜色统计数量
  2. int 和 Integer 有什么区别
  3. 【BugKu-CTF论坛writeup(杂项)】妹子的陌陌
  4. Angr-CTF学习笔记11-13
  5. jq input输入框失焦、聚焦
  6. Idea一键导入所有缺省的包
  7. 使用AcronisTrueImage 2020迁移thinkpad x1 carbon 2016(4th gen) win10系统到1t的固态硬盘970evoPlus的过程
  8. 不懂PS也制作图片倒影效果 – 推荐2个好用的在线为图片添加倒影效果的网站
  9. 宏转录组研究成果荣登10分JHM
  10. MasterCAM螺旋线的两种画法:螺旋线命令和插件方法