影像處理 中正資工所 柳金章 https://hackmd.io/Ta-ORhbAS1-B-HQgiG4w_A?view 把**答案整合.docx**寫成比較好看的版本,並且加上了註解,可以點連結來修改新增題目 ==這樣的字是加上的註解,可以忽略== ---- ### Explain why the processing results of direct inverse filtering (if the degradation funciton is known) are not good. How to improve? >假設系統的退化函數 𝐻(𝑢,𝑣)是完全已知的,因此濾波器的計算公式為![image](https://hackmd.io/_uploads/BJJOcWYIkl.png)。但在實際操作中,退化函數 𝐻(𝑢,𝑣)在某些頻率可能接近零或非常小,這會導致分母接近零,從而極大地放大噪聲,導致結果劣化。 >可以使用閥值![image](https://hackmd.io/_uploads/HkNEjZtIkl.png)當退化函數 𝐻(𝑢,𝑣)的幅值過小(小於某個閾值 𝜖)時,直接將該頻率分量的恢復結果設為零,避免分母過小導致噪聲放大。 >或是加上一個常數避免分母過小 ![image](https://hackmd.io/_uploads/BkyPsZY8kx.png) >也可以用Wiener Filter,![image](https://hackmd.io/_uploads/HyhpibtUke.png) ### Describe pseudocolor image processing and color slicing >pseudocolor image processing >>將灰階影像的強度值對應到特定顏色,用於增強灰階影像的可視化效果,幫助人眼更容易區分影像中的細節。 >>處理步驟: >>1. 將灰階影像的強度範圍歸一化。 >>2. 定義一個顏色映射表,將強度值對應到顏色。 >>3. 將每個像素的強度值轉換為對應的顏色。 >color slicing >>通過將特定強度範圍的像素映射到某一顏色來突出或隔離這些範圍,而其他範圍的像素則保持不變或被弱化。 >>處理步驟: >>1. 定義目標強度範圍(例如 100 至 150)。 >>2. 將此範圍內的像素設為某一顏色。 >>3. 將範圍外的像素設為其他顏色(例如黑色或灰色) ### Describe two edge detectors , the Canny edge detector and the Laplacian of a Gaussian (LoG) operator. >Canny edge detector >>步驟: >>1. 雜訊抑制: >>使用高斯濾波器對影像進行平滑處理。 >>2. 梯度計算: >>使用 Sobel 運算元或其他梯度運算元計算影像的水平方向和垂直方向梯度 (𝐺𝑥和𝐺𝑦)。 >>計算梯度幅值 ![image](https://hackmd.io/_uploads/BkmwRZFLye.png)和梯度方向 ![image](https://hackmd.io/_uploads/Bk0D0ZFLyx.png) >>3. 非極大值抑制(Non-Maximum Suppression) >>將梯度幅值的非最大值抑制,僅保留局部最大值的像素作為潛在的邊緣點,消除梯度方向上不屬於邊緣的點。 >>4. 雙閾值處理(Double Thresholding): >>設置高閾值和低閾值,將梯度幅值分為三類: >>大於高閾值的像素被標記為「強邊緣」。 >>介於高閾值和低閾值之間的像素標記為「弱邊緣」。 >>小於低閾值的像素被忽略。 >>5. 邊緣連接: >>從「強邊緣」開始,將與其相連的「弱邊緣」確定為邊緣,消除孤立的弱邊緣。 >>優點: >>精準的邊緣定位。 >>減少雜訊的影響,偵測到的邊緣更平滑。 >>雙閾值機制有效區分強邊緣和弱邊緣。 >Laplacian of a Gaussian (LoG) operator >>步驟 >>1. 高斯平滑 >>先對影像應用高斯濾波器進行平滑處理,減少雜訊影響。 >>高斯濾波器的公式為:![image](https://hackmd.io/_uploads/BJ-qyMYIJl.png) >>2. 拉普拉斯運算(Laplacian Operator) >>對平滑後的影像應用拉普拉斯算子計算二階導數,用於檢測梯度變化:![image](https://hackmd.io/_uploads/BkN31fYLye.png) >>3. 邊緣檢測 >>邊緣的位置對應於二階導數過零點(Zero-Crossing)的區域。 >>計算每個像素周圍的梯度變化,標記正負值交替的點為邊緣。 >>優點: >>能夠檢測多種方向的邊緣。 >>敏感於影像的二階導數變化,適合偵測細微結構。 >>缺點: >>對雜訊敏感,需依賴高斯平滑處理。 >>需要精確選擇高斯濾波器的標準差 𝜎和零交叉閾值。 ### Describe the Otsu's method for global thresholding. >一種自動計算影像閾值的演算法,廣泛應用於二值化處理。該方法的核心思想是通過最大化類間方差來找到最佳的閾值,使得影像的前景和背景分割效果最佳。 >假設某個閾值 𝑇 將影像的像素分為兩類: >>前景(物體):灰階值大於 𝑇 的像素。 >>背景:灰階值小於或等於 𝑇 的像素。 >類間方差最大化 >>類間方差(Between-class variance)表示前景和背景之間的差異程度 >>計算公式為:![image](https://hackmd.io/_uploads/SyUw-ftUyx.png) >𝑤1(𝑇),𝑤2(𝑇):前景和背景像素的權重,分別是前景和背景像素數佔總像素數的比例。 >𝜇1(𝑇), 𝜇2(𝑇):前景和背景的平均灰階值。 >目標是找到一個閾值 𝑇,使得類間方差![image](https://hackmd.io/_uploads/H1skMGYUke.png)最大,從而實現最佳分割。 ### Describe a thinning algorithm for getting regional skeletons. >thinning algorithm用於提取影像中區域骨架(skeleton)。骨架是一個物體形狀的中心線,保留物體的拓撲結構並減少其像素數量。通過逐步移除物體邊界的像素點來實現,直到只剩下物體的骨架。 >thinning條件 >>保持物體的連通性:在移除像素時,不能使物體的結構斷裂。 >>保持物體的拓撲結構:例如孔洞和分支結構應該在細化後保持不變。 >>逐步移除邊界像素:每次只移除邊界上的非必要像素點,直到無法進一步移除。 >步驟 >>1. 輸入二值影像,其中前景像素表示目標區域,背景像素表示空白 >>2. 對每個前景像素 𝑃(𝑥,𝑦),考慮其 8 鄰域像素 𝑃1,𝑃2,...,𝑃8 >>移除像素 𝑃(𝑥,𝑦)的條件包括: >>>1. 像素為邊界點:該點至少有一個鄰居是背景像素。 >>>2. 保持連通性:移除該點後,物體應該保持拓撲結構不變。 >>>3. 鄰域像素計算:𝐵( 𝑃):𝑃的鄰域中有多少個前景像素(計算非零像素的數量)。𝐴( 𝑃):𝑃的鄰域中從背景到前景的轉變次數(即 0→1 的次數)。 >>>條件: >>>2≤𝐵( P)≤6 >>>𝐴( P)=1 >>>移除時保證至少一個像素保留(結構不變)。 >>3. 重複直到沒有像素滿足條件 ### Describe local binary pattern(LBP) operator with parameters (P,R) and explain why it is an illumination-free operator. >通過比較每個像素與其鄰域像素的灰度值,生成一個二進制模式來描述局部紋理特徵。 >LBP 運算元以參數 (𝑃,𝑅)表示,其中: >>𝑃: >>>鄰域內的取樣點數量。 >>>定義圍繞中心像素的鄰域點數。例如,若 𝑃=8,表示使用 8 個等距點。 >>>𝑅: >>>鄰域的半徑。 >>>定義鄰域點距離中心像素的距離。例如,若 𝑅=1,表示鄰域點距中心像素的距離為 1 個像素。 >>步驟 >>1. 選取中心像素: >>將目標影像中的某個像素作為中心像素。 >>2. 定義鄰域: >>在中心像素周圍以半徑 𝑅 形成圓形鄰域,取P個等距像素點作為比較對象。 >>3. 灰度值比較: >>比較鄰域點的灰度值 𝑔𝑝與中心像素的灰度值 𝑔𝑐:![image](https://hackmd.io/_uploads/HyMJYXKLJx.png) >>4. 生成二進制模式: >>按照鄰域點的排列順序將比較結果組合為二進制數字,並轉換為十進制數值:![image](https://hackmd.io/_uploads/B19ltXKLJl.png) >>5. 生成 LBP 特徵圖: >>將每個像素的 LBP 值填入對應位置,形成 LBP 特徵圖。 >why it is an illumination-free operator. >>僅比較鄰域像素與中心像素的灰度值大小,不依賴絕對灰度值。即使整體光照條件改變(如影像變亮或變暗),灰度值的相對關係通常不會改變 >>僅分析每個像素的局部鄰域特徵,避免受到全域光照變化的影響 >>將灰度值比較結果二進制化,進一步降低光照變化對特徵的影響 ### Describe the following mean filters: arithmetic mean filter, geometric mean filter, harmonic mean filter, and contraharmonic mean filter, and compare their performances. >contraharmonic mean : ![image](https://hackmd.io/_uploads/Hyb52A7Bye.png) -> Q>0對pepper有效,Q<0對salt有效 -> Q=0為arithemetic,Q=-1為harmonic >arithemetic mean : (Q=0) ![image](https://hackmd.io/_uploads/HJK72RQHke.png) g(s,t)是 subimage , size mxn >harmonic mean : (Q=-1) ![image](https://hackmd.io/_uploads/Byvd2C7Skg.png) >geometric mean : ![image](https://hackmd.io/_uploads/r1eD2RmHkl.png) ---- ### Describe characteristics generally used to distinguish one color from another, and how the CIE chromaticity diagram specifies distinct colors. >The characteristics distinguishing one color from another are brightness, hue, and saturation. >==亮度(Brightness)色調(Hue)飽和度(Saturation)== >Hue and saturation together are called chromaticity. >==色調和飽和度合稱為色度== >Another approach for specifying colors is to use the CIE chromaticity diagram. >==CIE專門用在色度,基於人眼對顏色的感知而設計,如下圖== ![image](https://hackmd.io/_uploads/rJf91JNSyx.png) >z=1-(x+y) >邊界的saturation 是1,越接近白色saturation越小 >2點混色就是拉一條直線,依比例決定是線上哪一點 >==若兩個顏色點 A 和 B 的比例為𝑝和1−𝑝(𝑝∈[0,1]),混合點的坐標為:(𝑥,𝑦)=𝑝(𝑥𝐴,𝑦𝐴)+(1−𝑝)(𝑥𝐵,𝑦𝐵) >當𝑝=0.5 時,混合顏色正好位於 A 和 B 的中點。== ---- ### Describe and compare edge detection for gray-level and color images. >==1. 計算梯度向量 𝑢和 𝑣 >r,g,b 分別是 RGB 三個通道的權重== ![image](https://hackmd.io/_uploads/SyagXJErJl.png) >==2.計算分量,這些分量構成梯度矩陣,表示像素梯度的強度和方向關係== ![image](https://hackmd.io/_uploads/S1Ct714r1e.png) >==3.計算圖像梯度的主方向,即圖像在當前區域內梯度變化的主要方向== ![image](https://hackmd.io/_uploads/ryicQkVrke.png) >==4.計算特徵響應函數 𝐹(𝜃),代表該點在主方向上的響應強度,用於評估邊緣或特徵的強度。== ![image](https://hackmd.io/_uploads/H10i7y4S1x.png) ==推導過程== 有了梯度就可以得到梯度矩陣G![image](https://hackmd.io/_uploads/HJn-WrSSyl.png) 而在方向 𝜃上的響應可以表示為![image](https://hackmd.io/_uploads/HJImbBrr1g.png)![image](https://hackmd.io/_uploads/rJON-rSByl.png) 把G跟v代入並展開![image](https://hackmd.io/_uploads/rJkjMHBryl.png) >2. gray-level >![image](https://hackmd.io/_uploads/BknUUJEH1e.png) ---- ### Describe the position operator 𝑃 and the gray-level co-occurrence matrix 𝐶 for texture description (using an illustrated example). >1.輸入一個要計算的矩陣 >![image](https://hackmd.io/_uploads/rJw-Py4S1x.png) >2.計算position operator P >這邊定義的P為 >||j| >|-|-| >|i|| > >找到這個形狀的ij, > >||0| >|-|-| >|0|| > >a00=2 > >||1| >|-|-| >|0|| > >a01=2 > >||0| >|-|-| >|1|| > >a10=4 > >||1| >|-|-| >|1|| > >a11=1 >![image](https://hackmd.io/_uploads/H18fD14BJg.png) >3.計算 Co-Occurrences, > ![image](https://hackmd.io/_uploads/rk4XwyEHke.png) >![image](https://hackmd.io/_uploads/SJyqeIBSJl.png) >|j|| >|-|-| >||i| > ->![image](https://hackmd.io/_uploads/ryiBPkVHJe.png) ![image](https://hackmd.io/_uploads/rJzLPkNryg.png) >Defining the position operator 𝑃 as "one pixel to the right and one pixel below." >==這邊兩個P的定義不同,這句話有問題== >𝑎𝑖𝑗 表示在position operator 𝑃定義下,𝑧𝑖 與 𝑧𝑗 存在關係的次數 ---- ### Describe the three principal texture description approaches, namely, statistical, structural, and spectral approaches. >Statistical: mean, contrast, relative flatness, uniformity, entropy >==均值,對比度,相對平坦度,均勻性,熵== > >Structural: S -> aS -> Automata theory (自動機理論) >==S(Primtives),texture基礎構成 >aS(Patterns),很多的Primtives排列組合構成texture >Automata Theory,系統生成texture== > >Spectral: Fourier transform for texture description -> texture pattern period ---- ### Describe the Hough transform for line edge linking。 >設在 𝑥𝑦-plane 上一點為(𝑥𝑖,𝑦𝑖),,則所在直線為 𝑦=𝑎𝑥+𝑏,可轉寫為𝑏=−𝑥𝑖𝑎+𝑦𝑖 在 𝑎𝑏-plane 上。 >==意思是把圖像從直角坐標空間轉到參數空間== >如圖所示:![image](https://hackmd.io/_uploads/rkPmzmrS1e.png) >建立累加的 cell 設定 (𝑎max,𝑎min),(𝑏max,𝑏min),分別為期望的斜率和截距區間。 >==意思是等等要跑兩個參數的所有組合,這些組合是離散的,所以不會有無限組參數,投票參數a,b決定哪一組才是最多參數點支持的圖形== >當對應ap到結果bq時,𝐴(𝑝,𝑞)=𝐴(𝑝,𝑞)+1。 >==這句有點難懂,總之就是+1等於有一個邊緣點支持這個參數組合,詳細看下圖== >![image](https://hackmd.io/_uploads/BkmHL98Skx.png) >計算完當𝐴(𝑖,𝑗)=𝑄 表示在𝑦=𝑎i𝑥+𝑏i 上有 Q 個點,若 𝑄>門檻,則建立連結。![image](https://hackmd.io/_uploads/r1etUQrSye.png) >==如果>Q,表示有夠多點落在這個直線,猜測這個直線存在,把有投這個直線的邊緣點連結起來== >但𝑦=𝑎i𝑥+𝑏i 在垂直時斜率為無限,不適用,改用𝑥cos⁡𝜃+𝑦sin𝜃=𝜌 轉為𝜃𝜌-plane。 >==參數座標轉極座標,就可以有兩個變數參與投票了== >總步驟 >1. 計算 gradient 和 threshold 得 binary image。 >==意思是要先決定出所有邊緣點,並且用這些點來投票== >2. 將𝑥𝑦-plane subdivision 成𝜃𝜌-plane。 >==因為有垂直問題所以用極座標== >3. 選出累加 cell 裡明顯集中的 pixel。 >==明顯集中的pixel應該是指表格中較高的值,表示選出通過閥值的參數組合== >4. 檢查 cell 間各點的關聯性以建立連結。 >==把這些參數組合的邊緣點建立連結== >![image](https://hackmd.io/_uploads/SyBWvmBS1x.png)![image](https://hackmd.io/_uploads/HybuqXHHkl.png) >𝜃𝜌-plane 得到的不是直線而是 sinusoidal 曲線。 >(找不到好看的圖ㄌ) ---- ### Describe three color models, namely, RGB, CMY, and HSI, and their relationships. >RGB->CMY ![image](https://hackmd.io/_uploads/H1C32k4S1e.png) >HSI->RGB ![image](https://hackmd.io/_uploads/HJ9JTJ4Hkg.png) >RGB->HSI ![image](https://hackmd.io/_uploads/H1CWTyVS1l.png) ![image](https://hackmd.io/_uploads/BySM6J4Skg.png) ---- ### Describe the basic region-based segmentation : region splitting and merging。 >==總目標是切分區域,==R代表整張圖,切分為R1、R2、.....Rn,彼此不相交,同一個區塊的pixel都相連==,P(Ri)是自定義的檢測條件(例如區域內像素的亮度是否均勻)==。 >1. 區分成4個不相交的區域,當P(Ri)=FALSE就split >2. merge 任何不相交的區域Rj和Rk當P(Rj U Rk)=TRUE,==TRUE表示通過檢測條件,兩者是同質的== >3. 重複上述步驟直到無法再merge或split就停止 ---- ### Describe the iterative (optimal) threshold selection algorithm. >![image](https://hackmd.io/_uploads/ByG9sQBHkl.png) >==![image](https://hackmd.io/_uploads/H15M_tUr1g.png)== >==整個像素的概率密度是兩個分佈的加權總和== >==𝑝1(𝑧):第一類像素(例如背景)的概率分佈。== >==𝑝2(𝑧):第二類像素(例如前景)的概率分佈。== >![image](https://hackmd.io/_uploads/SkhqjXHSkx.png) >![image](https://hackmd.io/_uploads/Bk39uY8SJx.png) >![image](https://hackmd.io/_uploads/SJyhj7BH1x.png) >->會得兩個最佳解 >![image](https://hackmd.io/_uploads/S1k6smrHJg.png) ---- ### Describe the following order-statistic filters, namely, the median filter, the max and min filters, the midpoint filter, and the alpha-trimmed mean filter. ![image](https://hackmd.io/_uploads/rykP-gEHye.png) ![image](https://hackmd.io/_uploads/B18v-lVH1x.png) ![image](https://hackmd.io/_uploads/Bk1ubxES1g.png) ![image](https://hackmd.io/_uploads/rkvu-eNS1g.png) ![image](https://hackmd.io/_uploads/B119WlNHye.png) ---- ### Describe the restoration procedure for the geometric distortion process within the quadrilateral regions using bilinear equations. >image f(x,y) ------geometric distortion------> g(x',y'),are the spatial transformations. >![image](https://hackmd.io/_uploads/BkkY8ESHkg.png) >==C1x,C2y:表示線性縮放或旋轉。== >==𝐶3𝑥𝑦:表示𝑥x 和 𝑦y的交互影響,捕捉到剪切或非均勻失真。== >==𝐶4,𝐶8表示影像的平移(移動影像位置)。== ![image](https://hackmd.io/_uploads/BkR4ONBBJx.png) ---- ### Describe two pseudocolor image processing techniques: intensity slicing and gray-level to color transformations. >intensity slicing : 將一個區間內的gray level 轉成彩色中的某個color,讓人眼容易識別。 >gray-level to color transformations : 凸顯特定gray level的差異,更容易辨別。 ``` mermaid graph TD; A[gray level value g of x,y]-->C[Transform] C-->Red[Red transform]-->R[R of x,y] C-->Green[Green transform]-->G[G of x,y] C-->Blue[Blue transform]-->B[B of x, y] ``` ---- ### Describe the image segmentation method by morphological watersheds。 >兩個集水區 A、B 的 local minimum 分別為 a、b,對集水區 A 而言,要是介在高度 d 與 a 之間的點(的水)都會往 A 的方向流;對集水區 B 而言,要是高度介在 b 與 d 之間的點(的水)都會往 B 的方向流。d 就是 A 與 B 的邊界(分水線)。 如果水位慢慢上升,直到蓋過 d 的前一刻,d 點就是分區的點。一旦水位超過d,A、B 就併成同一個集水區了。 所以用這個方法,先給圖有很多起始點(如同 a、b),慢慢向外擴張(如果附近的 gray level 值差不多才可以擴張),直到區域與區塊要合併前的前一個步驟停止。這樣一來就可以找出 segent 間的界線,也就是將圖形 segmentation。 ![image](https://hackmd.io/_uploads/B1BVbWNr1e.png) ==1. 兩個集水區 A、B 的 local minimum 分別為 a、b,d是A與B的邊界(分水線) 2. 對集水區 A,介在高度 d 與 a 之間的點的水會往 A 流。 3. 對集水區 B,介在高度 b 與 d 之間的點的水會往 B 流。 4. 水位慢慢上升,直到蓋過 d 的前一刻,d 點是分區的點。 5. 一旦水位超過 d,A、B 合併為同一個集水區。== >==給圖有很多起始點(如同 a、b),慢慢向外擴張。(如果附近的 gray level 值差不多才可以擴張。)== > >==區域與區塊要合併前的前一個步驟停止。即可找出 segent 間的界線,完成圖形 segmentation。== ---- ### Describe the Fourier descriptors for 2-D shapes。 >將圖形邊緣的K個點(此圖形的邊界點)![image](https://hackmd.io/_uploads/BkU_aFUr1x.png) 座標轉換成複數表示![image](https://hackmd.io/_uploads/H18TRMBr1l.png)。 並透過DFT![image](https://hackmd.io/_uploads/r1AZCtIr1g.png) 做轉換後,保留低頻,捨棄高頻,即可較少的資料量來描述與處理圖形。 ==低頻是形狀的主要結構,高頻是形狀的細節跟Noise== ----