[OpenCV筆記] 用於角點偵測的 FAST 演算法

1.FAST 演算法簡介 FAST ( Features from Accelerated Segment Test ) 演算法是由Edward Rosten 和 Tom Drummond 在 2006年的這天論文 " Machine learning for high-speed corner detection " (後來在2010年重新修訂)提出的角點偵測演算法。  為什麼要提出 FAST 演算法呢?因為研究人員發現,雖然許多特徵偵測的演算法有非常棒的效果,但是運用在即時應用的情境中,卻不夠快,無法滿足…

閱讀完整內容
[OpenCV筆記] 12. 傅立葉轉換實作

1.前言 影像處理通常分為空間域處理與頻率域處理。傅立葉轉換是頻率域影像處理中常見的方法之一。關於傅立葉轉換的原理介紹,請參考< 從傅立葉轉換到訊號處理 >。 透過傅立葉轉換,我們可以依據需求,設計高通濾波器或低通濾波器來進行影像處理。 1.1.高通濾波器與低通濾波器 低通濾波器,讓低頻訊號通過,會使影像模糊。 高通濾波器,讓高頻訊號通過,會增強影像中尖銳的細節,導致影像對比度降低。 何謂低頻訊號呢? 何謂高頻訊號呢? 低頻訊號對應影像內變化緩慢的灰階分量。以草原中獅子圖為例,低頻訊號對應顏色趨於一致的草原。 高頻訊…

閱讀完整內容
[OpenCV筆記] 11. 影像長條圖均衡化實作

1.初識影像長條圖 1.1.關於影像長條圖的3個基本觀念 DIMS:表繪製長條圖時,蒐集參數的數量。通常蒐集的資料為灰階值,因此該值為1。 RANGE:要統計的灰階值範圍,通常為0~255。 BINS:參數子級的數目,也就是將要分析的像素分成幾組。 1.2.灰階值的長條圖 1.2.1.輸出結果說明 以Lenna圖片進行實作,img為灰階圖,再從長條圖可看出此圖片灰階值分布狀況。 <source:Greatway9999> <source:Greatway9999> 1.2.2.範例程式 import nump…

閱讀完整內容
[OpenCV筆記] 10. 關於輪廓的實作

1.關於輪廓的一些認識 1.1.為什麼要實作輪廓? 邊緣檢測雖可檢測出邊緣,但邊緣不一定連續,無法構成一個整體。而影像輪廓是指將邊緣連接起來的整體,用於後續運算。 1.2.實作流程 讀圖 >> 影像二值化 >> 尋找輪廓 >> 繪製輪廓 1.3.尋找影像輪廓 img , contours, hierarchy = cv2.findContours(img, mode, method) 1.3.1.關於輸出 img:原圖之 八位元單通道二值化 影像 contours:輪廓。每個輪廓對應4個元素來說明…

閱讀完整內容
[OpenCV筆記] 9. 影像金字塔實作

1.影像金字塔 為同一影像不同解析度的子圖集合。當透過原影像不斷向下採樣,會由高解析度影像產生低解析度的近似影像。 向下取樣,列數與行數都會是原圖的1/2倍,因此,輸出影像會是原圖的1/4倍。反之,向上取樣,列數與行數都會是原圖的2倍,因此,輸出影像會是原圖的4倍。 向下取樣的結果如下圖: <source:Greatway9999> 向上取樣的效果如下圖所示: <source:Greatway9999> 2.取樣可逆性 不論是向下取樣再向上取樣,或是向上取樣再向下取樣,雖然輸出圖像尺寸和原圖一樣,但因在計算過…

閱讀完整內容
[OpenCV筆記] 8. Canny邊緣偵測

1.Canny邊緣偵測 1.1. 簡介 Canny邊緣檢測是一種使用多級邊緣檢測演算法偵測邊緣的方法。實作步驟如下: 去除雜訊:因為雜訊會影響檢測的準確度,因此使用高斯濾波去除雜訊。 計算梯度的幅度與方向。 非極大值之抑制:最相關的像素留下,其他歸零。 確定邊緣:利用雙設定值演算法進行。 1.2. 實作重點摘要 Canny演算法使用高斯濾波去除雜訊。濾波器越大,邊緣資訊對雜訊的敏感度越低,定位錯誤也會增加。 而非極大值之抑制,簡言之就是在計算過程中將與邊緣最相關的像素留下,其他像素值歸零。如下圖所示,A所在的地方離邊緣最近,計算…

閱讀完整內容
[OpenCV筆記] 7. Image Gradients (影像梯度) 計算

1.影像梯度 影像梯度計算的是影像變化的速度,影像中越平滑的地方,梯度越小。反之,梯度越大,像是邊緣。常見的計算梯度的運算元(濾波器)主要有Sobel、Scharr、Laplacian。 實作重點在於,為避免資訊遺失,先將影像深度轉換成 cv2.CV_64F ,再透過 取絕對值 將其對應為 cv2.CV_8U 。 1.1. Sobel 1.1.1. Sobel說明 一種離散的微分運算元,結合了微分求導與高斯平滑之運算。利用局部差分尋找邊緣,所求得的是一個梯度近似值。 dst = cv2.Sobel(src, ddpeth, dx, …

閱讀完整內容
[OpenCV筆記] 6. 形態學操作

1.形態學(Morphology)操作  形態學主要是從影像中分析分量資訊,該分量對於表達影像特徵有重大意義。常見方式如下: 腐蝕 (erode) 膨脹 (dilate) 開運算 (MORPH_OPEN) 閉運算 (MORPH_CLOSE) 梯度運算 (MORPH_GRADIENT) 禮帽運算 (MORPH_TOPHAT) 黑帽運算 (MORPH_BLACKHAT) 以下將針對各種方法與效果進行說明與展示。 1.1. 腐蝕 (erode) erosion腐蝕:使影像沿著邊界向內縮收,可實現去雜訊、影像分割等功能。 img_ero…

閱讀完整內容
機器視覺與OpenCV實作總覽

OpenCV實作筆記 [OpenCV筆記] 1.影像處理之位元運算 & ROI加密實作 [OpenCV筆記] 2.色彩空間轉換 [OpenCV筆記] 3.幾何轉換 [OpenCV筆記] 4. 常見Threshold (閾值)設定 [OpenCV筆記] 5. 影像平滑處理 [OpenCV筆記] 6. 形態學操作 [OpenCV筆記] 7. Image Gradients (影像梯度) 計算 [OpenCV筆記] 8. Canny邊緣偵測 [OpenCV筆記] 9. 影像金字塔實作 [OpenCV筆記] 10. 關於輪廓的實作 …

閱讀完整內容
[OpenCV筆記] 5. 影像平滑處理

1.影像平滑處理 平滑化的目的主要為去除影像中的雜訊,常見方法如下: 均值濾波 方框濾波 高斯濾波 中值濾波 雙邊濾波 以下將針對各種方法與效果進行說明與展示。 1.1. 均值濾波 用目前像素周圍N*N個像素的均值來取代原像素值。程式如下: img_blur_3 = cv2.blur(img,(3,3)) img為輸入影像。(3,3)為kernel size,也就是取均值的範圍,值越大,去除雜訊效果越明顯,但影像會越模糊。 範例圖片為帶有椒鹽雜訊的Lena圖。"img_blur_3"為濾波後的效果,在本例中,…

閱讀完整內容