Day19_自適應圖片二值化_adaptiveThreshold.ipynb
花式修圖的這個系列...
主要會講的是一些比進階再更進階的內容,
會有比較多冷門的功能,或是更難的演算法。
# 先將圖片轉為灰階
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 將圖片做模糊化,可以降噪
blur_img = cv2.medianBlur(img,5)
# 一般圖二值化(未模糊降噪)
ret, th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
# 一般圖自適應平均二值化(未模糊降噪)
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,11,2)
# 一般圖自適應高斯二值化(未模糊降噪)
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2)
# 一般圖二值化(有模糊降噪)
ret, th4 = cv2.threshold(blur_img,127,255,cv2.THRESH_BINARY)
# 一般圖算術平均法的自適應二值化(有模糊降噪)
th5 = cv2.adaptiveThreshold(blur_img,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,11,2)
# 一般圖高斯加權均值法自適應二值化(有模糊降噪)
th6 = cv2.adaptiveThreshold(blur_img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2)
自適應二值化
我們先來討論什麼是 自適應的二值化
,
一般的 二值化
我們只會考慮單一點的值,直接去做閥值分析,
但一張圖片的「每個鄰近的像素都是彼此有關連的」。
如果單純只針對單一個點去看,似乎失去了對整張圖相鄰點的考慮,
因此 自適應二值化
就是在幫助我們找到單一點與鄰近區域的關係。
自適應二值化
的算法cv2.adaptiveThreshold
能夠幫助我們將一張圖片做自適應的二值化,
自適應的二值化又分為
cv2.ADAPTIVE_THRESH_MEAN_C
,取的是「區域平均值」cv2.ADAPTIVE_THRESH_GAUSSIAN_C
,cv2.adaptiveThreshold
函數形式cv2.adaptiveThreshold(image, 255, 自適應二值化算法, 閥值類型, 參考局部大小, 偏移量)
cv2.ADAPTIVE_THRESH_MEAN_C
和 cv2.ADAPTIVE_THRESH_GAUSSIAN_C
THRESH_BINARY
和 THRESH_BINARY_INV
,自適應二值化
搭配模糊降噪,能有更好的效果通常在做 自適應二值化
之前,我們都會先將圖片做模糊化,
能夠達到降噪的效果,看下圖結果的圖片應該能很明顯地分得出差別。
(文章內容中,我們使用 cv2.medianBlur
來做模糊降噪的示範。)
https://blog.csdn.net/on2way/article/details/46812121
https://blog.csdn.net/qq_37385726/article/details/82017177
https://www.twblogs.net/a/5b8c1ba02b717718833082e1