• 山西省互联网违法和不良信息举报中心——黄河新闻网 2019-01-28
  • 【三厢轿车】最新汽车报价 2019-01-28
  • 世界小姐张梓琳练功晒逆天长腿 被调侃心疼屋顶 2019-01-26
  • 网站最新上线://www.hslogic.com/

    体彩排列五500期走势图:目标检测的matlab仿真

    排列五开奖结果查询 www.kj742.com 上一篇 / 下一篇  2018-10-08 21:08:35

    I=imread('1val1.tif');
    [m,n]=size(I);I=double(I);
    mark(1,1)=I(1,1);mark(1,2)=1;
    c=1;S=zeros(m,n);S(1,1)=c;
    %c为联通区域的数目;

    %用标记法进行区域划分;
    %将当前目标依次与左前点、左上点、正上点、右上点比较,如果值相似,作相同标记
    %否则标记+1为新的区域。
    for i=1:m
        for j=1:n
            if i==1&j==1;
            elseif i==1&j>=2 %对第一行的元素进行区域划分
                if abs(I(i,j)-I(i,j-1))<25
                    S(i,j)=S(i,j-1);
                    a=S(i,j);
                    mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                    mark(a,2)=mark(a,2)+1;
                else
                    c=c+1;S(i,j)=c;a=S(i,j);
                    mark(a,1)=I(i,j);
                    mark(a,2)=1;
                end
            elseif j==1&i>=2 %对第一列的元素进行区域划分
                if abs(I(i,j)-I(i-1,j))<25
                   S(i,j)=S(i-1,j);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                elseif abs(I(i,j)-I(i-1,j+1))<25
                   S(i,j)=S(i-1,j+1);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1; 
                else
                    c=c+1;S(i,j)=c;a=S(i,j);
                    mark(a,1)=I(i,j);
                    mark(a,2)=1;
                end
            elseif i>1&j==n %对最右边列进行区域划分
                if abs(I(i,j)-I(i,j-1))<25
                   S(i,j)=S(i,j-1);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                elseif abs(I(i,j)-I(i-1,j-1))<25
                   S(i,j)=S(i-1,j-1);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                elseif abs(I(i,j)-I(i-1,j))<25
                   S(i,j)=S(i-1,j);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                else
                    c=c+1;S(i,j)=c;a=S(i,j);
                    mark(a,1)=I(i,j);
                    mark(a,2)=1;
                end
            else       % 对中间元素进行区域划分
                if abs(I(i,j)-I(i,j-1))<25
                   S(i,j)=S(i,j-1);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                elseif abs(I(i,j)-I(i-1,j-1))<25
                   S(i,j)=S(i-1,j-1);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                elseif abs(I(i,j)-I(i-1,j))<25
                   S(i,j)=S(i-1,j);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                elseif abs(I(i,j)-I(i-1,j+1))<25
                   S(i,j)=S(i-1,j+1);a=S(i,j);
                   mark(a,1)=(I(i,j)+mark(a,1)*mark(a,2))/(mark(a,2)+1);
                   mark(a,2)=mark(a,2)+1;
                else
                    c=c+1;S(i,j)=c;a=S(i,j);
                    mark(a,1)=I(i,j);
                    mark(a,2)=1;
                end
            end
        end
    end

    b=1;error=[0,0];
    for i=2:m  %寻找本属于同一类但因算法而归为异类的区域
        for j=1:n-2
            if (abs(I(i,j)-I(i-1,j+2))<25)&(S(i,j)~=S(i-1,j+2))
                if find(error(:,1)==S(i,j));
                else
                    error(b,1)=S(i,j);error(b,2)=S(i-1,j+2);
                    b=b+1;
                end
            end
        end
    end

    d=1;
    for d=1:b-1
        a=error(d,1);c=error(d,2);%a为需要纠正的区域的号码,c为目标区域号码
        if a~=c
            mark(c,1)=(mark(a,1)*mark(a,2)+mark(c,1)*mark(c,2))/(mark(c,2)+mark(a,2));
            mark(a,1)=0;   %纠正均值
            mark(c,2)=mark(c,2)+mark(a,2);mark(a,2)=0;  %纠正区域面积
            for e=d:b-1 %将已被纠正的区域类别号全被用目标区域的类别号代替
                if error(e,2)==a
                    error(e,2)=c;
                end
            end
        else
        end
    end

        
    for i=1:m
        for j=1:n
            if find(error(:,1)==S(i,j))
               b=find(error(:,1)==S(i,j));
               S(i,j)=error(b,2);
            end
        end
    end
                
           
    c=size(mark(:,1));
    b=1;
    for a=1:c                            %寻找是物体的区域
        if mark(a,2)>10
            target(b)=a;
            b=b+1;
        end 
    end
    %对各联通区域用其区域的均值重新赋值; 
    for i=1:m
        for j=1:n
            if find(target(:)==S(i,j))
                a=S(i,j);
                Y(i,j)=mark(a,1);
            else
                Y(i,j)=0;
            end
        end
    end
            


    y=uint8(Y);
    y=im2bw(y);
    %y=imfill(y,'holes');
    imshow(y);
    clear a b c d e i j;

    TAG:

     

    评分:0

    我来说两句

    显示全部

    :loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

    日历

    « 2018-12-15  
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     

    数据统计

    • 访问量: 2174805
    • 日志数: 97
    • 建立时间: 2011-03-03
    • 更新时间: 2018-12-11

    RSS订阅

    Open Toolbar
  • 山西省互联网违法和不良信息举报中心——黄河新闻网 2019-01-28
  • 【三厢轿车】最新汽车报价 2019-01-28
  • 世界小姐张梓琳练功晒逆天长腿 被调侃心疼屋顶 2019-01-26