回覆列表
  • 1 # 使用者7141197769170

    步驟

    1.進行最大(最小)值濾波初步得到光照圖

    2.進行均值(或高斯)濾波得到最終的光照分佈圖

    3.原始影象減去光照圖,得到前景目標

    一個栗子

    可是仔細觀察大米圖會發現攝像時光照不均勻,這樣就很難用一個全域性閾值去進行分割,如果直接分割的話會導致一部分背景被識別為目標(閾值偏小)或者丟失部分目標(閾值偏大)。如果把光照的不均勻去掉,再做二值化的結果如何呢?

    程式碼

    function newIm= DUCO_RemoveBackGround(im,w,isShow)

    %im:原始影象;w 濾波窗體大小;isShow 是否顯示中間過程

    %

    %

    if isShow==1

    figure

    imshow(im,[])

    end

    bk=double(im);

    %1.最小值濾波

    bk=ordfilt2(bk,1,ones(w,w),"symmetric");

    if isShow==1

    figure

    subplot(2,2,1)

    imshow(bk,[]),title("最小值濾波之後的結果"); %顯示濾波後的圖象

    end

    %2.均值濾波

    h=ones(w,w)/(w*w);

    bk=imfilter(bk,h,"replicate");

    if isShow==1

    subplot(2,2,2)

    imshow(bk,[]),title("均值濾波之後的結果"); %顯示濾波後的圖象

    end

    %3.減掉亮度不均的結果

    newIm=imsubtract(double(im),bk);

    if isShow==1

    subplot(2,2,3)

    imshow(newIm,[]);title("去背景圖");

    end

    %4.二值化分割出目標

    th=graythresh(newIm/255);

    newIm=im2bw(newIm/255,th);

    if isShow==1

    subplot(2,2,4)

    imshow(newIm),title("二值化的結果"); %顯示濾波後的圖象

    end

    end

  • 中秋節和大豐收的關聯?
  • 費用管理表格怎麼填?