- 在线时间
- 213 小时
- 最后登录
- 2017-9-17
- 注册时间
- 2014-9-28
- 听众数
- 17
- 收听数
- 6
- 能力
- 4 分
- 体力
- 18287 点
- 威望
- 0 点
- 阅读权限
- 200
- 积分
- 5858
- 相册
- 0
- 日志
- 0
- 记录
- 4
- 帖子
- 567
- 主题
- 62
- 精华
- 0
- 分享
- 11
- 好友
- 71
升级   17.16% TA的每日心情 | 奋斗 2017-9-16 20:51 |
---|
签到天数: 164 天 [LV.7]常住居民III 超级版主 - 自我介绍
- 来自哈工大,喜欢数学建模
群组: 2015美赛优秀论文解析 群组: 2014第三期英语写作 群组: 数学中国_哈工大群 群组: 数学建模 群组: 2016研赛备战群组 |
本帖最后由 WSHXPY 于 2015-2-2 10:56 编辑
现在回复楼主不知是否有点晚了,楼主的问题我也不能完全回答上来(不过本着互相交流学习的目的,还是有多少说多少吧,如果楼主你已经解决,不妨告诉我一下,多谢了),我只求出来了线段的长度,角度始终不知如何求解是好?只是有一个初始的方向,但进行不下去了。
clear all;
I=imread('madio.jpg');
I=im2bw(I);%把照片转化为二值图片
BW=edge(I,'sobel');%用“sobel”滤波器找去边缘,结果见提取边缘图
% 注意滤波器选择使用‘sobel’,提取出的边缘都是连续的,而用‘prewitt’等其他滤波器边缘不是闭合的导致使用regiongroups计算 % 线段条数时增多,好像是35条,实际22条
figure;
imshow(BW);
figure;imshow(I)
STATS = regionprops(BW, 'MajorAxisLength')%用“regiongroups”统计处有几条线段和每条线段边缘有多少个像素点组成
L=length(STATS);%结构体的长度
%求出图中每条线段的长度,即为近似每条线段边缘所占像素点除以2,不除也可以,统一量纲,或除以一个比例即可,把结果放入一个22×1的矩阵Len中
Len=zeros(22,1);
for i=1
Len(i,1)=STATS(i,1).MajorAxisLength/2;
end
有关夹角的求解的几点不成熟的思考:
方法1,画出散点图,去拟合多条线段,斜率可得,自然夹角可求,不过我个人matlab不太好,不知道如何在一幅图中分别对不同区域进行拟合;
clear all;
I=imread('madio.jpg');
I=im2bw(I);
[y,x]=find(I==0);
plot(x,y,'.');
方法二:分别求出每条线段的两个端点,端点有了,长度,夹角都可以求解,不过个人不知如何下手,希望有大神给个回复。
注:由于代码复制上去可能导致显示出一些表情符,我给出了源程序
|
-
madio.jpg
(63.74 KB, 下载次数: 234)
原图
-
二值化.jpg
(39.44 KB, 下载次数: 258)
二值化处理
-
提取边缘.jpg
(56.06 KB, 下载次数: 227)
sobel滤波
-
散点图.jpg
(118.61 KB, 下载次数: 232)
散点图
-
-
ceshi.m
284 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
源程序
|