線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4500
推到 Plurk!
推到 Facebook!

請問重疊的物體要如何分割&分水嶺法

尚未結案
csps60408
一般會員


發表:2
回覆:0
積分:0
註冊:2010-07-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-22 15:38:57 IP:180.176.xxx.xxx 訂閱
我打算把圖片二質化後,把物體作連續膨脹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')

有聽說過分水嶺法
如果使用所謂的分水嶺法的話,有什麼要注意的嗎?
或是有更強大的方法呢?
系統時間:2024-11-21 17:04:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!