# 2024 NTU CV Final Review ## 名詞解釋 |Problem|Answer| |---|---| |digital edge|灰階值劇烈變化的地方| |step edge|突然劇烈上升或下降的edge (discontinuity in gray level)| |roof edge|緩升再緩降(或反過來)的edge --影像強度的一階導數表現出不連續性。| |line edge|兩個緊鄰的step edge組成| |gradient direction|漸變方向由暗到亮用於邊緣組織, 選擇 與連接| |edge contour direction|邊的輪廓的方向。沿著邊緣,右側明亮,左側黑暗,與 gradient direction 成 90度 夾角| |Gradient-based edge detector|找一階偏微分的值很大的地方(明顯的不連續)| |Zero-crossing edge detector|一次微分配合 threshold 可能不足夠描述邊緣, 二次微分配合新的 threshold 可看出一次微分急遽變化的表現| |misdetection|明明是邊但你沒說它是邊| |false-alarm|明明不是邊但你說是邊| |line segment|可以被描述成一個拉長的矩形,其內部有一致的灰階值,被另一個擁有不同灰階值區域包圍| |Facet model | 可以將圖像視為基礎連續體或分段連續灰階強度表面,例如:piecewise constant(平面facet model),分段線性(傾斜facet model),piecewise quadratic和分段三次。| |Observed digital image|所觀測的圖假設為 帶有雜訊離散採樣的扭曲或是失真版本| |Peak noise pixel|A pixel whose gray level intensity significantly differs from neighborhood pixels| |Iterated Facet Model|每個中心像素周圍找一個最佳的代表值,可以得到馬賽克的效果 |Shape region constraint|各個小平面必須是平滑形狀(𝑘∗𝑘blocks of pixels)| |Region gray level constraint|每個方面的灰階必須是行列座標的多項式函數。| |Resolution cell|解析單元。B(r,c) be the K * K blocks of resolution cells centered around resolution cell (r,c)| |Gradient-Based Facet Edge Detection|用 facet model 計算 Gradient 來判斷哪些 pixel 是 edge| |Bayesian Approach to Gradient Edge Detection|使用 facet model 計算每 pixel 是不是 Edge 的機率,如果是 edge 的機率比較高就標記為 edge| |directional derivative|給定方向的變化率<br>應用:Directional Derivative Edge Finder| |Integrated Directional Derivative Gradient Operator|透過對一階方向導數做方形(square area)積分,來量測積分方向導數的強度<br>應用:找出step edge並更精準的計算step edge direction| |corner detection algorithm|![](https://i.imgur.com/zSAew2y.png =500x)purpose: to detect buildings in aerial images| |Corners|The occurence of an edge and significant changes in edge direction<br>Intersection of two edges<br>應用:空照圖偵測建築物| |Texture|Similar structure repeated over and over again in an image, often has some degree of randomness<br>Repeating patterns of local variations in image intensity which are too fine to be distinguished as separated object at the observed resolution.<br>應用:shape from texture 判斷 3D 圖形| |Texture element (Texel)|Basic textural unit of some defining spatial relationships (組成texture的最小單位)<br>應用:分析 texture 的規律| |Texture primitive|Connected set of pixels characterized by attribute set<br>應用:分析texture coarse / fine| |Pattern recognition|Given textured region, determine the class the region belongs to<br>應用:將圖片內容歸類為不同材質| |Generative model|Given textured region, determine a description or model for it<br>應用:找出模型來 describe 圖片 texture 的規律| |Texture segmentation|Given image having many textured areas, determine boundaries| |Shape from Texture|使用圖像紋理的gradient來估計3D物體的表面方向| |image segmentation|將圖片劃分成一組不重疊的區域,而這些分割區域的聯集是整個圖片| |Connected Component|互相連通且具有相同 label 或性質的 pixels| |LANDSAT image|由七個獨立的圖像組成,稱為bands| |Clustering|依照 pattern vectors 把一個 set 分割成 subset<br>應用:透過 spatial clustering 進行 segmentation| |measurement space|要分類的測量數據的模式被表示為測量向量| |Spatial Clustering|有界的、不太可能偶然發生的、具有足夠規模和集中度的事件組| |grouping|把標籤值相同或相近的區塊圈選出來<br>目的:有利於將群組化後的資訊進行一些計算<br>應用:segmentation分割、edge linking邊緣鏈接| |extracting|extract屬性,為每組像素計算其屬性列表<br>目的:把觀察物區塊標明出來,並且得到夠多的資訊以理解觀察物<br>應用:解析質心、orientation方向、面積、空間矩| |Junction|Point where lines, arcs, segments meet<br>可以用來分析圖形的特性(?| |Border Tracking Algorithm|以順時針方向輸出圖片中每個 region 的border pixel<br>目的:做 border extraction| ||| ## Chapter 6: Neighborhood Operator ### Introduction(neighborhood operator可用以下來分類) 1. domain type: symbolic and numeric -numeric數字: +, -, max, min -symbolic : AND, OR, NOT, Table look up * neighborhood type : 4 connected and 8 connected * Recursive type: Rec.(Sequential) / Non-Rec. (parallel) 輸出是否取決於先前生成的輸出,從 memory 觀點: sequential vs parallel ### Non-Rec. Neighborhood Operator for noise cleaning ![image](https://hackmd.io/_uploads/BJO00WRgyx.png) ## C6考題 * Q1. ==symbolic domain== 內容: 包含符號的域 目的:將像素分類,每個像素屬於一個類別, 應用:鄰域算子的域類型 (symbolic (符號域)所支援的運算: AND, OR, NOT, …, etc) * Q3. ==Neighborhood operator== 用鄰域與operation計算,使像素之間的關西變成局部的 應用:dilation, erosion, or convolution等 * Q4. ==Region-Growing Operator== 通過將像素與其鄰域進行比較,將相似的像素合併成區域。 * Q5. ==Nearest Neighbor Sets and Influence Zones== 使用其最近的非背景相鄰像素的標籤來標記每個背景像素 𝑖𝑛𝑓𝑙𝑢𝑒𝑛𝑐𝑒 𝑧𝑜𝑛𝑒𝑠 :最近鄰集 * Q6. ==Region-Shrinking Operator== 所有邊框像素上的標籤變更為背景像素,又名侵蝕 * Q7. Approach Euclidean-distance 圖1 x=2 y=1 圖2 x=3 y=1 ![image](https://hackmd.io/_uploads/HyLuyKYVkl.png) * Q8. Mark-Interior/Border-Pixel Operator 用於標記圖像中的內部和邊界像素。 ![image](https://hackmd.io/_uploads/S1GJ-Ft41x.png) * Q9. Connectivity Number Operator 將像素與其同類鄰居的連接方式進行分類類別 (Yokoi、Rutovitz) * Q10. Yokoi Connectivity Number ![image](https://hackmd.io/_uploads/S1j5-FFNye.png) ![image](https://hackmd.io/_uploads/BJiUGYKVyg.png) 0 孤立、1 邊、2 連接、3 分支、4 crossing、5內部點 * Q11 .Rutovitz Connectivity Number 計算在像素的 8 個鄰域內移動時從不同於中心像素的符號到與中心像素相同的符號的轉換次數。 各自標出相同&不同的pixel * Q12. Connected Shrink Operator 刪除pixel後還是不會斷開 ![image](https://hackmd.io/_uploads/SkwMwKtVyg.png) 剛好一個a值結果是1的話,才把他變成background值;否則維持原樣。 * Q13. Pair Relationship Operator 使用指定的標籤重新標記內部像素旁邊的所有邊框像素 ![image](https://hackmd.io/_uploads/BJ9WOtFEyx.png) p(關注);剩下標q(不關注) 周圍只要有一個是interior && 自己是border 就標成p;如果周圍都沒有interior 或 自己是interior(自己不是border) 就標成q -> 原本是interior的不動 寫q;部分原本是border(q)的會改成p。 * ==Q14. Thinning Operator== 目的: 對稱收縮,直到沒有內部像素留下 應用: 得到影像骨架 ![image](https://hackmd.io/_uploads/H1rRuKtNkl.png) * Q15. Distance Transformation Operator 每個label的pixel距離其邊界的距離 ![image](https://hackmd.io/_uploads/By5ftYKNkx.png) Q16. Radius of Fusion(融合半徑) 用一個半徑為p的圓盤disk去滾,就有可能把一些connected components 融合成一個大塊的 ![image](https://hackmd.io/_uploads/B1ArtFFV1x.png) * Q17. Number of Shortest Paths 計算可以走到P0(原始image)的shortest path 有幾條(總數) ![image](https://hackmd.io/_uploads/r1mhttKEye.png) * Q18. Extremum-Related Neighborhood Operators(極值相關鄰域運算符) 找到相對最小值和相對最大值的像素或區域 目的:擷取感興趣的資訊 * Q19. Non-Minima-Maxima Operator ![image](https://hackmd.io/_uploads/rkNtoYFEyg.png) * Q20. Relative Extrema Operator 檢測圖像中的相對極大和相對極小點。 ![image](https://hackmd.io/_uploads/B1LTjYFE1e.png) * Q21. Reachability Operator(可達性運算子)感覺會考 可以清楚看到整張圖相對的relative大小關係 ![image](https://hackmd.io/_uploads/HkzQ2KY41g.png) * Q22. Cross-correlation ![image](https://hackmd.io/_uploads/B1NSnFY4kx.png) * Q23.Convolution ![image](https://hackmd.io/_uploads/SkxH0FtEJe.png) * ==Q24== What is the key difference between Convolution and Correlation ?卷積和相關之間的主要差異是什麼? 卷積具有結合性。 If F and G are filter Convolution is associative, F * (G * I) = (F * G) * I. * ==Q25== When will Convolution and Correlation be identical with each other ?卷積和相關何時彼此相同? 只有當內核是點對稱時,它們才是相同的。 ## Chapter 7: Conditioning and Labeling * ==conditioning== 利用模型去除無用的雜訊,可用來降躁 目的:去除無用的資訊、雜訊 應用:降躁、背景均一化 (給分標準:三取二。去除無用的資訊、降躁) * ==labeling== 將相同特性的像素給予同樣的編號,可用於邊緣檢測、自駕車、機器人、相片、商品搜尋、辨識影像中的各種物體搜尋等 * ### Noise Cleaning * ==Noise Cleaning(雜訊去除)== 透過鄰域空間連貫性與鄰域像素同質性,用image上其他更相關的pixel值或是鄰域中其他像素進行平均/滑的值做替換,去除雜訊 * ==Noise Cleaning -box filter==: 透過分割的方式可以減少計算量 使用遞迴的方式,避免多重迴圈 * ==Zero-crossing edge detector==: 一次微分配合 threshold 可能不足夠描述邊緣, 二次微分配合新的 threshold 可看出一次微分急遽變化的表現 #### 7.2.1 A Statistical Framework for Noise Removal idealization (理想化): 全部 pixel 為同一顏色, e.g., 純色圖 pixel 乘上權重後的新結果, 經過規一化 (Normalizaton) 後, 能得到去除雜訊的效果 #### 7.2.3 Outlier or Peak Noise(必考) * ==Median root:== 一直重複做median filter會得到一個最後不會再改變的結果稱為 median root * ==k-nearest neighbor average:== 將附近的所有像素值與中心像素值進行比較。 最接近的k個像素值用於確定最終值,在這種情況下為這些k個像素的平均值。 * ==Outlier or peak noise:== 離群值(峰值雜訊),一個像素,其像素值與其相鄰像素值明顯不同,像素值會被隨機雜訊替換。 * ==Order Statistic Neighborhood Operators== 將鄰域像素排序後所設計的鄰域運算子 如Median Operator * ==2.(6%) Please list at least 3 noise removal methods and equations using neighborhood operators.== ![image](https://hackmd.io/_uploads/HkF7h39E1x.png) ![image](https://hackmd.io/_uploads/SkOr2n94kg.png) ![image](https://hackmd.io/_uploads/ryHv335VJl.png) ![image](https://hackmd.io/_uploads/BJ_d22cEkx.png) #### 7.2.12 Noise-Removal Techniques Experiments * ==噪音的種類:== Uniform 高斯 鹽和胡椒 變化的雜訊 * ==Line segment:== 一個拉長的矩形,其內部有一致的灰階值,被另一個擁有不同灰階值區域包圍 ![image](https://hackmd.io/_uploads/HyVMs2qEke.png) ### 7.3 Sharpening * ==Unsharp masking:== 從每個像素中減去鄰域平均值,然後縮放數值。 效果:產生的影像,雖然更清晰,可能是一個較不准確的影像。 * ==Extremum Sharpening (極值銳化)== (更靠近 erosion後的值 還是 dilation 後的值, 就更新當前 pixel 為該值) 效果:亮的地方更亮,暗的地方更暗 應用:影像銳利化 ### 7.4 Edge Detection (邊緣偵測) * ==Digital edge (Edge in a digital image)== 亮度值明顯不同的邊界(找灰階有劇烈變化的邊界) * ==Edge:== 亮度有突然的抬升或下降。 * ==Step Edge:== 圖片表現出影像強度大小的不連續性。 * ==Roof Edge:== 影像強度的一階導數表現出不連續性。 * ==line edge:== 兩個 step edges 構成一個 line edge ![image](https://hackmd.io/_uploads/SyVau9KNyx.png) #### 7.4.1 Gradient Edge Detectors (梯度 邊緣 檢測器)據說會考 透過 mask 檢查 圖片的梯度, 來做邊緣檢測,通常會設置 threshold 來判斷是否為 edge 舉三個例子: ![image](https://hackmd.io/_uploads/BkC-39t4kx.png) ...等 * ==Prewitt== 利用中心差分來近似微分 * ==Sobel edge detector== 一種 Edge Detectors的方法,和Prewitt 邊緣偵測器很相,只是它比較強調靠近mask中心的像素。 ---- * ==gradient direction (漸變方向)==: dark to light. (由暗到亮) 用於邊緣組織, 選擇 與連接 * ==edge contour direction (邊緣輪廓方向)(考ㄍㄨㄛ)==: 沿著邊緣,右側明亮,左側黑暗,與 gradient direction 成 90度 夾角 * ==edge operator 最好符合以下四個特性==: 梯度大小準確、梯度方向準確、step邊 的 對比度準確、step邊 的 方向準確 * ==directional derivative(方向倒豎)== 考過 給定方向的變化率 應用:Directional Derivative Edge Finder #### 7.4.2 Zero-Crossing Edge Detectors (跨零點 邊緣檢測器) 一次微分配合 threshold 可能不足夠描述邊緣, 二次微分配合新的 threshold 可看出一次微分急遽變化的表現 ### 7.5 Line Detection (線段偵測) 影像上的線段可以被描述為一個細長的矩形區域,該矩形區域具有均勻的灰度級,並且其較長邊上的兩邊均被不同灰度級的均勻區域所包圍。 ![image](https://hackmd.io/_uploads/rJYJq9YEkx.png) ## Chapter 8:The Facet Model * ==Facet model(考過)==: 可以將圖像視為基礎連續體或分段連續灰階強度表面, 例如:piecewise constant(平面facet model),分段線性(傾斜facet model),piecewise quadratic和分段三次。 * ==piecewise constant== 分段常數(平的小平面模型)理想區間:常數灰階值 * ==piecewise linear(考過)== 分段線性(斜的小平面模型)理想區間:斜的平面灰階值 * ==piecewise quadratic== 分段二次方程式(灰階表面)理想區間:二元二次方程式 (圓形等) * ==piecewise cubic== 分段三次方程式,灰階表面 理想區間:立方表面 ----- * ==observed digital image== 所觀測的圖假設為 帶有雜訊離散採樣的扭曲或是失真版本 * ==peak noise pixel(考過)== 尖端雜訊像素,灰階值意義上和鄰居不一樣(略顯突兀的感覺) * ==Iterated Facet Model==: 在每個中心像素周圍找一個最佳的代表值,可以得到馬賽克的效果 * ==Shape region constraint(形狀區約束)==: 各個小平面必須是平滑形狀(𝑘∗𝑘blocks of pixels) * ==Region gray level constraint==: 每個方面的灰階必須是行列座標的多項式函數。 * ==directional derivative==: 給定方向的變化率 應用:Directional Derivative Edge Finder * ==Integrated Directional Derivative Gradient Operator==: 透過對一階方向導數做方形(square area)積分,來量測積分方向導數的強度 應用:找出step edge並更精準的計算step edge direction * ==corner points==: 角可以定義為兩邊的交點。 目的:可以從影像中提取的其他類的特徵包括角、孔和地形標記(峰、脊和谷)。 應用:空照圖偵測建築物 ### 8.2 ==Relative maximum(考過)== 求相對極大值的方法 要滿足兩點 第一點就是 一階導數為零 第二點就是 二階導數是負的 EX: ![image](https://hackmd.io/_uploads/ByDwZ6BGkg.png) ![image](https://hackmd.io/_uploads/rk5qf6SGkx.png) ![image](https://hackmd.io/_uploads/rkgqa2rM1g.png) ex: 這個0.25跟0只差0.25,絕對值是小於1/2的,所以他是一個相對極大值 ![image](https://hackmd.io/_uploads/SJEoT3Hfkg.png) 得到𝑐 ̂>0,因此𝑓_4=2 並非相對極大值。 ![image](https://hackmd.io/_uploads/HJ8lAhSGkx.png) ### ==8.3 Sloped Facet Parameter and Error Estimation(斜平面參數與錯誤偵測)會考高機率== ==直接背== ![image](https://hackmd.io/_uploads/B1nUN65V1g.png) ### 8.4 Facet-Based Peak Noise Removal (小平面為準的雜訊移除): 概念: 先排除掉中間這點來看,看模型預估的值應該是多少,如果預估值和觀測值相差太大,我們就判斷此觀測值為Peak Noise. ### ==8.5 Iterated Facet Model (迭代小平面模型)== 在每個中心像素周圍找一個最佳的代表值,可以得到馬賽克的效果 ### 8.6 Gradient-Based Facet Edge Detection (梯度為準的小平面邊緣檢測) 概念: 梯度邊界偵測就是找一階偏微分的值很大的地方(明顯的不連續) ![image](https://hackmd.io/_uploads/BkSA_RrMkg.png) 所以我們就以α ̂^2+β ̂^2 當作一個判斷的基準 ![image](https://hackmd.io/_uploads/rkWJF0Hzkx.png) 可能要解釋 ### ==8.7 Bayesian Approach to Gradient Edge Detection== 用貝式定理去決定觀測的梯度強度是否為Edge 這邊講的是說 在統計值為G的情況下,edge的機率要大於nonegde的機率 ### 8.8 Zero-Crossing Edge Detector (跨零點邊緣檢測) * ==directional derivative== 給定方向的變化率 應用:Directional Derivative Edge Finder ### 8.9 Integrated Directional Derivative Gradient Operator (略) 透過對一階方向導數做方形(square area)積分,來量測積分方向導數的強度 應用:找出step edge並更精準的計算step edge direction ### ==8.10 Corner Detection有考== 利用Corner Detection抓出一些feature,讓電腦也能判斷出他是同一個物體然後大概轉了多少角度 ![image](https://hackmd.io/_uploads/Sybnfdp4ye.png) * ==corner points== 有邊出現、明顯邊方向的變化 應用:空照圖偵測建築物 ### ==8.11 Isotropic Derivative Magnitudes (各向同性)== 梯度大小不會因為方向改變而改變 ### 8.12 Ridges and Ravines * ==Ridges (山脊):== 自身灰階值與鄰居相比較大 * ==Ravines (峽谷):== 自身灰階值與鄰居相比較小 ### ==8.13 Topographic Primal Sketch (地形判別)考過== Peak:山峰 各個方向上的局部最大值 pit:凹坑 各個方向上的局部最小值 ridge:山脊 由一系列山脊點組成的曲線,沿著山脊線,左右兩邊的點較低 ravine:山谷 沿著山谷,左右兩邊的點較高 saddle:鞍狀 在一個方向上有局部最大值,在垂直方向上有局部最小值。 saddle point:山脊(ridge)跟山谷(Ravine)的交界處,所以他的梯度會是 0 flat:平面 簡單的水平表面,必須沒有坡度和曲率。 hillside:山坡 山坡點是先前的類別未涵蓋的任何內容。 ## Chapter 9 Texture * ==Texture:== 以某種規則或重複模式出現的一組texels。 * ==Texel== 組成材質的元素, 或說組成材質的基本單位 * ==Texture Primitive== 相同屬性會被歸類成一類 例如:具有灰階屬性的像素 * Some Texture Properties 細緻 粗糙 對比高 有方向性的 樹皮粗糙 排列整齊 平滑 顆粒度 隨機性 線型 斑駁 不規則 圓丘 * ==granularity(顆粒度)== 顆粒度大還是小 * ==Vector Dispersion== 將紋理劃分為互斥的鄰域 (每個平面最像,相互之間error最小的區域),以鄰域灰階值來為每個鄰域fit傾斜平面 * ==Coarseness(粗紋理)== 粗紋理,具有很小的方差,並且分佈僅隨距離而略有變化。 * ==Fractal(考過)== 碎形,一種自然的現象或是數學運算使圖像在不同 scale 上 recursive 畫出相同的 pattern重複劃出相同的圖案,這一類recursive的動作畫出的pattern我們稱為fractal * ==tangent line== 切線,指的是一條剛好觸碰到曲線上某一點的直線。更準確地說,當切線經過曲線上的某點(即切點)時,切線的方向與曲線上該點的方向是相同的。 * ==AutoRegresssion Models== 使用附近pixel對目前像素的值進行線性估計 * ==Discrete Marcov Random Fields== 每個像素的值是其附近值與相關noise的線性組合 EX: ![image](https://hackmd.io/_uploads/HyLT36Yfkg.png) 1,2,3,4是texel 經過重新排列組合可以組成texture 紅框的不是texel * ==Texture Primitive (紋理圖元):== 相同屬性會被歸類成一類 (Connected set of pixels characterized by attribute set) 舉例: 具有相同灰階值可歸成一類 (Simplest primitive: pixel with gray level attribute) * ==Characterizing Texture (紋理特性):== 1.圖元類型 (types of its primitives) 2.圖元個數 (number of its primitives) 3.空間的組成(their spatial organization or layout) 沒有scale(尺度)或resolution(分辨率)的參照就無法分析紋理。**紋理是與比例有關的現象** (一張近拍,一張遠拍 紋理表現不同) ### ==紋理分析 ( Texture Analyze ) - 必考== * ==Pattern recognition:== 給定紋理區域,確定該區域所屬的類別。 * ==Generate model:== 給定紋理區域,確定其描述或模型。 * ==Texture segmentation:== 給定具有許多紋理區域的圖像,確定邊界。 ![image](https://hackmd.io/_uploads/r1PjC6tzke.png) ### 9.2-9.3 co-occurrence (共生矩陣) * First-Order Gray-Level Statistics 單個pixel的灰階拿來做統計 EX:直方圖, 平均值, 中值, 變異數 * Second-Order Gray-Level Statistics 針對兩個pixel間的相關性,pixel會去看他鄰近的pixel對於他的相關性,兩個固定相對位置的pixel,他們聯合的灰階所做的統計 (灰階共生矩陣) ![image](https://hackmd.io/_uploads/rypdxRKGkl.png) * The variant of the Co-Occurrence Matrix (共現矩陣的變化法): 當 d 越小, 其 p(d) 越大 (如下圖), 表較為粗糙 ![image](https://hackmd.io/_uploads/SyJK-0Kf1l.png) #### Strong Texture Measures and Generalized Co-Occurrence 前面是pixel與pixel的關係此處分析 primitive 跟 primitive之間的關係根據一個群體跟一個群體去分析,會比較清楚了解image有一個怎麼樣的特性 主要:看 primitives 之間的關係 * 選好特定的 primitives, 就能做進一步的分析, 如以下的關係性質: primitives 的列表 (a list of primitives) 列表中的中心座標(their center coordinates) primitives 的屬性 (their attributes) * Spatial Relationship (空間關係): ![image](https://hackmd.io/_uploads/ByE0MCFMJe.png) ### 9.4 autocorrelation (自相關) ### Application * ==Texture Segmentation== 將圖像分成具有不同紋理的區域,包含相似的像素組。 可以用texture energy的方式或深度學習 * ==Synthetic Texture Image Generation(考過)== 將兩張影像融合在一起 (拼圖的結果) 步驟0:輸入樣本紋理 步驟1:從原始紋理樣本影像中選擇一個區域作為初始區域。 步驟2:找到原始影像中具有相似邊緣的區域。 步驟3:將其貼到結果影像上。 步驟4:回到步驟2重複。 * ==Shape from Texture== 使用圖像紋理的gradient來估計3D物體的表面方向 ## Chapter 10 Image Segmentation背五個分割方式+ (C(T)/#E(T)) #### 10.1 Introduction (介紹) * ==contrast==: (對比度)是指圖像中亮度(或顏色)差異的程度 * ==image segmentation:== 將影像劃分為一組不重疊的區域 分割區域的聯集就是整個影像 目的:將圖像分解為對應用程式有意義的部分 * “meaningful” segmentation?: 需有相似的屬性、不同區塊要能有所區別、簡單無小洞、簡單無鋸齒 * ==image segmentation 特性==: 1.ad-hoc 2.不同技法有不同妥協與強調的部分 * ==Connected Component== 二維影像中的連接組件是具有相同值或標籤的像素的連接區域。 #### 10.2 Measurement-Space-Guided Spatial Clustering (空間叢集) * ==Measurement space (觀測空間)==: 要分類的測量資料的模式表示為測量向量, 被觀測向量所表達, 進而做到分類的樣板 * ==Spatial Clustering (空間叢集)==: 一組有限的事件和集中不太可能偶然發生 ![image](https://hackmd.io/_uploads/r1cK7WXQ1l.png) * 演算法步驟 (step): 1. 使用測量空間聚類過程來定義測量空間中的分區(定義其特徵) 2. 每個像素都被分配了它所屬的測量空間分區中的單元的標籤。 (給出標籤值) 3. 影像片段被定義為具有相同標籤的像素的連通分量。 (用連接算子合併) 優點: Clustering只需要遍歷一次資料。 缺點:邊緣通常有許多噪點 若圖片太複雜就沒有良好的空間連續性、邊緣通常有許多噪點 * ==Recursive Histogram-Directed Spatial Clustering (遞迴直方圖空間叢集)== 透過直方均化圖, 遞迴的山峰叢集起來直到無變化 ![image](https://hackmd.io/_uploads/BkMANbmQkx.png) #### 10.2.1 Threshold (閥值法) * 概念: 若直方均化圖不是雙峰 (bimodal) 的解法 1. Local Histogram (區域內直方圖): a.將影像分割為重疊的區塊。 b.每塊計算直方圖並確定閾值。 c.內插閥值 EX: ![image](https://hackmd.io/_uploads/Bylk8WXQJx.png) 2.High Laplacian Magnitude: 找邊緣做為切割依據 3.Minimized Busyness: 根據busyness選擇閾值。看雜訊的程度來做切割 * ==Kohler's (1981) method:== 選擇偵測更多高對比邊緣和更少低對比邊緣的閾值。 ![image](https://hackmd.io/_uploads/rkx_U-77kl.png) * ==Panda and Rosenfeld(1978):== 深色背景下分割白色斑點的方法 假設:低gradient通常不會是edge、高gradient通常是edge ![image](https://hackmd.io/_uploads/rJD98Wmmyg.png) ![image](https://hackmd.io/_uploads/S1wwlG7Q1e.png) 10.2.2 Multidimensional measurement-space clustering (高維度空間叢集) 陸地衛星影像:由七個稱為波段的獨立影像組成 ![image](https://hackmd.io/_uploads/rJoa8ZQmJl.png) * ==LANDSAT image== 由七個獨立的圖像組成,稱為bands #### 10.3 Region Growing (區域擴增法) 一種基於相鄰像素相似性的分割技術。 預定義種子像素、成長標準、停止條件 ![image](https://hackmd.io/_uploads/rk0EwWXXkx.png) * ==10.3.1 Single-Linkage Region Growing== 概念: 屬性足夠相似的相鄰像素透過arc連接(pixel 相近就連起來) 缺點: 漸層影像 會合再一起 ![image](https://hackmd.io/_uploads/SJmRwbmmye.png) * ==10.3.2 Hybrid-Linkage Region Growing== 概念: 用 k*k 的區域 與 屬性向量判斷 缺點: 過於依賴 邊緣運算子, 使用太簡單的算子 解法1: Zero-Crossing 運算子 ![image](https://hackmd.io/_uploads/ry1ccWm71e.png) 解法2: 小平面模型 (概念為由定義好的區域來做合併的輸入) 1.將影像分割成小區域。 2.計算每個段的屬性向量。 3.合併足夠近的區域 4.下一次迭代:從步驟 2 開始重複。 ![image](https://hackmd.io/_uploads/Hkj59-mmkl.png) 可以用區域數當作終止條件 ![image](https://hackmd.io/_uploads/rkG3O72m1l.png) * ==10.3.3 Centroid-Linkage(重要)== 不同之處:比較相鄰像素對的相似性 ![image](https://hackmd.io/_uploads/HkvenZXmJx.png) 不同方向會造成不同結果 ![image](https://hackmd.io/_uploads/Bk_FKQh7Jx.png) #### ==10.4 Hybrid-Linkage Combination (混合法):== 概念: 結合 10.3.3 Centroid-Linkage 與 10.3.2 Hybrid-Linkage Centroid-Linkage 不能用到 ege pixels Region growing 不同跨 edge 合併 #### ==10.5 Spatial Clustering (空間叢集):== 同時將測量空間中的聚集與空間區域生長結合。(與10.2 類似) 找到直方均化圖的 peak, 由大到小依序做 region growning ![image](https://hackmd.io/_uploads/HkoYcXn7kg.png) #### ==10.6 Split and Merge (分割與合併):== 整張圖片 不夠同質 就分割,之後進行合併判斷 缺點:邊界為方塊, 且過於人為,OOM, ![image](https://hackmd.io/_uploads/rJQnam3Qyl.png) #### ==10.6.x Quad Tree== 概念: 透過樹狀結構, 解決Split and Merge的問題 ![image](https://hackmd.io/_uploads/H1xmgAm2mJg.png) #### ==10.7 Rule-Based Segmentation (規則導向的分割== 概念: 定義資料, 屬性 (STM) 與 規則, 行為(LTM), 透過匹配 STM 適合的 LTM 進行分割 The short-term memory (STM): 儲存輸入影像、分割資料和輸出。 The long-term memory (LTM): 有關low-level segmentation和控制策略的系統知識。 Level1: 以情境-動作對的形式對區域和區域的資訊屬性進行編碼。 Level2: 引入控制規則(每輪動作的資料類型、匹配與執行的順序) Level3: 策略, 選擇控制規則, 執行適當的策略 #### ==10.8 Motion-Based Segmentation== 概念: 針對連續影像作分割 (即針對影片分割) * Stationary camera: Tompson 概念: 不同速度就分割 (根據速度, 相似合併, 不同分割) * Non-stationary camera: Jain 概念: 引入 focus of expansion 做判斷 ==texture recognition紋理辨識(考過)== ![image](https://hackmd.io/_uploads/ryoeRQnN1x.png) ## Chapter 11 Arc Extraction and Segmentation (弧長與分段) ## 名詞解釋: * ==grouping:== 把標籤值相同或相近的區塊圈選出來 目的: 有利於將群組化後的資訊進行一些計算 應用: segmentation分割、edge linking邊緣鏈接 * ==grouping operation== 邊緣標記或影像分割後,可以提取標記或邊界像素位置的集合或序列。 pixels->group->features * ==extracting:== 針對群組化後的資訊進行一些計算,算出一些能代表群組特性的數值 目的: 把觀察物區塊標明出來,並且得到夠多的資訊以理解觀察物。 應用: 解析質心、orientation方向、面積 * ==Arc Segmentation== arc sequence分割成 arc subsequences,且每個子序列都是可以擬合直線或曲線的最大序列 #### 11.2 Extracting Boundary Pixels from a Segmented Image (萃取已分段圖片的邊界) * ==Border Tracking Algorithm:(考過)== 沿著分割影像的邊界提取邊界像素的演算法。 流程:遇到一個Label,如果他的鄰居有在chainset的尾巴,就加進chainset,如果沒有就新增一個chainset,最後把同個label的chainset都連起來。 #### ==11.3 Linking One-Pixel-Wide Edges or Lines (線段串接)== 簡介: 可以不重視區塊並檢測線段, 處理比更為分段後的邊界更複雜的問題![image](https://hackmd.io/_uploads/Sk_XOH2XJg.png) * ==Junctiont(接界處):== Point where lines, arcs, segments meet 可以用來分析圖形的特性(? isolated point (孤立點) interior pixel (內部點) corner (轉角) 遇到 junction (交匯點) 或 corner (轉角) 結束一個線段, 並開啟新的線段 ![image](https://hackmd.io/_uploads/HJ8jUr3Qyg.png) ![image](https://hackmd.io/_uploads/B1X3IrnmJg.png) 如果(5,3) 視為是線段的內點也可以 那就會接下去 ![image](https://hackmd.io/_uploads/r1H1DHhmyg.png) ![image](https://hackmd.io/_uploads/Sy5JvH27kx.png) #### 11.4 Edge and Line Linking Using Directional Information 概念: 將位置很相近或是方向很相近的pixel聚集在一起,並用 t 檢定合併線段 #### 11.5 Segmentation of Arcs into Simple Segments(分割弧線形成線段) 弧線分割: 將弧線分割成多個直線或曲線線段 (a) 夠大的曲率 (b) 由不同的線和弧線所包圍 #### ==11.5.1Iterative endpoint fit and split(考過)== 透過設定distance threshold 和 解𝑚𝑎𝑥{𝑑𝑖}來將arc sequence分割成筆直的subsequence ![image](https://hackmd.io/_uploads/HJn40aqNJg.png) 切開之後的AB BC 各自都可以擬合成比較好的直線 #### ==11.5.2 Tangential Angle Deflection(考過)== 概念: 透過 cos函數找最大角度的點, 分割arc sequence。 ![image](https://hackmd.io/_uploads/HkR8or2m1x.png) #### 11.5.3 ==Uniform Bounded-Error Approximation== 將arc sequence做最大分割,這些點的點偏離線段擬合不超過邊界誤差)。 ![image](https://hackmd.io/_uploads/S1MAirh7Jl.png) #### 11.5.4 Breakpoint Optimization #### ==breakpoint optimization:== 優化已經切好的片段 移動arc sequence的break point以產生更好的segment。 移動 odd 結尾點, 若錯誤減少則為新的break point 移動 even 結尾點, 若錯誤減少則為新的break point #### ==Split and Merge== 1 將arc分成幾段 並讓error夠小 2 再將切割出來的線段做結合 一樣要讓error 夠小 3 調整切割點來達到較好的分割線段 4 重複上述3個步驟直到不需要做調整 #### ==11.5.6 Isodata segmentation== 概念: isodata是一個分群的演算法 將可能會擬合成同一條線的點分成特定的幾群 ![image](https://hackmd.io/_uploads/r1LDVwHEkl.png) #### ==11.5.7 Curvature 曲率== 根據curvature可以判斷該點位於的arc有哪些性質 當曲率由正轉負 圖形可能也是剛好由凸變凹的過程 ### ==11.6 Hough Transform(霍夫轉換)重要== 用在灰階影像上來偵測值線或是曲線的方法 透過既有的template來match影像上的特徵 透過累加器矩陣來計算 應用:偵測道路線 12.(6%) Please fit the best straight line L: y=mx+b for the given data points. (圖片省略,但其三點分別為:(1, 3), (2, 2), (3, 1)) Ans: 3=1*a+b 2=2*a+b 1=3*a+b a=-1,b=4 y=ax+b y=-x+4 ![image](https://hackmd.io/_uploads/BkjYNOhV1g.png) ![image](https://hackmd.io/_uploads/Hy2jqRq4yx.png) ![image](https://hackmd.io/_uploads/rkGs5054kl.png) Finding Circles (找圓) 也是相同原理, 只是多了幾個參數而已 ![image](https://hackmd.io/_uploads/ByguCvBV1e.png) 所以Hough transform 可以用在任何曲線, 可以用function的方式 表示出來,x 代表的是座標 a 就是參數 ![image](https://hackmd.io/_uploads/S1Js0PrV1e.png) ### ==11.7 Line Fitting(擬合線段)== 因為實際上線段可能沒有那麼直,可以透過最小平方法找到直線方程式的係數 #### 11.7.2 Principal-Axis Curve Fit 曲線的fitting ### 11.8 Region-of-Support Determination 合理的長度 𝑘 被定義為:當 𝑑/l的比值在長度增加過程中第一次達到最大值 ![image](https://hackmd.io/_uploads/r1aJMOS4ye.png) ### 11.9 Robust Line Fitting 之前有提到可以利用小平方法算出最適合來擬合的線段或曲線 但有時候一個太遠的點 會造成一個極端值可以使用Robust Line Fitting解決 ![image](https://hackmd.io/_uploads/r1oBXurEJx.png) 利用解矩陣來得到αβγ ### 11.10 Least-Squares Curve Fitting 透過調整曲線的參數來降低最小平方法的總合 ### 11.10.1 Gradient Descent 做一次微分得到梯度,找誤差最小的參數 ![image](https://hackmd.io/_uploads/HyDTNdrV1e.png) ### 11.10.2 Newton Method 做二次微分得到梯度,找誤差最小的參數,可以比較快找到 ### 11.10.4 Fitting to a Circle 把point fit到一個circle上 ### 11.10.6 Fitting to a Conic 將point fit 到 一般的圓椎曲線 ![image](https://hackmd.io/_uploads/SyqMEQ2V1x.png) # 佳芬提 ![image](https://hackmd.io/_uploads/rJzI6D2Nye.png) # 考古題 ![image](https://hackmd.io/_uploads/SyurwEnX1x.png) ![image](https://hackmd.io/_uploads/HkK_w43QJg.png) ![image](https://hackmd.io/_uploads/BkgcwEnQJx.png) ![image](https://hackmd.io/_uploads/S1I7QKFEJg.png) ![image](https://hackmd.io/_uploads/BkgN7FK41e.png) ## ANS * (1)conditioning 利用模型去除無用的雜訊,可用來降躁 目的:去除無用的資訊、雜訊 應用:降躁、背景均一化 (給分標準:三取二。去除無用的資訊、降躁) * (2)labeling 將相同特性的像素給予同樣的編號,可用於邊緣檢測、自駕車、機器人、相片、商品搜尋、辨識影像中的各種物體搜尋等 * (3)Extremum Sharpening (極值銳化) 更靠近 erosion後的值 還是 dilation 後的值, 就更新當前 pixel 為該值 效果:亮的地方更亮,暗的地方更暗 應用:影像銳利化 * (4)Sobel edge detector(再查一下) 一種 Edge Detectors的方法,和Prewitt 邊緣偵測器很相,只是它比較強調靠近mask中心的像素。 ![image](https://hackmd.io/_uploads/SJealuKEkx.png) * (5)facet model 可以將圖像視為基礎連續體或分段連續灰階強度表面, 例如:piecewise constant(平面facet model),分段線性(傾斜facet model),piecewise quadratic和分段三次。 * (6)directional derivative 給定方向的變化率 應用:Directional Derivative Edge Finder * (7)corner detection algorithm * 利用Corner Detection抓出一些feature,讓電腦也能判斷出他是同一個物體然後大概轉了多少角度 ![image](https://hackmd.io/_uploads/Sy5DZ_YEkl.png) * (8)tangent line 切線,指的是一條剛好觸碰到曲線上某一點的直線。 更準確地說,當切線經過曲線上的某點(即切點)時,切線的方向與曲線上該點的方向是相同的。 * (9)fractal 碎形,一種自然的現象或是數學運算使圖像在不同 scale 上 recursive 畫出相同的 pattern重複劃出相同的圖案這一類recursive的動作畫出的pattern我們稱為fractal * (10)Hough transform 用在灰階影像上來偵測值線或是曲線的方法 透過既有的template來match影像上的特徵 透過累加器矩陣來計算 應用:偵測道路線 * (11)border-tracking algorithm 沿著分割影像的邊界提取邊界像素的演算法。 流程:遇到一個Label,如果他的鄰居有在chainset的尾巴,就加進chainset,如果沒有就新增一個chainset,最後把同個label的chainset都連起來。 * (12)iterative endpoint fit and split 透過設定distance threshold 和 解𝑚𝑎𝑥{𝑑𝑖}來將arc sequence分割成筆直的subsequence ![image](https://hackmd.io/_uploads/HJn40aqNJg.png) * (13)tangential angle deflection 透過 cos函數找最大角度的點, 分割arc sequence。 * (14)breakpoint optimization 優化已經切好的片段 移動arc sequence的break point以產生更好的segment。 移動 odd 結尾點, 若錯誤減少則為新的break point 移動 even 結尾點, 若錯誤減少則為新的break point 2.(6%) Please list at least 3 noise removal methods and equations using neighborhood operators. 4.(6%) Consider the following 3X3 region: r/c -1 0 1 -1 3 5 9 0 4 7 7 1 0 3 7 The sloped facet is given by α^r + β^c + γ^ . What are the values of estimated parameters α^, β^, γ^? 將 Section 8.2 推廣到 2D 平面 ![image](https://hackmd.io/_uploads/BJ4WpwKEkx.png) 6.(6%) Please list three issues of the texture analysis and give a detailed description for each issue. ![image](https://hackmd.io/_uploads/SyA0ujKEyg.png) ==Pattern recognition:== 給定紋理區域,決定該區域所屬的類別。 ==Generate model:== 給定紋理區域,決定其描述或model。 ==Texture segmentation== 給定具有許多紋理區域的圖像,決定邊界。 7.(6%) Please show the steps of the synthetic texture image generation, that is, how you can generate new texture images using one original texture image.請展示合成紋理影像生成的步驟,即如何使用一張原始紋理影像來產生新的紋理影像。 步驟0:輸入樣本紋理 步驟1:從原始紋理樣本影像中選擇一個區域作為初始區域。 步驟2:找到原始影像中具有相似邊緣的區域。 步驟3:將其貼到結果影像上。 步驟4:回到步驟2重複。 ![image](https://hackmd.io/_uploads/r1dToK24ye.png) ![image](https://hackmd.io/_uploads/SkocjtnEJl.png) 9.(6%) Please list at least three image segmentation methods and explain in detail ![image](https://hackmd.io/_uploads/SkG7FiFVkl.png) 10.(6%) Please calculate the average contrast (C(T)/#E(T)) of all edges. ![image](https://hackmd.io/_uploads/HkPEFjFNkx.png) 12.(6%) Please fit the best straight line L: y=mx+b for the given data points. (圖片省略,但其三點分別為:(1, 3), (2, 2), (3, 1)) ![Uploading file..._afie9q1bj]() ![image](https://hackmd.io/_uploads/Hk8uKitNyg.png) Bonus 14.(2%) Please write the Chinese name of Professor Chiou-Shann Fuh. **傅楸善** 15.(2%) What's Professor Chiou-Shann Fuh's pet phrase? (a) 酷斃了Cool (b) 帥呆了Handsome **(c) 好極了Good** (d)棒透了Awesome 16.(2%) Is text or **joke** more important? 17.(2%) Please translate "To err is human, to forgive divine." into Chinese. **人非聖賢,孰能無過** 18.(2%) Please translate "塞翁失馬,焉知非福" into English. **sometimes misfortune is a blessing in disguise** # 助教研究(36分) ### C6 Innovative Velocity Estimation in Ego Vehicles: A Two-Stage Model Leveraging Dashcam Data (自主車輛的創新速度估計:利用行車記錄器資料的兩階段模型) 方法: 使用光流和深度學習提出一個兩階段模型 步驟: 1.將輸入視頻調整為固定分辨率,並計算每對影格之間的光流。 2.將光流矩陣切分為不同大小的塊,並對每個塊進行平均採樣得到濾波光流特徵。 3.將濾波光流特徵輸入到不同的迴歸模型中,預測出最終的速度標籤。 結果: 結合光流分析和深度學習,可以從行車記錄儀視頻中準確估計車輛速度。 ### C7 3D BGA Reconstruction 方法: 使用NeRF進行3D BGA重建 步驟: 1.應用高斯模糊和同態濾波進行雜訊清除 2.訓練NeRF模型 3.根據NeRF預測產生3D影像 4.刪除異常直並標準化 結果: 獲得3d模型的內部結構 ### C8使用神經網路在計算人工髖關節術後髖臼前傾角之運用 方法: 用手術中螢光透視 使用CNN模型辨識方向 步驟: 1.生成圖片,分成訓練跟驗證 2.訓練模型 3.使用訓練好的模型計算角度 4.找出結果最好的模型 結果: 可以區分模擬X-ray 的可靠模型,之後需要在人體實驗 ### C9嵌入式系統即時寵物行為辨識 ![image](https://hackmd.io/_uploads/SkZ76x7Xkl.png) 1.用stable diffusion 結合LoRA生成合成影像 2.將收集的影像和合成影像組合起來形成我們的資料集 3.將資料集整合到YOLOv7模型中並應用剪枝最佳化已產生可辨識的效果 Result: 結合先進的生成模型和物件偵測模型,增強real-time貓行為識別 ### C10 3D object Tracking and Collsion Prediction at Urban Intersection Using LIDAR ![image](https://hackmd.io/_uploads/rk53kr2mye.png) 方法: 使用LiDARS(光達)進行3d物件追蹤和碰撞預測 步驟: 1.用 Ouster LiDAR紀錄數據 2.使用CenterPoint偵測物體並繪製邊界框 3.使用Simple Track來追蹤物件以計算其速度,並預測碰撞機率 Result: 預計可以預測碰撞機率並對其進行標記 ### C11 Pet Camera Video Streaming on Cloud ![image](https://hackmd.io/_uploads/BJiO2uHEyg.png) step: 1.用ChatGPT生成一系列寵物的可愛動作 2.用stable diffusion生成dataset 3.用Yolov7從該data set上訓練物件偵測 4.使用 API 託管(host) AWS 伺服器 5.把寵物相機偵測可愛動作的短片並上傳到雲端 Result: 成功在邊緣設備上檢測到貓的可愛動作,並且在web server上工作 https://hackmd.io/qwoDMQFSTF6sdb150AThrA?view#Ch8-The-Facet-Model%E5%B0%8F%E5%B9%B3%E9%9D%A2%E6%A8%A1%E5%9E%8B