slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
?????? ??? ???? PowerPoint Presentation
Download Presentation
?????? ??? ????

Loading in 2 Seconds...

play fullscreen
1 / 51

?????? ??? ???? - PowerPoint PPT Presentation


  • 370 Views
  • Uploaded on

數位影像處理 第九章 影像分割. 班   級 : 四電四 姓   名 : 李孟螢 學號 :109610339. 前言 :. 閥值運算 閥值的應用 設定合適的閥值 可適性閥值運算 邊緣閥值 導數與邊緣 二階導數 Canny 邊緣偵測 Houngh 轉換 在 MABLAB 中執行 Houngh 轉換. 9.1 導論 分割 (segmentation): 指將影像按照組合的部分分割,或將影像 中各個物件分割開來。 本章節主要探討 : 閥值運算與邊緣偵測。. 9.2 閥值運算

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '?????? ??? ????' - jaden


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

數位影像處理第九章 影像分割

班   級:四電四

姓   名:李孟螢

學號:109610339

slide2
前言:
  • 閥值運算
  • 閥值的應用
  • 設定合適的閥值
  • 可適性閥值運算
  • 邊緣閥值
  • 導數與邊緣
  • 二階導數
  • Canny 邊緣偵測
  • Houngh 轉換
  • 在MABLAB中執行Houngh轉換
slide3

9.1導論

分割(segmentation):

指將影像按照組合的部分分割,或將影像

中各個物件分割開來。

本章節主要探討:閥值運算與邊緣偵測。

slide4

9.2 閥值運算

分成兩種1.單一閥值2.雙重閥值

9.2.1 單一閥值

灰階影像要轉為二元(黑白)數位影像,

必須先將原始影像中設定灰階值 T,依照每

個像素灰階值大小,將像素轉換黑色或白色

:

灰階值 >T,像素轉換成白色

灰階值 ≦T,像素轉換成黑色

slide5

利用MATLAB 來進行閥值運算,將8位元

影像儲存成變數 X。使用imshow來檢測結果。

下圖影像是暗色背景中散落著淺色稻殼

>>r = imread ( ‘ rice.tif ’ ) ;

>> imshow ( r ) , figure , imshow ( r > 110 )

圖9.1

slide6

而淺素背景暗色物體的影像也可以利用相同的處理方式 :

>>b = imread ( ‘ bacteria.tif ’ ) ;

>> imshow ( b ) , figure , imshow ( b > 100 )

圖9.2

slide7

向量化代表將整個矩陣或向量進行一項

運算可以不必透過迴圈或一組巢狀迴圈來進

行運算。指令 X > T 會將像素灰階值大於 T

者轉換成 1 ,而小於或等於 T 者轉換成 0 ,

得到的 0 或 1 的矩陣,就是二元數位影像。

slide8

除了上面的方法,在MATLAB還可使用函

數 im2bw,對任何資料型態的影像進行閥值

運算,一般語法如下:

以下是圖9.19.2 的另一個方法

>>im2bw ( image , level ) ;

>>im2bw ( r , 0.43 ) ;

>> im2bw ( b , 0.39 ) ;

slide9

除了可以從影像中擷取某個物體,閥值

運算還可以顯示影像中隱藏的特性。

例如影像paper.tif看起來是全白,因為所

有的灰階值都很高。但設定高數值的閥值,結

果會出現超多黑點。

>>p = imread(‘ paper.tif ’) ;

>> imshow ( p ) , figure , imshow ( p > 124 )

slide11

9.2.2 雙重閥值

設定閥值 T1 與 T2 :

利用單一閥值的方法加以修,就成可成為雙

重閥值運算:

X>T1&X>T2

因 & 所以必須兩個不等式成立結果才會為 1。

灰階值介於T1與T2,則像素轉換成白色

灰階值其他數值,則像素轉換為黑色

slide12

指令是先將索引影像 spine.tif 轉換成八

位元灰階影像,然後再進行閥值運算:

結果雙重閥值顯示出脊椎一些比較細緻部

分,這是單一閥值無法做到。也使用im2bw得

到相似結果。

>>[ x , map ] = imread(‘ spine.tif ’) ;

>> s = uint8 ( 256 * ind2gray ( x , map ) );

>> imshow ( s ) , figure , imshow ( s > 115 & s < 125 );

>> imshow ( im2bw ( x , map , 0.45 ) & ~ im2bw ( x , map , 0.5 ) )

slide13

閥值計算後

原始影像

圖9.4

slide14

