常見的圖像變換二值化與形態學操作-python-opencv版

1.變爲rgb通道:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
2.變爲灰度圖:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
3.直方圖均衡化(一般需化爲灰度圖):
eq = cv2.equalizeHist(gray)#灰度圖像直方圖均衡化

4.OTSU 方差法進行二值化
ret1, th1_bw = cv2.threshold(eq, 0, 255, cv2.THRESH_OTSU) th1_bw即爲二值化後的圖片

5.膨脹(一般爲二值化後的圖像進行二值化,但彩色圖也可操作):
1)選取核的大小:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(12, 12))
2)膨脹
dilate1 = cv2.dilate(th1_bw,kernel)
cv2.imshow("膨脹",dilate1)
cv2.waitKey()

6.腐蝕:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(12, 12))
dilate1 = cv2.erode(th1_bw,kernel)
cv2.imshow("腐蝕",erode)
cv2.waitKey()

7.開運算
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5, 5))
opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow("Open", opened)
cv2.waitKey(0)

8.閉運算
closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow("Close",closed);
cv2.waitKey(0)

9.濾波運算:
雙邊濾波:
value1 = 3
value2 = 1
dx = value1 * 12 # 雙邊濾波參數一
fc = value1 * 8 # 雙邊濾波參數二
img = cv2.bilateralFilter(img,dx,fc*2,fc/2) #雙邊濾波EPFFilter(Src)

或:
雙邊濾波器的優點是能夠做邊緣保存(edge preserving),一般過去用的維納濾波或者高斯濾波去降噪。都會較明顯地模糊邊緣,對於高頻細節的保護效果並不明顯。
雙邊濾波器顧名思義比高斯濾波多了一個高斯方差sigma-d,它是基於空間分佈的高斯濾波函數。所以在邊緣附近,離的較遠的像素不會太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存。
blurred=cv2.bilateralFilter(img, 9,41,41)

參考:https://www.cnblogs.com/dyllove98/archive/2013/06/23/3151263.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章