數位影像處理 第九章 影像分割 班   級:四電四 姓   名:李孟螢 學號:109610339.

Slides:



Advertisements
Similar presentations
Chap 3 微分的應用. 第三章 3.1 區間上的極值 3.2 Rolle 定理和均值定理 3.3 函數的遞增遞減以及一階導數的判定 3.4 凹面性和二階導數判定 3.5 無限遠處的極限 3.6 曲線繪圖概要 3.7 最佳化的問題 3.8 牛頓法 3.9 微分.
Advertisements

对本书、视频等任何 MATLAB 问题,作者做到有问必答! 你买的不仅仅是书,更是一种 “ 有问必答 ” 的服务!
工職數學 第四冊 第一章 導 數 1 - 1 函數的極限與連續 1 - 2 導數及其基本性質 1 - 3 微分公式 1 - 4 高階導函數.
不定積分 不定積分的概念 不定積分的定義 16 不定積分的概念 16.1 不定積分的概念 以下是一些常用的積分公式。
大綱 1. 三角函數的導函數. 2. 反三角函數的導函數. 3. 對數函數的導函數. 4. 指數函數的導函數.
自由落體運動:主題 一、自由落體( Freely Falling Body ) 二、一維自由落體運動的特性 範例 1 自由落體( v 0 =0 ) 範例 2 自由落體的函數圖 範例 3 鉛直上拋 範例 4 自由落體運動公式.
變數與函數 大綱 : 對應關係 函數 函數值 顧震宇 台灣數位學習科技股份有限公司. 對應關係 蛋餅飯糰土司漢堡咖啡奶茶 25 元 30 元 25 元 35 元 25 元 20 元 顧震宇 老師 台灣數位學習科技股份有限公司 變數與函數 下表是早餐店價格表的一部分: 蛋餅 飯糰 土司 漢堡 咖啡 奶茶.
第一單元 建立java 程式.
2012資電科技寒假營 機器視覺與影像處理 助教:許原彰.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
5.1 自然對數函數:微分 5.2 自然對數函數:積分 5.3 反函數 5.4 指數函數:微分與積分 5.5 一般底數的指數函數和應用 5.6 反三角函數:微分 5.7 反三角函數:積分 5.8 雙曲函數.
Chapter 5 遞迴 資料結構導論 - C語言實作.
多媒体搜索引擎 多媒体文档内容理解技术.
PowerPoint圖形總合.
臺北市立大學 資訊科學系(含碩士班) 賴阿福
Differentiation 微分 之一 微分的基本原理.
第二节 边缘和线特征提取.
REGRESSION FOR ORDINAL OUTCOMES 「順序尺度依變項」的迴歸模型
數位影像處理 Digital Image Processing
A Silhouette-Crease Edge Enhancement for Noisy Images
銳角三角函數的定義 授課老師:郭威廷.
Differentiation 微分 之一 微分的基本原理.
C語言簡介 日期 : 2018/12/2.
SQL Stored Procedure SQL 預存程序.
101北一女中 資訊選手培訓營 圖論基礎 Nan.
第十四單元 弧長與旋轉體的表面積.
Noise in Image Processing
Visual Basic 物件導向程式設計簡介.
一、運算放大器簡介 Introduction to Operational Amplifiers
Wavelet transform 指導教授:鄭仁亮 學生:曹雅婷.
Java 程式設計 講師:FrankLin.
Chap3 Linked List 鏈結串列.
第一章 直角坐標系 1-1 數系的發展.
虎克定律與簡諧運動 教師:鄒春旺 日期:2007/10/8
第一單元 建立java 程式.
圖片格式簡介 張啟中.
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
第一章 直角坐標系 1-3 函數圖形.
第七單元 正反器 (教科書第四章) 數位系統實驗
Definition of Trace Function
第八章 影像復原 8.1 前言 影像復原(image restoration)指的是去除或減少影像取得過程中發生的劣化現象。
CH05. 選擇敘述.
期末考.
微積分網路教學課程 應用統計學系 周 章.
挑戰C++程式語言 ──第8章 進一步談字元與字串
北投溫泉博物館 建築特色 ★小組成員:高103林孟璇、林念儀、施妤柔★.
圓的定義 在平面上,與一定點等距的所有點所形成的圖形稱為圓。定點稱為圓心,圓心至圓上任意一點的距離稱為半徑,「圓」指的是曲線部分的圖形,故圓心並不在圓上.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
函數應用(二)與自定函數.
陣列與結構.
第八章 銷售預測(2).
第七章 資料轉換和 個案選擇 7.1 前言 7.2 〝Recode〞功能 7.3 〝Compute〞功能 7.4 〝Count〞功能
第四章 門檻值決定與區域分割.
数字图像处理 第七章 邻域运算.
第十二章 離散小波轉換之相關浮水印技術.
( )下列何者正確? (A) 7< <8 (B) 72< <82 (C) 7< <8 (D) 72< <82 C 答 錯 對.
6.1 動畫檔案的格式 6.2 建立合適的動畫元素.
波的振幅與週期量測 通訊一甲 B 楊穎穆.
第一章 直角坐標系 1-3 函數及其圖形.
非負矩陣分解法介紹 報告者:李建德.
第十三章 彩色影像處理.
第一章 導論 1.1 影像與圖片 人類的視覺已經演化出許多精巧的功能: 影像處理(image processing)是改變影像的本質,以便:
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
17.1 相關係數 判定係數:迴歸平方和除以總平方和 相關係數 判定係數:迴歸平方和除以總平方和.
第三十單元 極大與極小.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

