版块导航
正在加载中...
客户端APP下载
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(2696)
>
导师招生
(160)
>
文献求助
(155)
>
虫友互识
(139)
>
休闲灌水
(95)
>
考博
(56)
>
招聘信息布告栏
(54)
>
硕博家园
(41)
>
基金申请
(38)
>
论文投稿
(38)
>
攻关文献(高奖励)
(35)
>
仿真模拟
(30)
>
博后之家
(26)
>
SciFinder/Reaxys
(17)
>
教师之家
(17)
>
找工作
(14)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
计算模拟
»
分割图的邻接矩阵仿真
2
1/1
返回列表
查看: 530 | 回复: 1
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
xiyue6911
新虫
(小有名气)
应助: 0
(幼儿园)
金币: 421.2
散金: 323
帖子: 79
在线: 35小时
虫号: 3927522
注册: 2015-06-16
专业: 计算机应用技术
[交流]
分割图的邻接矩阵仿真
小弟最近研究基于对象的目标检测,第一步进行多尺度分割,
右图为待转化的分割图像,左图为邻接矩阵,行和列表示[1 2 3 4 5 6 7];
关键是,区域相连判断,思路:遍历区域边界,unique边界点的8邻域;
现存问题:如何将邻接矩阵进行可视化,要用labview吗?
自己写的将分割好的图像转化为邻接矩阵:
CODE:
x = repmat(uint8(0),[512 512]);
x(1:512,256)=255;x(170,1:256)=255;x(340,1:256)=255;x(85,256:356)=255;x(170,356:512)=255;x(340,356:512)=255;
x(85:340,356)=255;x(390,356:456)=255;x(450,356:456)=255;x(390:450,356)=255;x(390:450,456)=255;
x = ~im2bw(x);
[L num] = bwlabel(x,8);%邻接区域个数
regionmat = zeros(num);%存储邻接矩阵
imshow(L);
stats = regionprops(L);%构造区域个节点;
for i = 1:num
node(i).id = i;
node(i).data = stats(i);
node(i).relaedge = [1 1 1];
node(i).weight = [1 1 1];
end
[r c] = find(L==0);%遍历所有边界点
%遍历边界点的8邻域,构造区域邻接集合
[r1 c1] = size(L);
L_new = zeros(r1+2,c1+2);
L_new(2:(size(L_new,1)-1),2:(size(L_new,2)-1)) = L;
col = 8;%最多连通区域;
for i = 1:(size(r,1))
temp = [L_new(r(i)-1+1,c(i)-1+1) L_new(r(i)-1+1,c(i)+1) L_new(r(i)-1+1,c(i)+1+1);
L_new(r(i)+1,c(i)-1+1) L_new(r(i)+1,c(i)+1) L_new(r(i)+1,c(i)+1+1);
L_new(r(i)+1+1,c(i)-1+1) L_new(r(i)+1+1,c(i)+1) L_new(r(i)+1+1,c(i)+1+1);];
p = zeros(1,col);
temp = unique(temp(:));
temp = setdiff(temp,0);
p(1:length(temp)) = temp;
relas(i,:) = p;
end
relas = unique(relas,'rows');
%赋值邻接矩阵
for i = 1:size(relas,1)
temp =setdiff(relas(i,:),0);
cn = nchoosek(temp,2);
for j =1:size(cn,1)
regionmat(cn(j,1),cn(j,2)) = 1;
end
end
disp('regionmat:');disp(regionmat);
测试.JPG
[
Last edited by dbb627 on 2015-11-14 at 14:46
]
回复此楼
» 猜你喜欢
津理工大学晶体材料全国重点实验室刘红军教授课题组招收博士生一名
已经有0人回复
【原创讨论】从电子约束到物质编辑:一套可迭代的环形磁场科技树
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有167人回复
【方案分享】单环磁场+轴心控制+偏转导出电子束约束系统(可行性实验)
已经有6人回复
【修正版】单环用磁约束低速电子实验方案(简化版)
已经有0人回复
桂林理工大学物理学专业招收调剂,还有三个名额!!!
已经有22人回复
考博自荐
已经有4人回复
山东大学第二批博士研究生招生
已经有0人回复
中国科学院东莞材料科学与技术研究所-2026年博士招生-吴昊研究员-磁学与自旋电子学
已经有0人回复
《电磁学》教材推荐
已经有1人回复
【急招】合肥工大核聚变材料计算方向2026级工程博士生
已经有4人回复
高级回复
1楼
2015-10-27 17:37:27
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
xiyue6911
新虫
(小有名气)
应助: 0
(幼儿园)
金币: 421.2
散金: 323
帖子: 79
在线: 35小时
虫号: 3927522
注册: 2015-06-16
专业: 计算机应用技术
升级版本
直接运行可以生成可视化图形结构
%分割图的邻接矩阵仿真
CODE:
x = repmat(uint8(0),[512 512]);
x(1:512,256)=255;x(170,1:256)=255;x(340,1:256)=255;x(85,256:356)=255;x(170,356:512)=255;x(340,356:512)=255;
x(85:340,356)=255;x(390,356:456)=255;x(450,356:456)=255;x(390:450,356)=255;x(390:450,456)=255;
locations = [85,128;265,128;425,128;425,400;265,300;265,400;85,400];
x = ~im2bw(x);
[L num] = bwlabel(x,8);%邻接区域个数
regionmat = zeros(num);%存储邻接矩阵
figure(1),imshow(L);
for i = 1:size(locations,1)
text(locations(i,2),locations(i,1),num2str(i));
end
stats = regionprops(L);%构造区域个节点;
for i = 1:num
node(i).id = i;
node(i).data = stats(i);
node(i).relaedge = [1 1 1];
node(i).weight = [1 1 1];
end
[r c] = find(L==0);%遍历所有边界点
%遍历边界点的8邻域,构造区域邻接集合
[r1 c1] = size(L);
L_new = zeros(r1+2,c1+2);
L_new(2:(size(L_new,1)-1),2:(size(L_new,2)-1)) = L;
col = 8;%最多连通区域;
for i = 1:(size(r,1))
temp = [L_new(r(i)-1+1,c(i)-1+1) L_new(r(i)-1+1,c(i)+1) L_new(r(i)-1+1,c(i)+1+1);
L_new(r(i)+1,c(i)-1+1) L_new(r(i)+1,c(i)+1) L_new(r(i)+1,c(i)+1+1);
L_new(r(i)+1+1,c(i)-1+1) L_new(r(i)+1+1,c(i)+1) L_new(r(i)+1+1,c(i)+1+1);];
p = zeros(1,col);
temp = unique(temp(:));
temp = setdiff(temp,0);
p(1:length(temp)) = temp;
relas(i,:) = p;
end
relas = unique(relas,'rows');
%赋值邻接矩阵
for i = 1:size(relas,1)
temp =setdiff(relas(i,:),0);
cn = nchoosek(temp,2);
for j =1:size(cn,1)
regionmat(cn(j,1),cn(j,2)) = 1;
end
end
disp('regionmat:');disp(regionmat);
%邻接矩阵图形化;
vertexs = [1 1;1 3;2 .5;2 3.5;3 1;3 3;3.5 2];
[r c] = find(regionmat ~= 0);
%绘制节点
figure(2),
axis([0 5 0 5]);
for i = 1:size(vertexs,1)
hold on,plot(vertexs(i,1),vertexs(i,2),'go','markersize',10);
hold on,plot(vertexs(i,1),vertexs(i,2),'gx','markersize',10);
hold on,text(vertexs(i,1),vertexs(i,2)-0.2,num2str(i));
end
%绘制边界
for i = 1:size(r,1)
line([vertexs(c(i),1) vertexs(r(i),1)],[vertexs(c(i),2) vertexs(r(i),2)],'color','r','linestyle','-.');
end
邻接图示例.JPG
赞
一下
回复此楼
2楼
2015-10-27 21:44:06
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
xiyue6911
的主题更新
2
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
高级回复
(可上传附件)
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定