常见的图像变换二值化与形态学操作-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

猜你喜欢

转载自blog.csdn.net/zzyy0929/article/details/81079511