如何对连通区域进行随意的操作

来源:互联网 发布:中国量子计算机 知乎 编辑:程序博客网 时间:2024/06/02 07:27

兴趣区域进行合并筛选

Find(k<&k>)函数 寻找感兴趣的矩阵数值 返回索引

Regionprops 统计

Label贴标签、imareaopen 出去小面积的连通区域

如何对感兴趣的一些连通区域进行重组,除掉不感兴趣的区域??? 研究imareaopen函数,里面有个bwconncomp、cellfun函数 cellfun函数很关键

imareaopen函数定义:

[bw,p,conn] = parse_inputs(varargin{:});%参数解析

CC = bwconncomp(bw,conn); %寻找连通部位

area = cellfun(@numel, CC.PixelIdxList);%对像素统计

idxToKeep = CC.PixelIdxList(area >= p);%总数大于p的像素对应的索引进行提取

idxToKeep = vertcat(idxToKeep{:}); %将所有的索引进行级联

bw2 = false(size(bw));%将原图清0

bw2(idxToKeep) = true;%将保留的索引像素位置赋值1

 

Bwconncomp函数返回的四个参数:

    Connectivity: 8 % 连通性 8连通

       ImageSize: [497 704]  %图片尺寸

      NumObjects: 62  %联通区数量

PixelIdxList: {1x62 cell} % 每个联通区所产生的像素索引列表 分成了62个元包数组 每个数组的元素个数等于该连通区域的像素个数,每个里面记录的是该像素在这张图片中所在的具体索引值


有了PixelldxList后,后面就可以自由发挥了。



孔洞填充 BW1= im2bw(imread('coins.png'));%读入图片,进行二值化处理 BW2= imfill(BW1,'holes');%将原图填充孔洞 imview(BW1), imview(BW2)%对比

0 0
原创粉丝点击