高斯模糊的部分代码:
#确保数值范围在0-255之间 def clamp(pv): if pv > 255: return 255 if pv < 0: return 0 else: return pv #高斯噪声 def gaussian_nosize(image): h,w,c = image.shape for row in range(h): for col in range(w): s = np.random.normal(0,20,3) b = image[row,col,0] g = image[row,col,1] r = image[row,col,2] image[row,col,0] = clamp(b + s[0]) image[row,col,1] = clamp(g + s[1]) image[row,col,2] = clamp(g + s[2]) cv.imshow("gaussian_demo",image)
高斯模糊:
#高斯模糊(基于权重) #cv.GaussianBlur(src,(0,0),15),若不为(0,0),则优先从(x,x)开始计算,否则则从后面的参数值开始运算 dst = cv.GaussianBlur(src,(0,0),15) cv.imshow("GaussianBlur_demo",dst)
高斯双边:
边缘保留滤波(EPF)的实现,高斯双边或均值迁移
#高斯双边滤波 def bi_demo(image): dst = cv.bilateralFilter(image,0,100,15) cv.imshow("bi_demo",dst) #均值迁移 def shift_demo(image): dst = cv.pyrMeanShiftFiltering(image,10,50) cv.imshow("shift_demo",dst)