請問重疊的物體要如何分割&分水嶺法 |
尚未結案
|
csps60408
一般會員 發表:2 回覆:0 積分:0 註冊:2010-07-12 發送簡訊給我 |
我打算把圖片二質化後,把物體作連續膨脹8次(讓物體中間被填滿
再連續侵蝕8次(讓物體恢復原大小),再抓出各物體其質心 可是此時發現一個問題物體跟物體間在膨脹時,可能會發生物體重疊狀況, 導致結果與預期不符合,我該如何改善呢? 以下是程式碼: clear A=imread('C:\Documents and Settings\Administrator\桌面\012.jpg'); level = graythresh(A); K = im2bw(A,level); ) imshow(A) figure,imshow(K) se=strel('disk',3); B=imclose(K,se); figure, imshow(B) imwrite(G,'C:\Documents and Settings\LAN\桌面\01_003.jpg') sf=strel('disk',5); Z=imerode(B,sf); figure, imshow(Z) Y=imerode(Z,sf); figure, imshow(Y) X=imerode(Y,sf); figure, imshow(X) W=imerode(X,sf); figure, imshow(W) V=imerode(W,sf); figure, imshow(V) S=imerode(V,sf); figure, imshow(S) T=imerode(S,sf); figure, imshow(T) U=imerode(T,sf); figure, imshow(U) C=imdilate(U,sf); figure, imshow(C) D=imdilate(C,sf); figure, imshow(D) E=imdilate(D,sf); figure, imshow(E) F=imdilate(E,sf); figure, imshow(F) G=imdilate(F,sf); figure, imshow(G) H=imdilate(G,sf); figure, imshow(H) I=imdilate(H,sf); figure, imshow(I) J=imdilate(I,sf); figure, imshow(J) sum=0; for i=1:length(J(:,1)) for j=1:length(J(1,:)) if(J(i,j)==0)sum=sum 1; end end end n=sum AB=imcomplement(J) figure, imshow(AB) imwrite(AB,'C:\Documents and Settings\Administrator\桌面\039.jpg') [L, n] = bwlabel(AB) imshow(AB) hold on for k=1:n [r, c] = find(L == k); rbar=mean(r); cbar=mean(c); plot(cbar, rbar, 'Marker', 'o', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'k', 'MarkerSize', 10) plot(cbar, rbar, 'Marker', '*', 'MarkerEdgeColor', 'w') end imwrite(AB,'C:\Documents and Settings\Administrator\桌面\040.jpg') 有聽說過分水嶺法 如果使用所謂的分水嶺法的話,有什麼要注意的嗎? 或是有更強大的方法呢? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |