多点区域生长法 matlab实现

关于区域生长法网上已经有很多算法可以实现了,但是关于多点区域生长法却没什么资料,多点可以很大程度上增加生长速度,经过琢磨才发现在单点区域生长的算法上很容易就能实现多点生长,因此写出来供大家参考。

 I=imread(‘文件路径’);                  先读入图像   
[hang,lie] = size(I);          
I=double(I);
rongcha=20;                           %此处可以自己指定容差范围,即阈值
[y0,x0] = getpts;       %getpts函数本身就可以获得多个点,并返回多个点的坐标
x0 = round(x0);
y0 = round(y0);
R = zeros(hang,lie);
R = uint8(R);            %作为检测区域是否满足区域生长条件的判断矩阵
ii=length(x0);
for k=1:ii
seed(k)=I(x0(k),y0(k));
R(x0(k),y0(k))=255;     %把选定的点作为起始点
end
avr=mean(seed);  
totalnum=ii;               %计算生长区域内像素点的个数,此处为初始化
msum=sum(seed);       %计算生长区域内像素的总和,此处为初始化
    count=1;
    while count>0
        count=0;
        for i=1:hang
            for j=1:lie
                if R(i,j)==255
                    if i>1&&i<hang&&j>1&&j<lie        %图像边界判断
                        for u=-1:1
                            for v=-1:1
                                if R(i+u,j+v)==0&&abs(I(i+u,j+v)-avr)<=rongcha
                                    R(i+u,j+v)=255;
                                    count=1;
                                    totalnum=totalnum+1; 
                                    msum=msum+I(i+u,j+v);
                                end
                            end
                        end
                    end
                end
            end
        end
    avr=msum/totalnum;    
    end
                  


  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值