MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 651|回复: 21|关注: 0

[已解决] Matlab如何求取二值图形的中分线

[复制链接]

新手

25 麦片

财富积分


050


4

主题

57

帖子

0

最佳答案
大家好,最近遇到了一个问题:
         如图,一个已经二值化好的接近规则的图像,如何求取图像的中分线(我不知道这样叫是否准确,就是像我用ps画上去的那条线,基本把图像平分)。
         哪怕是一点思路或者是一个什么函数的提醒也好,我会尽力去试试,非常感谢大家!!

原始二值化图像

原始二值化图像

要求的线(ps画的)

要求的线(ps画的)

要求的线(ps画的)

要求的线(ps画的)

论坛优秀回答者

入门

370 麦片

财富积分


50500


0

主题

2633

帖子

87

最佳答案
  • 关注者: 40
发表于 2017-8-7 08:16:36 来自手机 | 显示全部楼层
没有啥子现成的函数,也不理解你这个线的含义 很不好下手
来自: 微社区

入门

94 麦片

财富积分


50500


6

主题

491

帖子

21

最佳答案
  • 关注者: 4
发表于 2017-8-7 08:28:50 | 显示全部楼层
(1)先判断图像的走向,你这个应该像对称的,找出对称轴大致方向;
(2)按照对称轴方向进行投影;
(3)如果几乎没有噪声的话,直接找投影值边界的中点即可;
       如果有噪声就先去噪吧

新手

25 麦片

财富积分


050


4

主题

57

帖子

0

最佳答案
 楼主| 发表于 2017-8-7 10:34:45 | 显示全部楼层
Angla2016 发表于 2017-8-7 08:16
没有啥子现成的函数,也不理解你这个线的含义 很不好下手

就是近似规则对称图形的对称线

新手

25 麦片

财富积分


050


4

主题

57

帖子

0

最佳答案
 楼主| 发表于 2017-8-7 10:35:31 | 显示全部楼层
stream2011 发表于 2017-8-7 08:28
(1)先判断图像的走向,你这个应该像对称的,找出对称轴大致方向;
(2)按照对称轴方向进行投影;
(3) ...

就是这个对称轴不知道用什么数学方法找,人眼一看就知道是这样画:'(

论坛优秀回答者

入门

370 麦片

财富积分


50500


0

主题

2633

帖子

87

最佳答案
  • 关注者: 40
发表于 2017-8-7 10:58:44 来自手机 | 显示全部楼层
唐sir 发表于 2017-8-7 10:35
就是这个对称轴不知道用什么数学方法找,人眼一看就知道是这样画

没有数学方法就不行,没发编程序
来自: 微社区

新手

25 麦片

财富积分


050


4

主题

57

帖子

0

最佳答案
 楼主| 发表于 2017-8-7 11:03:59 | 显示全部楼层
Angla2016 发表于 2017-8-7 10:58
没有数学方法就不行,没发编程序

我在想这种图形中分线的算法应该是以前有人编过吧,这比较通用,不针对特定图形,只要对称的图就可以

MATLAB 图像处理与计算机视觉
版块优秀回答者

入门

139 麦片

财富积分


50500


2

主题

164

帖子

30

最佳答案
  • 关注者: 9
发表于 2017-8-7 14:55:15 | 显示全部楼层 |此回复为最佳答案
  1. clc,clear
  2. close all
  3. a = im2bw(imread('1.png'));
  4. b = imdilate(a, ones(10));
  5. % imshow(b)
  6. ori = regionprops( b, 'Orientation' ); % 图像的方向

  7. center = regionprops( b, 'Centroid' );

  8. xy0 = center.Centroid;  % 图像的中心
  9. x = 1:size(a,2);
  10. y = xy0(2) + tan( -ori.Orientation * pi / 180 ) * ( x - xy0(1) );

  11. index = y < 1 | y > size(a,1);
  12. x(index) = [];
  13. y(index) = [];

  14. figure
  15. imshow(a)
  16. hold on
  17. plot(x, y, 'r', 'linewidth', 3)
  18. plot( xy0(1), xy0(2), 'w*' )
复制代码
最主要的就是先用形态学运算把图像变成一个连通区域,再利用regionprops函数求出图像的中心和方向,最终可以画出这条线,结果大概如下,感觉效果还行
res.jpg

入门

94 麦片

财富积分


50500


6

主题

491

帖子

21

最佳答案
  • 关注者: 4
发表于 2017-8-7 16:41:23 | 显示全部楼层
唐sir 发表于 2017-8-7 10:35
就是这个对称轴不知道用什么数学方法找,人眼一看就知道是这样画

圆的大小,间隔有规律吗,要充分利用已知条件,方向方向这些,旋转方向最多的一个方向

新手

25 麦片

财富积分


050


4

主题

57

帖子

0

最佳答案
 楼主| 发表于 2017-8-8 09:58:54 | 显示全部楼层
stream2011 发表于 2017-8-7 16:41
圆的大小,间隔有规律吗,要充分利用已知条件,方向方向这些,旋转方向最多的一个方向
...

是一个倾斜的有条纹圆柱体,所有尺寸都已知
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表