日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

图像中值滤波器python实现

發布時間:2023/12/14 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像中值滤波器python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

中值濾波器原理

圖像處理中最著名的統計排序濾波器是中值濾波器,即用一個預定義的像素領域中的灰度中值來代替像素的值:

其中是以(x,y)為中心的領域,包含中心點自己,在領域中找到中值,并用中值代替中心點的像素值。例如,對于圖像中的一個像素點a,其灰度值為6,我們取大小為3×3的領域,灰度值如下表所示:

123
7699
854

我們進行排序后發現其中值為5,故使用5來代替原來的灰度值6。很顯然,在小區域內正常像素差距較小,故使用中值替代時所造成的差異較小,但是中值濾波器能很好的降低某些隨機噪聲,例如上例中的99,尤其對于椒鹽噪聲有很好的濾除效果。

Python實現

import cv2 import numpy as np import matplotlib.pyplot as pltdef noise(img, snr):h = img.shape[0]w = img.shape[1]img1 = img.copy()sp = h * w # 計算圖像像素點個數NP = int(sp * snr)randx = 1randy = 1 # 計算圖像椒鹽噪聲點個數for i in range(NP):while (img1[randx, randy] == 0 or img1[randx, randy]== 255):# 確保隨機得到的像素沒有被污染randx = np.random.randint(1, h - 1) # 生成一個 1 至 h-1 之間的隨機整數randy = np.random.randint(1, w - 1) # 生成一個 1 至 w-1 之間的隨機整數if np.random.random() <= 0.5: # np.random.random()生成一個 0 至 1 之間的浮點數img1[randx, randy] = 0 # 隨機放置椒噪聲、鹽噪聲else:img1[randx, randy] = 255return img1def median(img, size): # img為輸入圖像 size為中值濾波器大小height = img.shape[0]wide = img.shape[1]img1 = np.zeros((height, wide), np.uint8) # 用于存放新的圖像for i in range(int(size/2), height - int(size/2)):for j in range(int(size/2), wide - int(size/2)):Adjacent_pixels = np.zeros(size * size, np.uint8)s = 0for k in range(-1 * int(size / 2), int(size / 2)+1):for l in range(-1 * int(size / 2), int(size / 2)+1):Adjacent_pixels[s] = img[i + k, j + l]s += 1Adjacent_pixels.sort() # 尋找中值median = Adjacent_pixels[int((size * size - 1) / 2)] # 將中值代替原來的中心值img1[i, j] = medianreturn img1image = cv2.imread(r'11.jpg', cv2.IMREAD_GRAYSCALE) print(image)imagen = noise(image, 0.23) # 添加噪聲plt.subplot(1, 3, 1) plt.imshow(image, plt.cm.gray) plt.title('original') plt.subplot(1, 3, 2) plt.imshow(imagen, plt.cm.gray) plt.title('noise') image1 = median(imagen, 5) plt.subplot(1, 3, 3) plt.imshow(image1, plt.cm.gray) plt.title('median') plt.show()

實現結果

可以看出,中值濾波器對椒鹽噪聲的去除效果強差人意。

總結

以上是生活随笔為你收集整理的图像中值滤波器python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。