|
MATLAB2014a下运行:
- function [bw1, B_regions, Label_rgb, RGB1] = bwconn_Solidity(im, bw1, thre)
- % 0<thre<1
- cc = bwconncomp(bw1); % 连通域操作
- stats = regionprops(bw1,'all'); % 提取二值化块的所有特征
- id = find( [stats.Solidity]<thre ); % 矩形度小于thre的,全部输出
- for i=1:length(id)
- bw1(labelmatrix(cc)==id(i))=0; % 剔除矩形度小于thre的所有二值化块
- end
- % figure('color',[1,1,1]),
- % imshow(bw1)
- bw1 = bwareaopen(bw1,300); % 去掉面积小于300的小块
- % 二值化区域边界分割
- [B_regions, Label] = bwboundaries(bw1,'noholes');
- Label_rgb = label2rgb(Label,'jet',[.5 .5 .5]);
- RGB1 = reconstruct_rgb(im, bw1);
复制代码 二值化图像,重构RGB图像
- function RGB1 = reconstruct_rgb(I_rgb, A1)
- % I_rgb:彩色图像
- % A1:二值化图像
- if size(I_rgb,3)==1
- msgbox('请输入一张彩色图像!!!');
- return;
- end
- R=I_rgb(:,:,1);
- G=I_rgb(:,:,2);
- B=I_rgb(:,:,3);
- % 重构显示彩色图
- R1 = immultiply(R, logical(A1));
- G1 = immultiply(G, logical(A1));
- B1 = immultiply(B, logical(A1));
- RGB1 = cat(3,R1,G1,B1);
复制代码
|
|