數位影像處理 第九章 影像分割 班   級:四電四 姓   名:李孟螢 學號:109610339

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

9.1導論 分割(segmentation): 指將影像按照組合的部分分割,或將影像 中各個物件分割開來。 本章節主要探討:閥值運算與邊緣偵測。

9.2 閥值運算 分成兩種1.單一閥值2.雙重閥值 9.2.1 單一閥值 灰階影像要轉為二元(黑白)數位影像, 必須先將原始影像中設定灰階值 T,依照每 個像素灰階值大小,將像素轉換黑色或白色 : 灰階值 > T,像素轉換成白色 灰階值 ≦ T,像素轉換成黑色

影像儲存成變數 X。使用imshow來檢測結果。 下圖影像是暗色背景中散落著淺色稻殼 利用MATLAB 來進行閥值運算,將8位元 影像儲存成變數 X。使用imshow來檢測結果。 下圖影像是暗色背景中散落著淺色稻殼 >> r = imread ( ‘ rice.tif ’ ) ; >> imshow ( r ) , figure , imshow ( r > 110 ) 圖9.1

而淺素背景暗色物體的影像也可以利用相同的處理方式 : >> b = imread ( ‘ bacteria.tif ’ ) ; >> imshow ( b ) , figure , imshow ( b > 100 ) 圖9.2

向量化代表將整個矩陣或向量進行一項 運算可以不必透過迴圈或一組巢狀迴圈來進 行運算。指令 X > T 會將像素灰階值大於 T 者轉換成 1 ,而小於或等於 T 者轉換成 0 , 得到的 0 或 1 的矩陣,就是二元數位影像。

除了上面的方法,在MATLAB還可使用函 數 im2bw,對任何資料型態的影像進行閥值 運算,一般語法如下: 以下是圖9.1 9.2 的另一個方法 >> im2bw ( image , level ) ; >> im2bw ( r , 0.43 ) ; >> im2bw ( b , 0.39 ) ;

例如影像paper.tif看起來是全白,因為所 有的灰階值都很高。但設定高數值的閥值,結 果會出現超多黑點。 除了可以從影像中擷取某個物體,閥值 運算還可以顯示影像中隱藏的特性。 例如影像paper.tif看起來是全白,因為所 有的灰階值都很高。但設定高數值的閥值,結 果會出現超多黑點。 >> p = imread(‘ paper.tif ’) ; >> imshow ( p ) , figure , imshow ( p > 124 )

圖9.3白紙運算閥值

