分水嶺演算法圖像分割
Ⅰ 分水嶺演算法適合分割什麼圖像
網路中搜「分水嶺演算法」,介紹的很詳細,也很易懂,很難再說的比其還要好,你看看吧!
Ⅱ 分水嶺的計算過程
分水嶺的計算過程是一個迭代標注過程。分水嶺比較經典的計算方法是L. Vincent提出的。在該演算法中,分水嶺計算分兩個步驟,一個是排序過程,一個是淹沒過程。首先對每個像素的灰度級進行從低到高排序,然後在從低到高實現淹沒過程中,對每一個局部極小值在h階高度的影響域採用先進先出(FIFO)結構進行判斷及標注。
分水嶺變換得到的是輸入圖像的集水盆圖像,集水盆之間的邊界點,即為分水嶺。顯然,分水嶺表示的是輸入圖像極大值點。因此,為得到圖像的邊緣信息,通常把梯度圖像作為輸入圖像,即
g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5
式中,f(x,y)表示原始圖像,grad{.}表示梯度運算。
分水嶺演算法對微弱邊緣具有良好的響應,圖像中的雜訊、物體表面細微的灰度變化,都會產生過度分割的現象。但同時應當看出,分水嶺演算法對微弱邊緣具有良好的響應,是得到封閉連續邊緣的保證的。另外,分水嶺演算法所得到的封閉的集水盆,為分析圖像的區域特徵提供了可能。
為消除分水嶺演算法產生的過度分割,通常可以採用兩種處理方法,一是利用先驗知識去除無關邊緣信息。二是修改梯度函數使得集水盆只響應想要探測的目標。
為降低分水嶺演算法產生的過度分割,通常要對梯度函數進行修改,一個簡單的方法是對梯度圖像進行閾值處理,以消除灰度的微小變化產生的過度分割。即
g(x,y)=max(grad(f(x,y)),gθ)
式中,gθ表示閾值。
程序可採用方法:用閾值限制梯度圖像以達到消除灰度值的微小變化產生的過度分割,獲得適量的區域,再對這些區域的邊緣點的灰度級進行從低到高排序,然後在從低到高實現淹沒的過程,梯度圖像用Sobel運算元計算獲得。對梯度圖像進行閾值處理時,選取合適的閾值對最終分割的圖像有很大影響,因此閾值的選取是圖像分割效果好壞的一個關鍵。缺點:實際圖像中可能含有微弱的邊緣,灰度變化的數值差別不是特別明顯,選取閾值過大可能會消去這些微弱邊緣。
Ⅲ 分水嶺演算法的介紹
所謂分水嶺演算法有好多種實現演算法,拓撲學,形態學,浸水模擬和降水模擬等方式。要搞懂就不容易了。Watershed Algorithm(分水嶺演算法),顧名思義,就是根據分水嶺的構成來考慮圖像的分割。現實中我們可以或者說可以想像有山有湖的景象,那麼那一定是水繞 山,山圍水的情形。當然在需要的時候,要人工構築分水嶺,以防集水盆之間的互相穿透。而區分高山(plateaus)與水的界線,以及湖與湖之間的間隔或 都是連通的關系,就是我們可愛的分水嶺(watershed)。為了得到一個相對集中的集水盆,那麼讓水漲到都接近周圍的最高的山頂就可以了,再漲就要漏 水到鄰居了,而鄰居,嘿嘿,水質不同誒,會混淆自我的。那麼這樣的話,我們就可以用來獲取邊界灰階大,中間灰階小的物體區域了,它就是集水盆。
Ⅳ 數字圖像處理中圖像增強和圖像分割有什麼聯系有什麼區別
不同的應用領域嘛!
圖像增強是增強,可以使圖像的邊緣信息更明朗.
比如我用拉普拉斯運算元增強,圖像的紋理細節減弱,邊緣信息增強.
得到結果就是一個邊界圖.
圖像分割是分割,可以分割不同的區域.
比如我用分水嶺演算法可以使不同區域填充,從而使圖像不同的地方能分離出來.
非要說聯系?那就是圖像分割之前一般先進行圖像增強,以使效果明顯.
Ⅳ MATLAB 圖像分割的 分水嶺演算法 的源代碼,麻煩有的人發一份給我,謝謝
直方圖均衡化也是非線性量化的一種吧,網上找到的,作者寫的非常詳細。
% 數字圖像處理程序作業
% 本程序能將JPG格式的彩色圖像文件灰度化並進行直方圖均衡
%
% 輸入文件:PicSample.jpg 待處理圖像
% 輸出文件:PicSampleGray.bmp 灰度化後圖像
% PicEqual.bmp 均衡化後圖像
%
% 輸出圖形窗口說明
% figure NO 1 待處理彩色圖像
% figure NO 2 灰度化後圖像
% figure NO 3 直方圖
% figure NO 4 均衡化後直方圖
% figure NO 5 灰度變化曲線
% figure NO 6 均衡化後圖像
% 1, 處理的圖片名字要為 PicSample.jpg
% 2, 程序每次運行時會先清空workspace
% 作者;archiless lorder
clear all
%一,圖像的預處理,讀入彩色圖像將其灰度化
PS=imread('PicSample.jpg'); %讀入JPG彩色圖像文件
imshow(PS) %顯示出來 figure NO 1
title('輸入的彩色JPG圖像')
imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %將彩色圖片灰度化並保存
PS=rgb2gray(PS); %灰度化後的數據存入數組
figure,imshow(PS) %顯示灰度化後的圖像,也是均衡化前的樣品 figure NO 2
title('灰度化後的圖像')
%二,繪制直方圖
[m,n]=size(PS); %測量圖像尺寸參數
GP=zeros(1,256); %預創建存放灰度出現概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %計算每級灰度出現的概率,將其存入GP中相應位置
end
figure,bar(0:255,GP,'g') %繪制直方圖 figure NO 3
title('原圖像直方圖')
xlabel('灰度值')
ylabel('出現概率')
%三,直方圖均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i); %計算Sk
end
end
S2=round(S1*256); %將Sk歸到相近級的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i))); %計算現有每個灰度級出現的概率
end
figure,bar(0:255,GPeq,'b') %顯示均衡化後的直方圖 figure NO 4
title('均衡化後的直方圖')
xlabel('灰度值')
ylabel('出現概率')
figure,plot(0:255,S2,'r') %顯示灰度變化曲線 figure NO 5
legend('灰度變化曲線')
xlabel('原圖像灰度級')
ylabel('均衡化後灰度級')
%四,圖像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %將各個像素歸一化後的灰度值賦給這個像素
end
figure,imshow(PA) %顯示均衡化後的圖像 figure NO 6
title('均衡化後圖像')
imwrite(PA,'PicEqual.bmp');
Ⅵ MATLAB 分水嶺分割演算法
其實,這涉及到命令和演算法,單一的命令往往不能解決所有的問題,要有前處理或後處理,才能達到目的。另外,也說明,某個命令應該升級或更新了。所以,watershed這個命令,單用達不到所期望的效果,只有加上預處理才行。