Ⅰ 區域生長Matlab代碼
我跑了下,應該改成function Output=region(image,seed,Threshold,maxv)
........
........
%堆棧的尾部指針後移一位
Start=Start+1;
end
end
end
Output = LabelImage;
end
你試試看有結果沒
Ⅱ 我弄了個matlab 區域生長法的程序 可是怎麼弄都有問題 誰幫我改下
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%區域生長法
A0=imread('1.jpg');%讀入圖像
seed=[100,220];%選擇起始位置
thresh=15;%相似性選擇閾值
A=rgb2gray(A0);
%灰度化
A=imadjust(A,[min(min(double(A)))/255,max(max(double(A)))/255],[]);
A=double(A); %將圖像灰度化
B=A;
%將A賦予B
[r,c]=size(B);
%圖像尺寸 r為行數,c為列數
n=r*c;
%計算圖像所包含點的個數
pixel_seed=A(seed(1),seed(2));
%原圖起始點灰度值
q=[seed(1) seed(2)];
%q用來裝載起始位置
top=1;
%循環判斷flag
M=zeros(r,c);
%建立一個與原圖形同等大小的矩陣
M(seed(1),seed(2))=1;
%將起始點賦為1,其餘為0
count=1;
%計數器
while top~=0
%循環結束條件
r1=q(1,1);
%起始點行位置
c1=q(1,2);
%起始點列位置
p=A(r1,c1);
%起始點灰度值
dge=0;
for i=-1:1
%周圍點的循環判斷
for j=-1:1
if r1+i<=r & r1+i>0 & c1+j<=c & c1+j>0
%保證在點周圍范圍之內
if abs(A(r1+i,c1+j)-p)<=thresh & M(r1+i,c1+j)~=1
%判定條件?
top=top+1;
%滿足判定條件top加1,top為多少,則q的行數有多少行
q(top,:)=[r1+i c1+j];
%將滿足判定條件的周圍點的位置賦予q,q記載了滿足判定的每一外點
M(r1+i,c1+j)=1;
%滿足判定條件將M中相對應的點賦為1
count=count+1;
%統計滿足判定條件的點個數,其實與top此時的值一樣
B(r1+i,c1+j)=1;
%滿足判定條件將B中相對應的點賦為1
end
if M(r1+i,c1+j)==0;
%如果M中相對應點的值為0將dge賦為1,也是說這幾個點不滿足條件
dge=1;
%將dge賦為1
end
else
dge=1;
%點在圖像外將dge賦為1
end
end
end
%此時對周圍幾點判斷完畢,在點在圖像外或不滿足判定條件則將dge賦為1,滿足條件dge為0
if dge~=1
%最後判斷的周圍點(i=1,j=1)是否滿足條件,如dge=0,滿足。dge=1,不滿足。
B(r1,c1)=A(seed(1),seed(2));
%將原圖像起始位置灰度值賦予B
end
if count>=n
%如果滿足判定條件的點個數大於等於n
top=1;
end
q=q(2:top,:);
top=top-1;
end
subplot(1,2,1),imshow(A,[]);
subplot(1,2,2),imshow(B,[]);
Ⅲ 圖象分割有哪三種不同的途徑
圖象分割有三種不同的途徑,其一是將各象素劃歸到相應物體或區域的象素聚類方法即區域法,其二是通過直接確定區域間的邊界來實現分割的邊界方法,其三是首先檢測邊緣象素再將邊緣象素連接起來構成邊界形成分割。早期的圖像分割方法可以分為兩大類。一類是邊界方法,這種方法假設圖像分割結果的某個子區域在原來圖像中一定會有邊緣存在;一類是區域方法,這種方法假設圖像分割結果的某個子區域一定會有相同的性質,而不同區域的像素則沒有共同的性質。這兩種方法都有優點和缺點,有的學者考慮把兩者結合起來進行研究。現在,隨著計算機處理能力的提高,很多方法不斷涌現,如基於彩色分量分割、紋理圖像分割。所使用的數學工具和分析手段也是不斷的擴展,從時域信號到頻域信號處理,小波變換等等。
圖像分割主要包括4種技術:並行邊界分割技術、串列邊界分割技術、並行區域分割技術和串列區域分割技術。下面是分別對每一項做簡單的介紹。
Ⅳ 如何用區域生長法實現圖像分割
區域生長法圖像分割是直接根據像素的相似性和連通性來對圖像進行聚類的演算法。基本原理是,給出若干種子點,然後依次對這些種子點進行如下操作,直到種子點集合為空:判斷種子點四鄰域或八鄰域的像素點是否和種子點相似(灰度相似或其他測度相似),如果相似則將該點加入種子點集合,否則不作處理。
該演算法原理很簡單,但在數據結構的組織上卻需要技巧,本文介紹一種簡易的數據組織方式實現該演算法。
如上圖所示,左圖為一幅W*H大小的圖像示意圖,利用區域生長法圖像分割演算法,該圖像被分割(聚類)為7塊;右圖為相應的數據結構,圖像分割的結果屬於圖像空間數據,其實就是一系列的像素點坐標數組或與像素點坐標直接關聯的屬性數組如FLAG的數組等,這個數組的維度一定是W*H,而分割結果體現在數組元素的排列順序:同一類別的元素連續存儲。然而類別的界限無法用該數組表明,而只能用另外一個描述數組,這里我們稱之為圖像空間數據的「元數據」數據,這個數組的有效維度為空間數據的類別數,即7,每個元素代表的是空間數據數組中每個類別的元素個數,其實也就相應地表明了每個類別的指針位置。
Ⅳ 急!!求遺傳演算法圖像邊緣檢測的matlab程序,馬上就要交畢設了,誰能幫我啊我的郵箱942406137,有加分啊
http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=49464 Matlab程序:遺傳演算法/大津法/區域生長法/迭代法分割圖像
Ⅵ matlab編寫出邊緣或者區域演算法分割圖像的程序,能給我發份嗎急用,謝謝!
matlab太搞了,運算元都是編好的,你直接調用。BW = edge(I,'canny'); canny運算元直接調用。
下面是網上找到的canny運算元邊緣檢測:
I = imread('lunna.jpg');
I=rgb2gray(I);
BW = edge(I,'canny');
% 以自動閾值選擇法對圖像進行Canny運算元檢測
[BW,thresh] = edge(I,'canny');
% 返回當前Canny運算元邊緣檢測的閾值
disp('Canny運算元自動選擇的閾值為:')
disp(thresh)
subplot(121),imshow(BW);
title('自動閾值的Canny運算元邊緣檢測')
BW = edge(I,'Canny',[0.2 0.5]);
% 以閾值為[0.1 0.5]對圖像進行Canny運算元檢測
subplot(122),imshow(BW);
title('閾值為[0.1 0.5]的Canny運算元邊緣檢測')
Ⅶ 誰有基於種子點演算法的圖像分割matlab代碼!!急要!!!!
你指的是
區域生長圖像分割演算法!MATLAB數字圖像處理(第2版)(張德豐,等)岡薩雷斯 圖像處理matlab 等等許多matlab圖像處理的書都會有區域生長的代碼
Ⅷ MATLAB緊急求助!在同一幅圖上面分別用邊緣檢測,區域生長,閥值分割3種分割演算法實現圖像分割。
看我的文庫
http://wenku..com/view/58912bd7b14e852458fb5743.html
http://wenku..com/view/6e54a67c31b765ce0508144f.html
Ⅸ 區域生長的區域生長的優勢和劣勢
1. 區域生長通常能將具有相同特徵的聯通區域分割出來。
2. 區域生長能提供很好的邊界信息和分割結果。
3. 區域生長的思想很簡單,只需要若干種子點即可完成。
4. 在生長過程中的生長准則可以自由的指定。
5. 可以在同一時刻挑選多個准則。 1. 計算代價大。
2. 雜訊和灰度不均一可能會導致空洞和過分割。
3. 對圖像中的陰影效果往往不是很好。
對雜訊問題,通常可以用一些平滑濾波器,或是diffusion濾波器做預處理來解決,所以通常雜訊問題並不是很嚴重。所以實際上,區域生長的最嚴重的問題就是效率低下。
據實驗,在2.4GHz的電腦上,一個512*512*343的數據,進行一次區域生長大約需要200s的時間