–本人一个图像小萌新,如有错误,欢迎指导改正
在对图像二值化后去噪。
def denoosing(image,filt_size): # filt_size为去噪卷积窗口的大小,为奇数
h,w = image.shape
# print(image)
avg = (filt_size-1)//2
img = image.copy() #二值化去噪必须在不改变原有图像的情况下去噪
for i in range(avg,h-avg):
for j in range(avg,w-avg):
sum = 0
for m in range(-avg,avg+1,1):
for n in range(-avg,avg+1,1):
sum = sum + int(image[i+m,j+n])
sum_avg = (sum-int(image[i,j])) // (filt_size**2-1) #获取当前坐标的邻近8个点的像素点的平均值
if abs(sum_avg-int(image[i,j])) > 127.5: #当当前坐标点和邻近8个像素点坐标平均值相差超过127.5时,将当前坐标黑白翻转
# print(1)
img[i,j] = 255-image[i,j] #翻转当前坐标点
cv2.imshow("denoosing",img)
在测试上面代码,发现效果并不是特别好,会有部分噪点不能够去除,如果有更好的代码,欢迎指导