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

歡迎訪問 生活随笔!

生活随笔

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

python

第5章 Python 数字图像处理(DIP) - 图像复原与重建6 - 椒盐噪声

發布時間:2023/12/10 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第5章 Python 数字图像处理(DIP) - 图像复原与重建6 - 椒盐噪声 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

標題

        • 椒鹽噪聲

椒鹽噪聲

如果kkk是一幅數字圖像中表示灰度值的比特數,則灰度值可能是[0,2k?1][0, 2^k -1][0,2k?1]。椒鹽噪聲的PDF為:

P(z)={Ps,z=2k?1Pp,z=01?(Ps+Pp),z=V(5.16)P(z) = \begin{cases} P_s, & z = 2^k -1 \\ P_p, & z=0 \\ 1-(P_s + P_p), & z=V \end{cases} \tag{5.16}P(z)=??????Ps?,Pp?,1?(Ps?+Pp?),?z=2k?1z=0z=V?(5.16)

$0<V<2^k-1 $的任意整數

均值和方差為
zˉ=(0)Pp+K(1?Ps?Pp)+(2k?1)Ps(5.17)\bar z =(0)P_p + K(1 -P_s - P_p) + (2^k -1) P_s \tag{5.17}zˉ=(0)Pp?+K(1?Ps??Pp?)+(2k?1)Ps?(5.17)
σ2=(0?zˉ)2Pp+(K?zˉ)2(1?Ps?Pp)+(2k?1)2Ps(5.18)\sigma^2 =(0-\bar z)^2 P_p + (K - \bar z)^2 ( 1 -P_s -P_p) + (2^k -1)^2 P_s \tag{5.18}σ2=(0?zˉ)2Pp?+(K?zˉ)2(1?Ps??Pp?)+(2k?1)2Ps?(5.18)

  • 添加椒鹽噪聲的方法
    η(x,y)\eta(x, y)η(x,y)表示是一幅椒鹽噪聲圖像,其密度值滿足式(5.16)。我們使用椒鹽噪聲污染圖像f(x,y)f(x, y)f(x,y)的方法為:
    fffη\etaη為0的所有位置賦0,在fffη\etaη2k?12^k-12k?1的所有位置賦2k?12^k-12k?1值,保留fffη\etaηVVV的所有位置的值不變。

  • 噪聲密度
    像素被鹽粒或胡椒噪聲污染的概率PPPP=Ps+PpP=P_s + P_pP=Ps?+Pp?PPP稱為噪聲密度。

def salt_pepper_pdf(ps=0.1, pp=0.1):"""create salt and pepper PDF, math $$P(z) = \begin{cases} P_s, & z = 2^k -1 \\ P_p, & z=0 \\ 1-(P_s + P_p), & z=V \end{cases}$$param: z: input grayscale value of iamgeparam: v: float, while z = v, probability of other valuesparam: ps: float, probability of the saltparam: pp: float, probability of the pepper"""salt_pepper = np.zeros([3])salt_pepper[0] = pssalt_pepper[2] = ppsalt_pepper[1] = 1 - (ps + pp)return salt_pepper def add_salt_pepper(img, ps=0.01, pp=0.01):"""add salt pepper noise to imageparam: img: input image, uint8 [0, 255]param: ps: probability of salt noise, which is white noise, default is 0.01param: pp: probability of peper noise, which is black noise, default is 0.01return image with salt pepper noise, [0, 255]"""h, w = img.shape[:2]mask = np.random.choice((0, 0.5, 1), size=(h, w), p=[pp, (1-ps-pp), ps])img_out = img.copy()img_out[mask==1] = 255img_out[mask==0] = 0return img_out def add_salt_pepper_1(img, prob):output = np.zeros(img.shape, np.uint8)thres = 1 - probfor i in range(img.shape[0]):for j in range(img.shape[1]):rdn = np.random.random()if rdn < prob:output[i][j] = 0elif rdn > thres:output[i][j] = 255else:output[i][j] = img[i][j]return output # 椒鹽噪聲 z = np.array([0, 128, 255]) ps = 0.1 pp = 0.3 k = 8 z_ = 0 * pp + k * (1 - ps - pp) + (2**k - 1) * ps sigma = (0 - z_) ** 2 * pp + (k - z_) ** 2 * (1 - ps - pp) + (2**k -1) ** 2 * psprint(f"z_ -> {z_}, sigma -> {sigma}")salt_pepper = salt_pepper_pdf(ps=ps, pp=pp)plt.figure(figsize=(9, 6)) plt.bar(z, salt_pepper), plt.xticks([]), plt.yticks([]) plt.show() z_ -> 30.3, sigma -> 7076.301

# 椒鹽噪聲,可隨意控制胡椒與鹽粒的概率大小 # img_ori = np.ones((512, 512)) * 128 img_ori = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH05/Fig0503 (original_pattern).tif", 0)img_salt_pepper = add_salt_pepper(img_ori, ps=0.05, pp=0.02)plt.figure(figsize=(9, 6)) plt.subplot(121), plt.imshow(img_ori, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([]) plt.subplot(122), plt.imshow(img_salt_pepper, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])plt.tight_layout() plt.show()

hist, bins = np.histogram(img_salt_pepper.flatten(), bins=255, range=[0, 255], density=True) bar = plt.bar(bins[:-1], hist[:])

# 一些重要的概率密度函數 a = 2 b = 8z = np.linspace(0, 10, 200)gaussian = gauss_pdf(z) rayleigh = rayleigh_pdf(z, a=a, b=b) ireland = ireland_pdf(z, a=a, b=b-6) exponent = exponential_pdf(z, a=a) average = average_pdf(z, a=a, b=b)#=============椒鹽============= ps = 0.2 pp = 0.3 salt_pepper = salt_pepper_pdf(ps=ps, pp=pp)show_list = ['gaussian', 'rayleigh', 'ireland', 'exponent', 'average', 'salt_pepper']fig = plt.figure(figsize=(16, 8))for i in range(len(show_list)):ax = fig.add_subplot(2, 3, i+1)if i == 5:z = np.array([0, 100, 255])ax.bar(z, eval(show_list[i]), width=2), ax.set_xticks([0, 100, 255]), ax.set_yticks([0, eval(show_list[i]).max() ])ax.set_xlim(-1, 257), ax.set_ylim([0, eval(show_list[i]).max() + 0.05]), ax.set_title(show_list[i])else:ax.plot(z, eval(show_list[i])), ax.set_xticks([0, 10]), ax.set_yticks([0, eval(show_list[i]).max() ])ax.set_xlim(0, 10), ax.set_ylim([0, eval(show_list[i]).max() + 0.05]), ax.set_title(show_list[i]) plt.tight_layout() plt.show()

一般重要噪聲的例子

  • 高斯噪聲

    • 由電子電路及(光照不足和/或高溫引起的)傳感器噪聲等因素導致的
  • 瑞利噪聲

    • 有助于表征距離成像中的噪聲現象
  • 指數和伽馬密度

    • 在激光成像中廣泛應用
  • 沖激噪聲

    • 出現在成像期間的快速瞬變(如開關故障)
  • 均勻密度

    • 是對實際情況最起碼的描述
# 一些重要的噪聲 img_ori = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH05/Fig0503 (original_pattern).tif", 0)img_gauss = add_gaussian_noise(img_ori, mu=0, sigma=0.05) img_rayleigh = add_rayleigh_noise(img_ori, a=1) img_gamma = add_gamma_noise(img_ori, scale=2) img_exponent = add_exponent_noise(img_ori, scale=3) img_average = add_average_noise(img_ori, mean=10, sigma=1.5) ps = 0.05 pp = 0.02 img_salt_pepper = add_salt_pepper(img_ori, ps=ps, pp=pp)show_list = ['img_gauss', 'img_rayleigh', 'img_gamma', 'img_exponent', 'img_average', 'img_salt_pepper']fig = plt.figure(figsize=(14.5, 20))for i in range(len(show_list)):if i >= 3:# 顯示圖像ax = fig.add_subplot(4, 3, i + 3 + 1)ax.imshow(eval(show_list[i]), 'gray'), ax.set_xticks([]), ax.set_yticks([]), ax.set_title(show_list[i].split('_')[-1])# 對應圖像的直方圖ax = fig.add_subplot(4, 3, i + 1 + 6)hist, bins = np.histogram(eval(show_list[i]).flatten(), bins=255, range=[0, 255], density=True)bar = ax.bar(bins[:-1], hist[:]), ax.set_xticks([]), ax.set_yticks([]),else:# 顯示圖像ax = fig.add_subplot(4, 3, i + 1)ax.imshow(eval(show_list[i]), 'gray'), ax.set_xticks([]), ax.set_yticks([]), ax.set_title(show_list[i].split('_')[-1])# 對應圖像的直方圖ax = fig.add_subplot(4, 3, i + 1 + 3)hist, bins = np.histogram(eval(show_list[i]).flatten(), bins=255, range=[0, 255], density=True)bar = ax.bar(bins[:-1], hist[:]), ax.set_xticks([]), ax.set_yticks([]),plt.tight_layout() plt.show()

總結

以上是生活随笔為你收集整理的第5章 Python 数字图像处理(DIP) - 图像复原与重建6 - 椒盐噪声的全部內容,希望文章能夠幫你解決所遇到的問題。

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