9.2.2 雙重閥值 設定閥值 T1 與 T2 : 灰階值介於T1與T2,則像素轉換成白色 利用單一閥值的方法加以修,就成可成為雙 重閥值運算: X > T1 & X > T2 因 & 所以必須兩個不等式成立結果才會為 1。 灰階值介於T1與T2,則像素轉換成白色 灰階值其他數值,則像素轉換為黑色

指令是先將索引影像 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 ) )

原始影像 閥值計算後 圖9.4

9.3 閥值的應用 閥值運算可適用於下列情況: 去除影像中不需要的細節,留下基礎要素。 顯示影藏的特性。 3. 還可用於其他用途,如將文字或雜亂背景去除。

雜亂背景去除的例子 >> 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

9.4 設定適合的閥值 閥值運算中計算物體的大小或數量,必須設 定適合的閥值。設定數值太大或太小都會有影響 。假設利用im2bw進行閥值運算,閥值 t 的範圍 為 0 < t < 1 。 圖9.6

ni : 灰階值為i的像素數目 pi : 灰階值為i的機率 Otsu演算法: 定義: pi = ni / N , N : 像素的總數 K : 閥值 定義: ω ( k ) = Σ pi , (a) μ ( k ) = Σ pi , (b) k i=0 L-1 i=k+1

(a)+(b) = Σ pi =1. 定義:影像平均為 μT = Σ ipi , 然後利用下面式子找出最大K值 L-1 (a)+(b) = Σ pi =1. 定義:影像平均為 μT = Σ ipi , 然後利用下面式子找出最大K值 (μT ω(k) –μ (k) )2 ω(k) μ(k) i=0 L-1 i=0

要找到適合閥值的方 法就是將影像直方圖視為 一種機率分布,這最佳閥 值法叫做Otsu演算法。 Otsu 演算法可以利用 MATLAB中函數 graythresh 執行。左圖為函數計算出 的結果。

再利用im2bw對影像進行閥值運算: >>imshow ( im2bw ( n , tn )) >>figure,imshow ( im2bw ( r, tr )) >>figure,imshow ( im2bw ( b, tb )) >>figure,imshow ( im2bw ( e , te ))

圖9.7

9.5 可適性閥值運算 有時單一閥值是不能完全取出物體影像。這 在物體與背景亮度不均勻狀況下就有可能發生。 例如:將背景與圓形亮度不均來做閥值運算 結果不佳,不是每個物體都可以從背景擷取出 來,無論在哪一層都無法將圓形從背景取出。 >> 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);

圓形影像 c3 利用閥值計算 ct 圖9.8

依照上面的情形可以將影像切成小塊, 再去對每一塊分別設定閥值。 >> 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])

將影像切割 分別進行閥值運算 圖9.9

9.6 邊緣偵測 所謂的邊緣指的是像素值之間可見的差 異可以用邊緣來測量影像中物體大小,從背 景取出特定物體,加以辨識及分類物體。而 最常用在邊緣偵測的MATLAB指令為: edge ( image , ‘ method ‘parameters . . . )

圖9.10第二行第三行的灰階值很明顯不 同數值,差異超過 100。就算用肉眼也可以 察覺這樣灰階值的差異,這章節目的是要找 出真測影像邊緣的方法。 圖9.10

9.7導數及邊緣 從圖9.11左至右的灰階值,就可發現兩 種邊緣:灰階值變化緩慢的斜坡邊緣 (ramp edge) ,和灰階值忽然改變的階梯邊緣 (step edge) 或是理想邊緣 ( ideal edge )。 圖9.11

假設圖9.11剖面函數為f(x),則導數為 f ‘(x),為圖9.12。剖面中保持不變的其導數 為 0,起伏或是有差異的則非 0。

導數的定義: =lim 在影像中,h的最小值為 1 導數為 f ( x + 1 ) – f ( x ) . 其他導數為 lim , lim . df f ( x + h ) – f ( x ) dx h h f ( x ) – f ( x – h ) (f ( x + h ) – f ( x - h )) 2h h h h