9.3 閥值的應用

閥值運算可適用於下列情況:

  • 去除影像中不需要的細節,留下基礎要素。
  • 顯示影藏的特性。

3. 還可用於其他用途,如將文字或雜亂背景去除。

slide15

雜亂背景去除的例子

>>r = read ( 256 ) * 128 + 127 ;

>>t = imread ( ‘ text.tif ‘ );

>> s = uint8 ( r * double ( not ( t ) ) );

>> imshow ( s ) , figure , imshow ( s > 115 & s < 125 );

>> imshow ( tr > 100)

圖9.5

slide16

9.4 設定適合的閥值

閥值運算中計算物體的大小或數量,必須設

定適合的閥值。設定數值太大或太小都會有影響

。假設利用im2bw進行閥值運算,閥值 t 的範圍

為 0 < t < 1 。

圖9.6

slide17

要找到適合閥值的方

法就是將影像直方圖視為

一種機率分布,這最佳閥

值法叫做Otsu演算法。

Otsu 演算法可以利用

MATLAB中函數 graythresh

執行。左圖為函數計算出

的結果。

imshow im2bw n tn figure imshow im2bw r tr figure imshow im2bw b tb figure imshow im2bw e te
>>imshow(im2bw(n,tn))>>figure,imshow(im2bw(r,tr))>>figure,imshow(im2bw(b,tb))>>figure,imshow(im2bw(e,te))>>imshow(im2bw(n,tn))>>figure,imshow(im2bw(r,tr))>>figure,imshow(im2bw(b,tb))>>figure,imshow(im2bw(e,te))

再利用im2bw對影像進行閥值運算:

slide20

>> c = imread(‘circles.tif’);>> x = ones(256,1)*[1:256];>> c2 = double(c).*(x/2+50)+(1-double(c)).*x/2;>> c3 = uint8(255*mat2gray(c2));>>t = graythresh(c3);>> ct = im2bw(c3,t);>> figure,imshow(c3),figure,imshow(ct);

9.5 可適性閥值運算

有時單一閥值是不能完全取出物體影像。這

在物體與背景亮度不均勻狀況下就有可能發生。

例如:將背景與圓形亮度不均來做閥值運算

結果不佳,不是每個物體都可以從背景擷取出

來,無論在哪一層都無法將圓形從背景取出。

slide21

圓形影像 c3

利用閥值計算 ct

圖9.8

slide22

>> p1=c3(:,1:64);>> p2=c3(:,65:128);>> p3=c3(:,129:192);>> p4=c3(:,193:256);>> g1=im2bw(p1,graythresh(p1));>> g2=im2bw(p2,graythresh(p2));>> g3=im2bw(p3,graythresh(p3));>> g4=im2bw(p4,graythresh(p4));>>imshow([g1 g2 g3 g4])

依照上面的情形可以將影像切成小塊,

再去對每一塊分別設定閥值。

slide23

將影像切割

分別進行閥值運算

圖9.9

slide24

9.6 邊緣偵測

所謂的邊緣指的是像素值之間可見的差

異可以用邊緣來測量影像中物體大小,從背

景取出特定物體,加以辨識及分類物體。而

最常用在邊緣偵測的MATLAB指令為:

edge ( image , ‘ method ‘parameters . . . )

slide25

圖9.10第二行第三行的灰階值很明顯不

同數值,差異超過 100。就算用肉眼也可以

察覺這樣灰階值的差異,這章節目的是要找

出真測影像邊緣的方法。

圖9.10

slide26

9.7導數及邊緣

從圖9.11左至右的灰階值,就可發現兩

種邊緣:灰階值變化緩慢的斜坡邊緣 (ramp

edge) ,和灰階值忽然改變的階梯邊緣 (step

edge) 或是理想邊緣 (ideal edge )。

圖9.11

slide27

假設圖9.11剖面函數為f(x),則導數為

f‘(x),為圖9.12。剖面中保持不變的其導數

為 0,起伏或是有差異的則非 0。

圖9.12

slide29

9.7.2 一些邊緣偵測濾波器

水平與垂直濾波器可以偵測到影像中水

平與垂直的邊緣,影像就會出現合理的亮度。

但結果影像的邊緣可能會有顫抖。

搭配Prewitt濾波器(Prewitt filters ) 從

另一個方向來平滑影像就可以改善了。

slide30

>>ic=imread('ic.tif');

>> px=[-1 0 1;-1 0 1;-1 0 1];

>> icx=filter2(px,ic);

>> figure,imshow(icx/255)

