過分割後處理——區域融合 ( Region Merging)

github
分水嶺算法對噪聲比較敏感,容易出現過分割。常見的處理過分割的方法包括:
1). 預處理,圖像降噪;
2). 應用標記 (marker)。選擇標記需要用戶的參與,圖像結構的先驗知識;
3). 區域融合
本篇博客介紹,基於區域近鄰圖(RegionAdjacency Graph ,RAG)融合的過分割後處理方法。
此方法依賴於已分割的區域個數和噪聲方差,個數越多效果越差,處理時間越長。最糟的情況是每個像素爲1個區域。因而,爲了減少分水嶺分割的個數,需要對圖像先降噪,再分水嶺分割,最後區域融合

相似度計算

相似度用來判斷兩個鄰近區域是不是應該融合。區域就是初始分割後,屬於同一標記的像素集合。
K個區域的RAG, 表示爲G=(V,E),其中頂點集V=1,2...,K ,對應的邊集合EV×V 。每個頂點節點代表一個區域,邊表示和鄰近區域相連,邊權重就是兩個區域之間的相似度,如圖所示:
RAG
很自然的我們會想到用兩個鄰近區域的均值的距離來衡量相似性,距離越小越相似,不相鄰的區域我們直接令相似度爲無窮大。但是不同區域的個數不同,對於較小的區域我們傾向於將它和近鄰融合,因而我們將區域的個數的信息作爲權重來調整相似度。
因此相似度的計算方式定義如下:

δ(RMi,RMj)=||RMi||||RMj||||RMi||+||RMj||[μ(RMi)μ(RMj)]2I(i,j)

I(i,j)={1,ifRMi,RMjisadjacent+,otherwise.

RM={RM1,RM2,...,RMM} 表示圖像Y的M個區域集合。RMk={pk,1,pk,2,...,pk,||RMk||} 是第k個區域RMk 的樣本集。||R|| 表示集合的基數,有限集的基數(cardinality )就是傳統概念下的“個數”。 μ(RMk) 是每部分的均值:
μ(RMk)=1||RMk||i=1||RMk||Y(pk,i)

最後的分割個數n由δ() 決定,如果δ 小於某個閾值則迭代終止。閾值可以根據噪聲分佈來確定。

算法流程

輸入:K部分的RAG,K-RAG

迭代 util min(δ)>=Treshold

  1. (K-i)-RAG的邊集合中找到最相似的邊(δ 最小)
  2. 融合最相似邊對應的兩個區域頂點,得到(K-i-1)-RAG
  3. 更新頂點和邊集合

輸出:(K-n)-RAG

實例

處理步驟:
1. 對輸入圖像進行平滑濾波
2. 求梯度圖像,對梯度進行閾值
3. 分水嶺分割
4. 區域融合

對此算法來說,梯度圖像的閾值,影響着區域融合的效果和計算時間。更大的閾值意味着分水嶺分割後區域個數越少,計算速度越快。但是過大的閾值會丟失邊緣輪廓。

% 讀取圖像
I=imread('cameraman.tif');
% 估計圖像的噪聲方差
varn=EstimaOfNoise(I);
% 圖像平滑,目的是減少較小的尺寸區域
h=fspecial('average',[3 3]);
SI=imfilter(I,h);
figure,imshow(SI);title('smoothed Image');
% 求梯度圖像
h1=[-1,0,1];
h2=h1';
Ix=imfilter(double(SI),h1,'replicate');
Iy=imfilter(double(SI),h2,'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);%求模
figure,imshow(gradmag./max(gradmag(:)));title('gradient Image');
% candidate egde pixels which is regional maxima 
CanI=imregionalmax(gradmag)
% 調整梯度圖像,只平滑非candidate egde pixels
h=fspecial('average',[3 3]);
Gs=imfilter(gradmag,h);
Gs(CanI~=0)=gradmag(CanI~=0);
% 閾值梯度圖像
bw=zeros(size(I));
T=10*sqrt(varn);
bw(Gs>T)=gradmag(Gs>T);
figure,imshow(bw);title('bw')
% 分水嶺分割
label=watershed(bw);
RGBLabel=label2rgb(label);
figure,imshow(RGBLabel);
title(' watershed with treshold Image of gradient Image');
% 基於最近鄰圖的區域融合
Rlabel=RegionMerging(I,label,1000,2);
RGBRlabel=label2rgb(Rlabel);
figure,imshow(RGBRlabel);title('watershed segment after RegionMerging');

初始分水嶺分割結果如圖所示
步驟1初始分水嶺分割結果

區域融合後的結果如圖所示

參考文獻

[1]. Haris K, Efstratiadis S N, Maglaveras N, et al. Hybrid image segmentation using watersheds and fast region merging.[J]. IEEE Transactions on Image Processing A Publication of the IEEE Signal Processing Society, 1998, 7(12):1684-1699.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章