天天看點

【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

一、圖像分割簡介

1 圖像分割技術

圖像分割 : 根據灰階 , 顔色 , 紋理等,将圖像進行分割。

2 常用的分割技術

2.1 邊緣檢測法

邊緣是圖像的最重要的特征。邊緣是指周圍像素灰階有階躍變化或屋頂變化的那些像素的集合。邊緣檢測主要是灰階變化的度量、檢測和定位。有很多種不同的邊緣檢測方法,同一種方法使用的濾波器也不盡相同。圖像邊緣檢測就是研究更好的邊緣檢測方法和檢測算子。

邊緣檢測的基本思想:

(1)利用邊緣增強算子,突出圖像中的局部邊緣;

(2)然後定義像素的“邊緣強度”,通過設定門檻值的方法提取邊緣點集。由于噪聲和模糊的存在,監測到的邊界可能會變寬或在某點處發生間斷。

邊界檢測包括兩個基本内容:

i. 用邊緣算子提取出反映灰階變化的邊緣點集

ii. 在邊緣點集合中剔除某些邊界點或填補邊界間斷點,并将這些邊緣連接配接成完整的線

常用的檢測算子有拉普拉斯邊緣檢測算法、Robert邊緣檢測算子、Sobel邊緣檢測算子、Prewitt邊緣檢測算子、Canny邊緣檢測算子。

五種邊緣檢測算法比較:

clear;
close all;
I=imread('houzi.jpg');
I0=rgb2gray(I);
subplot(231);
imshow(I);      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

Robert:邊緣定位精度較高,對于陡峭邊緣且噪聲低的圖像效果較好,但沒有進行平滑處理,沒有抑制噪聲的能力。

sobel和prewitt:進行了平滑處理,對噪聲具有一定抑制能力,但容易出現多像素寬度。

Laplacian:對噪聲較為敏感,使噪聲能力成分得到加強,容易丢失部分邊緣方向資訊,造成一些不連續的檢測邊緣,同時抗噪聲能力較差。

log:抗噪聲能力較強,但會造成一些尖銳的邊緣無法檢測到。

canny:最優化思想的邊緣檢測算子,同時采用高斯函數對圖像進行平滑處理,但會造成将高頻邊緣平滑掉,造成邊緣丢失,采用雙門檻值算法檢測和連接配接邊緣。

2.1.1 微分算子

(1)Canny 算子

(2) LOG算子

函數 edge ( )

I = imread('rice.png');
I = im2double(I);
J = imnoise(I, 'gaussian', 0, 0.005);
[K, thresh] = edge(J, 'Log', [], 2.3);
figure;
subplot(121),imshow(I);
subplot(122),imshow(K);      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

2.1.2 常見的微分算子

(1) Sobel算子

函數 edge ( )

I = imread('rice.png'); %RGB彩色圖
% imshow(I);
I = rgb2gray(I);
[J, thresh] = edge(I, 'sobel', [], 'horizontal');
figure;
subplot(121);imshow(I);
subplot(122);imshow(J);      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

(2) Roberts 算子

函數 edge ( )

I = imread('rice.png');
I = im2double(I);
[J, thresh] = edge(I, 'Roberts', 35/255); %邊緣檢測 ,roberts算子, 門檻值為歸一化後的35/255
figure;
subplot(121),imshow(I);
subplot(122),imshow(J);      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

(3) Prewit 算子

函數 edge ( )

I = imread('rice.png');
% I = imread('rice.png');
I = im2double(I);
[J, thresh] = edge(I, 'prewitt', [], 'both');%預設門檻值, 從水準和豎直方向進行設定
figure;
subplot(121);imshow(I);
subplot(122);imshow(J);      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

2.2 門檻值分割法

門檻值分割法是最經典最流行的圖像分割方法之一 , 也是最簡單的分割方法 。其關鍵是找合适的灰階門檻值,通常是根據圖像的灰階直方圖來選取, 門檻值分割特别适用于目标和背景處于不同灰階級範圍的圖像。

2.2.1 全局門檻值

直方圖顯示

clear,clc;
I = imread('rice.png');
subplot(121),imshow(I);
subplot(122),imhist(I, 200); %直方圖顯示      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

全局門檻值分割

