MATLAB中使用不同颜色显示连通区域
来源:互联网 发布:wind 社会责任数据 编辑:程序博客网 时间:2024/06/07 15:50
最近在用MATLAB做点东西,涉及到前景目标检测。由于检测出来的连通域比较多,统一用白色线是比较单调,而且不容易看清楚,因此尝试将不同的连通域赋予不同颜色,代码如下:
首先,要计算二值图像中的连通域,假设img1为输入二值图像,img2为按面积滤波后的图像,当然,如果二值图像较零散,可以用形态学滤波进行处理:
img2 =bwareaopen(img1,6,8); %按照八连通规则,将面积小于6的连通区域滤除;
[L,num] = bwlabel(img2,8); %计算img2的八连通区域,L为返回的带标记图像,尺寸与img2相同,num为连通区域数目;
PS:附上形态学滤波代码:
% SE1=strel('square',3);
% img_erode= imerode(img2,SE1,'same');
% img_dilate=imdilate(img2,SE1,'same');
然后,就要将不同的连通区域用不同的颜色标识出来:
[m,n] = size(img2);
img_color = zeros(m,n,3); % 显示图像,三通道;
img_color_tmp =reshape(img_color,m*n,3); % 拉成二维的,用于find函数,因为find找的是一维向量的下标;
%% 为了颜色显示更加丰富,我调用了4个颜色模块,每一个表示64种颜色;(可参考收藏的CSDN博客,有更多的颜色模板信息)
color_map1 = colormap(cool(64)); % 颜色模块1
color_map2 = colormap(hot(64)); %颜色模块2
color_map3 = colormap(hsv(64)); % 颜色模块3
color_map4 = colormap(pink(64)); % 颜色模块4
color_map =[color_map1;color_map2;color_map3;color_map4]; % 将颜色模板拼接起来,构成一个256种颜色的color_map,我认为连通区域数目小于256;
power = floor(256/num); % 加权,为了将颜色区分的更开,否则的话颜色太接近,显示不清楚;
for i = 1:1:num
img_color_tmp(find(L == i),1)= color_map(i*power,1);
img_color_tmp(find(L == i),2)= color_map(i*power,2);
img_color_tmp(find(L == i),3)= color_map(i*power,3);
img_color =reshape(img_color_tmp, m, n, 3);
end
imagesc(img_color); % 显示图像;
- MATLAB中使用不同颜色显示连通区域
- 使用Matlab中regionprops函数获取图像连通区域
- matlab 连通区域 显示 边缘检测显示到原图
- Matlab连通区域
- matlab 中如何使用bwboundaries获取连通区域并求取其轮廓
- Matlab得到二值图像中最大连通区域
- matlab找连通区域的bwlabel函数的使用
- matlab函数_连通区域
- matlab函数_连通区域
- matlab函数_连通区域
- matlab函数_连通区域
- matlab函数_连通区域
- matlab函数_连通区域
- matlab函数(连通区域)
- Matlab找最大连通区域
- matlab函数_连通区域
- android TextView 中不同颜色显示
- android中textview显示不同颜色
- 我的算法练习记录
- android 项目实践分享
- 日经社説 20150807 報告書の歴史観を首相談話に反映させよ
- checkbox复选框的post传值
- oracle form使用commit
- MATLAB中使用不同颜色显示连通区域
- STL源码剖析——vector的实现原理总结
- bzoj3143: [Hnoi2013]游走
- 社説 20150807 70年談話懇報告 首相も「侵略」を明確に認めよ
- TextView最多设置多少行,然后多出来打点显示(涉及的一些参数)
- jsonp的使用实例
- NYOJ 106 背包问题(贪心,水)
- java开发webservice的几种方式[待总结:cxf、xfire、axis2]
- HDOJ 1008