資源簡介
區域生長的圖像分割,是圖像處理中用來實現圖形分割的一種方法,算法簡單,實用。

代碼片段和文件信息
clear?
clc;
image=imread(‘huidu.jpg‘);
I=rgb2gray(image);
figureimshow(I)title(‘原始圖像‘)
I=double(I);
[MN]=size(I);
[yx]=getpts;?????????????%獲得區域生長起始點
x1=round(x);????????????%橫坐標取整
y1=round(y);????????????%縱坐標取整
seed=I(x1y1);???????????%將生長起始點灰度值存入seed中
Y=zeros(MN);??????????%作一個全零與原圖像等大的圖像矩陣Y,作為輸出圖像矩陣
Y(x1y1)=1;?????????????%將Y中與所取點相對應位置的點設置為白場
sum=seed;??????????????%儲存符合區域生長條件的點的灰度值的和
suit=1;?????????????????%儲存符合區域生長條件的點的個數
count=1;???????????????%記錄每次判斷一點周圍八點符合條件的新點的數目
threshold=15;???????%域值
while?count>0
s=0;??????????????????%記錄判斷一點周圍八點時,符合條件的新點的灰度值之和
count=0;
for?i=1:M
???for?j=1:N
?????if?Y(ij)==1
??????if?(i-1)>0?&&?(i+1)<(M+1)?&&?(j-1)>0?&&?(j+1)<(N+1)?%判斷此點是否為圖像邊界上的點
???????for?u=?-1:1???????????????????????????????%判斷點周圍八點是否符合域值條件
????????for?v=?-1:1???????????????????????????????%uv為偏移量
??????????if??Y(i+uj+v)==0?&?abs(I(i+uj+v)-seed)<=threshold&?1/(1+1/15*abs(I(i+uj+v)-seed))>0.8%判斷是否未存在于輸出矩陣Y,并且為符合域值條件的點
?????????????Y(i+uj+v)=1;???????????????????????%符合以上兩條件即將其在Y中與之位置對應的點設置為白場
?????????????count=count+1;?????????????????????????????????
?????????????s=s+I(i+uj+v);??????????????????????%此點的灰度之加入s中
??????????end
????????end??
???????end
??????end
?????end
???end
end
suit=suit+count;???????????????????????????????????%將n加入符合點數計數器中
sum=sum+s;?????????????????????????????????????%將s加入符合點的灰度值總合中
seed=sum/suit;????????????????????????????????????%計算新的灰度平均值
end
figureimshow(Y)title(‘分割后圖像‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1770??2010-07-06?20:05??區域生長的圖像分割程序.m
-----------?---------??----------?-----??----
?????????????????1770????????????????????1
- 上一篇:西門子PLC端溫度測控程序設計
- 下一篇:win32 掃雷游戲
評論
共有 條評論