相對離散導數 f ( x ) – f ( x – 1 ), . 影像為二維,所以要使用偏微分。其中表示 法梯度定義成: , 函數( x , y )指向數值增加最大方向為梯度方 向 2

其大小 ,

9.7.2 一些邊緣偵測濾波器 水平與垂直濾波器可以偵測到影像中水 平與垂直的邊緣,影像就會出現合理的亮度。 但結果影像的邊緣可能會有顫抖。 搭配Prewitt濾波器( Prewitt filters ) 從 另一個方向來平滑影像就可以改善了。

依實際例子: >>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)

原始影像 凸顯垂直邊緣 凸顯水平邊緣 圖9.13 代入 Prewitt 濾波器

我們也可以產生凸顯所有邊緣的影像: >> 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); 可以直接使用指令執行preaitt偵測邊緣 濾波器。 >> edge_p=edge(ic,'prewitt'); >> figure,imshow(edge_p); 圖9.15 edge 函數使用Prewitt濾波器

圖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) Roberts濾波結果 Sobel濾波結果 圖9.16

三個濾波器中,Sobel濾波器效果可能 最好,邊緣偵測明顯,即使有雜訊仍有一的 效果。

9.8二階導數 水平及垂直兩方向的二階導數總和稱為 Laplacian ,可使用二階導數進行邊緣偵測 。不過二階導數雜訊的缺點是非常容易受到 雜訊干擾。而Laplacian (取絕對值或平方後) 會產生雙重邊緣。 雖然執行完離散Laplacian濾波結果無誤 ,但與之前的Prewitt和Sobel方法比較,仍 然雜亂許多。

edge 函數 使用Prewitt濾波器 離散Laplacian 濾波結果 Sobel濾波結果

9.8.2 零交錯 Laplacian濾波器比較適合用來找出零交錯 ( zero crossings ) 的位置濾波結果出來為零的地 方則是邊緣位置,通常都是濾波後改變正負號的 地方。而濾波後必須符合以下條件: 1.灰階值為負,且要和灰階值為正的像素直角相鄰。 2.像素值為零,且必須介於正和負的像素之間。

但結果並不理想,太多灰階值改變的地 方被視為邊緣了。要去除這誤差可以利用 Marr-Hildreth 方法 : 1 但結果並不理想,太多灰階值改變的地 方被視為邊緣了。要去除這誤差可以利用 Marr-Hildreth 方法 : 1.使用高絲濾波器來平滑影像。 2.使用Laplacian濾波器對結果進行旋積。 3.找出零交錯。 這方法偵測出的邊緣與生物視覺相近。使用Log 參數和zerocross參數,差異在於zerocross可以 自行設定濾波器,代入Log濾波器然後再找零交 錯的結果。

零交錯偵測邊緣 先使用Log濾波器

9.9 Canny邊緣偵測 Canny邊緣偵測,設計滿足邊緣偵測的三項要求: 1.降低錯誤率 2.邊緣定位 3.單一反應

Canny邊緣偵測 edge(ic,'canny',[0,0.05]); edge(ic,'canny',[0.01,0.5]);

9.10Hough轉換 Hough轉換(Hough Transform)原本設 計用於偵測影像中的線條,但修改一下也可 以偵測其他形狀,影像中的每個點都掉轉換 域的一條直線上。轉換域上最多交叉線的點 會對應到影像中最明顯的那條線。不過 Hough轉換法仍然無法偵測到垂直線條。

9.11 在MATLAB中執行Hough轉換 利用hough.m的副程式:

>>c=imread('cameraman.tif'); >> hc=hough(c); >> imshow(mat2gray(hc)*1.5) >>max(hc(:)) >> [r,theta]=find(hc==95)

利用Hough轉換後結果

使用C2目的是為了讓影像亮度,更清晰 >>c=imread('cameraman.tif'); >>c2=imadd(imdivide(c,4),192); >>imshow(c2) >>houghline(c2,r,theta) 使用C2目的是為了讓影像亮度,更清晰

執行houghline

>> [r,theta]=find(hc>80) >> houghline(c,r(8),theta(8)) >> houghline(c,r(6),theta(6))

END~