clear,clc;
I = imread('rice.png');
J = I > 120; %全局門檻值為120 , 波谷大概是120
K = I > 130; %全局門檻值為130
figure;
subplot(131),imshow(I);
subplot(132),imshow(J);
subplot(133),imshow(K);      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

2.2.2 Otsu門檻值分割

I = imread('rice.png');
I = im2double(I);
T = graythresh(I); %擷取門檻值
J = im2bw(I, T); %圖像分割
subplot(121),imshow(I);
subplot(122),imshow(J);      

2.2.3 疊代式門檻值分割法

clear, clc
I = imread('rice.png');
I = im2double(I);
T0 = 0.01; %精度
% T1 = graythresh(I) %用Otsu求門檻值
T1 = min(I(:)) + max(I(:)) / 2; %初始估計門檻值
r1 = find(I > T1); %找出比門檻值大的像素
r2 = find(I <= T1); %找出比門檻值小的像素
T2 = (mean(I(r1)) + mean(I(r2))) / 2; %各個像素加和求平均
while abs(T2 - T1) < T0 %
    T1 = T2;
    r1 = find(I > T1);
    r2 = find(I <= T1);
    T2 = (mean(I(r1)) + mean(I(r2))) / 2;
end
 
J = im2bw(I, T2);
subplot(121),imshow(I);
subplot(122),imshow(J);      

2.3 區域分割法

将相鄰的具有同種性質的像素或其他區域歸并刀目前的區域中進而逐漸增長區域

相似性度量 : 平均灰階值, 紋理, 顔色

缺點 : 往往造成過度分割

取決分割好壞的三個因素 : 種子點的選取 生長規則 終止條件

2.3.1 分水嶺分割

clear,clc;
I = imread('Gray.jpg');
J = watershed(I, 4); % 4個連通區域,預設為8
subplot(121),imshow(I);
subplot(122),imshow(J);      
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

2.3.2 區域生長分割

根據統一物體區域的像素相似性來聚集像素點達到區域生長的方法。其中由一組表示不同區域的種子像素開始,逐漸合并種子周圍相似的像素進而擴大區域。直到無法合并像素點或小領域為止。其中區域内的相似性的度量可用平均灰階值、紋理、顔色等等資訊。關鍵在于選擇初始種子像素及生長準則。最早的區域生長圖像分割方法是由Levine等人提出。

2.3.3 區域分離聚合分割

區域分裂合并法(Gonzalez,2002),确定分裂合并的準則,然後将圖像任意分成若幹互不相交的區域,按準則對這些區域進行分裂合并。它可用于灰階圖像分割及紋理圖像分割。

3 基于能量泛函的分割方法

該類方法主要指的是活動輪廓模型(active contour model)以及在其基礎上發展出來的算法,其基本思想是使用連續曲線來表達目标邊緣,并定義一個能量泛函使得其自變量包括邊緣曲線,是以分割過程就轉變為求解能量泛函的最小值的過程,一般可通過求解函數對應的歐拉(Euler.Lagrange)方程來實作,能量達到最小時的曲線位置就是目标的輪廓所在。

活動輪廓模型逐漸形成了不同的分類方式,較常見的是根據曲線演化方式的不同,将活動輪廓模型分為基于邊界、基于區域和混合型活動輪廓模型。按照模型中曲線表達形式的不同,活動輪廓模型可以分為兩大類:參數活動輪廓模型(parametric active contour model)和幾何活動輪廓模型(geometric active contour model)。

3.1 參數活動輪廓模型(parametric active contour model)

Snake模型:

ASM(Active Shape Model)

AAM(Active Appearance Models)

CLM(Constrained local model)有限制的局部模型

3.2 幾何活動輪廓模型

幾何活動輪廓模型的曲線運動過程是基于曲線的幾何度量參數而非曲線的表達參數,是以可以較好地處理拓撲結構的變化,并可以解決參數活動輪廓模型難以解決的問題。而水準集(Level Set)方法(Osher,1988)的引入,則極大地推動了幾何活動輪廓模型的發展,是以幾何活動輪廓模型一般也可被稱為水準集方法。

二、部分源代碼

三、運作結果

【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】
【圖像分割】基于matlab GUI醫學圖像均值聚類+OUST+區域生長法圖像分割【含Matlab源碼 2210期】

四、matlab版本及參考文獻

1 matlab版本

2014a

繼續閱讀