>> py=px';

>> icy=filter2(py,ic);

>> figure,imshow(icy/255)

依實際例子:

slide31

原始影像

凸顯垂直邊緣

凸顯水平邊緣

圖9.13

代入 Prewitt 濾波器

slide32

>>edge_p=sqrt(icx.^2+icy.^2);

>>figure,imshow(edge_p/255)

>>edge_t=im2bw(edge_p/255,0.3);

>>figure,imshow(edge_t)

我們也可以產生凸顯所有邊緣的影像:

凸顯邊緣

再經過閥值運算

圖9.14

edge p edge ic prewitt figure imshow edge p
>> edge_p=edge(ic,'prewitt');>> figure,imshow(edge_p);

可以直接使用指令執行preaitt偵測邊緣

濾波器。

圖9.15 edge 函數使用Prewitt濾波器

slide34

圖9.15與9.14有所不同,原因是函數

edge除了取濾波器平方總合的平方根,還

做了額外的運算。

還有其他邊緣偵測濾波器,Roberts 交

叉梯度濾波器和Sobel濾波器。兩者執行結

果非常相素,會以中心的差異濾波器的反方

向再執行平滑濾波器。

edge r edge ic roberts figure imshow edge r edge s edge ic sobel figure imshow edge s
>> edge_r=edge(ic,‘roberts’);>>figure,imshow(edge_r)>>edge_s=edge(ic,‘sobel’);>>figure,imshow(edge_s)

Roberts濾波結果

Sobel濾波結果

圖9.16

slide36

三個濾波器中,Sobel濾波器效果可能

最好,邊緣偵測明顯,即使有雜訊仍有一的

效果。

slide37

9.8二階導數

水平及垂直兩方向的二階導數總和稱為

Laplacian ,可使用二階導數進行邊緣偵測

。不過二階導數雜訊的缺點是非常容易受到

雜訊干擾。而Laplacian(取絕對值或平方後)

會產生雙重邊緣。

雖然執行完離散Laplacian濾波結果無誤

,但與之前的Prewitt和Sobel方法比較,仍

然雜亂許多。

slide38

edge 函數

使用Prewitt濾波器

離散Laplacian

濾波結果

Sobel濾波結果

slide39

9.8.2 零交錯

Laplacian濾波器比較適合用來找出零交錯

(zero crossings ) 的位置濾波結果出來為零的地

方則是邊緣位置,通常都是濾波後改變正負號的

地方。而濾波後必須符合以下條件:

1.灰階值為負,且要和灰階值為正的像素直角相鄰。

2.像素值為零,且必須介於正和負的像素之間。

slide40

但結果並不理想,太多灰階值改變的地

方被視為邊緣了。要去除這誤差可以利用

Marr-Hildreth 方法 :

1.使用高絲濾波器來平滑影像。

2.使用Laplacian濾波器對結果進行旋積。

3.找出零交錯。

這方法偵測出的邊緣與生物視覺相近。使用Log

參數和zerocross參數,差異在於zerocross可以

自行設定濾波器,代入Log濾波器然後再找零交

錯的結果。

slide41

零交錯偵測邊緣

先使用Log濾波器

slide42

9.9Canny邊緣偵測

Canny邊緣偵測,設計滿足邊緣偵測的三項要求:

1.降低錯誤率

2.邊緣定位

3.單一反應

slide43

Canny邊緣偵測

edge(ic,'canny',[0,0.05]);

edge(ic,'canny',[0.01,0.5]);

slide44

9.10Hough轉換

Hough轉換(Hough Transform)原本設

計用於偵測影像中的線條,但修改一下也可

以偵測其他形狀,影像中的每個點都掉轉換

域的一條直線上。轉換域上最多交叉線的點

會對應到影像中最明顯的那條線。不過

Hough轉換法仍然無法偵測到垂直線條。

slide45

9.11 在MATLAB中執行Hough轉換

利用hough.m的副程式:

slide46

>>c=imread('cameraman.tif');

>>hc=hough(c);

>>imshow(mat2gray(hc)*1.5)

>>max(hc(:))

>>[r,theta]=find(hc==95)

slide48

>>c=imread('cameraman.tif');

>>c2=imadd(imdivide(c,4),192);

>>imshow(c2)

>>houghline(c2,r,theta)

使用C2目的是為了讓影像亮度,更清晰

slide50

>> [r,theta]=find(hc>80)

>> houghline(c,r(8),theta(8))

>> houghline(c,r(6),theta(6))