Featured image of post 【OpenCV】20 - OpenCV 的各種 Threshold 方法整理,Otsu's Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!

【OpenCV】20 - OpenCV 的各種 Threshold 方法整理,Otsu's Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!

紀錄 OpenCV Otsu 自動閾值—二值化、threshold、自適應、Threshold算法、」遠遠比有做 、手動設定閥值的選值困擾。

先來看看今天的結果圖

比較 OpenCV 的不同 「Threshold算法」

【OpenCV】20 - OpenCV 的各種 Threshold 方法整理,Otsu's Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!

「Otsu’s Threshold 大津二值化」

【OpenCV】20 - OpenCV 的各種 Threshold 方法整理,Otsu's Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!

-> 此篇文章的程式碼 github

Day20-1_大津二值化_Otsu_threshold.ipynb

Day20-2_二值化大全_Threshold_collection.ipynb

前言

花式修圖的這個系列…
主要會講的是一些比進階再更進階的內容,
會有比較多冷門的功能,或是更難的演算法。

「Otsu’s Threshold 大津二值化」 是什麼

「Otsu’s Threshold 大津二值化」,他用來幫助我們解決「手動設定閥值的選值困擾」,
我們透過 「Otsu’s Threshold」 演算法,能夠「自動找出最佳的閥值」。

圖片示例:
(引用自:https://scikit-image.org/docs/0.13.x/auto_examples/xx_applications/plot_thresholding.html)

【OpenCV】20 - OpenCV 的各種 Threshold 方法整理,Otsu's Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!

參考右下角的圖片,我們自動找到了最佳閥值後,再進行二值化。

「Otsu’s Threshold 大津二值化」,自動計算最佳閥值

# 先將圖片轉為灰階
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

# global thresholding
ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)

# Otsu's thresholding
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

# Otsu's thresholding after Gaussian filtering
blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

我們看一下效果:

【OpenCV】20 - OpenCV 的各種 Threshold 方法整理,Otsu's Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!

我們可以發現在未做 「Otsu’s Threshold」 的 histogram 中,
「「0的比例」」遠遠比有做 「Otsu’s Threshold」 還高,
從結果圖中我們也能發現這點,
如果我們只是單純要「提取人像」,
很明顯地透過 「Otsu’s Threshold」 給了我們一個更好的答案。

「Otsu’s Threshold」 的算法

重點程式碼也是一行,而有時我們也會先搭配模糊的方法先進行降噪。

ret, th = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

比較 OpenCV 的各種 「Threshold算法」

這裡就是這幾天文章的總整理啦~~~

【沒錢ps,我用OpenCV!】Day 18 - 進階修圖5,運用 OpenCV 做圖片二值化,產生黑白的圖片吧!cv2.threshold 各種選擇參數大全

【沒錢ps,我用OpenCV!】Day 19 - 花式修圖1,OpenCV 的圖片自適應二值化,產生更好效果的黑白圖片!cv2.adaptiveThreshold

【沒錢ps,我用OpenCV!】Day 20 - 花式修圖2,OpenCV 的 Threshold 方法整理,Otsu’s Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖片!

結果總圖: 大家可以自己比較不同 「Threshold算法」,選出自己最喜歡的效果哦!

【OpenCV】20 - OpenCV 的各種 Threshold 方法整理,Otsu's Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!


【沒錢ps,我用OpenCV!】Day 20 - 花式修圖2,OpenCV 的各種 Threshold 方法整理,Otsu’s Threshold 大津二值化,自動計算最佳閥值,做出最好的黑白效果圖!

本文同步發佈在: 第 12 屆 iT 邦幫忙鐵人賽


Reference

使用 Hugo 建立
主題 StackJimmy 設計