python圖像加噪聲的實現(xiàn)示例
更新時間:2023年08月14日 11:21:30 作者:winycg
圖像加噪聲就是其中一種常見的處理方式,噪聲可以幫助提高圖像的真實性和復雜性,使得處理后的圖像更加接近真實的場景,本文主要介紹了python圖像加噪聲的實現(xiàn)示例,感興趣的可以了解一下
加上雨點噪聲
import cv2 import numpy as np def get_noise(img, value=10): ''' #生成噪聲圖像 >>> 輸入: img圖像 value= 大小控制雨滴的多少 >>> 返回圖像大小的模糊噪聲圖像 ''' noise = np.random.uniform(0, 256, img.shape[0:2]) # 控制噪聲水平,取浮點數(shù),只保留最大的一部分作為噪聲 v = value * 0.01 noise[np.where(noise < (256 - v))] = 0 # 噪聲做初次模糊 k = np.array([[0, 0.1, 0], [0.1, 8, 0.1], [0, 0.1, 0]]) noise = cv2.filter2D(noise, -1, k) # 可以輸出噪聲看看 '''cv2.imshow('img',noise) cv2.waitKey() cv2.destroyWindow('img')''' return noise def rain_blur(noise, length=10, angle=0,w=1): ''' 將噪聲加上運動模糊,模仿雨滴 >>>輸入 noise:輸入噪聲圖,shape = img.shape[0:2] length: 對角矩陣大小,表示雨滴的長度 angle: 傾斜的角度,逆時針為正 w: 雨滴大小 >>>輸出帶模糊的噪聲 ''' #這里由于對角陣自帶45度的傾斜,逆時針為正,所以加了-45度的誤差,保證開始為正 trans = cv2.getRotationMatrix2D((length/2, length/2), angle-45, 1-length/100.0) dig = np.diag(np.ones(length)) #生成對焦矩陣 k = cv2.warpAffine(dig, trans, (length, length)) #生成模糊核 k = cv2.GaussianBlur(k,(w,w),0) #高斯模糊這個旋轉(zhuǎn)后的對角核,使得雨有寬度 #k = k / length #是否歸一化 blurred = cv2.filter2D(noise, -1, k) #用剛剛得到的旋轉(zhuǎn)后的核,進行濾波 #轉(zhuǎn)換到0-255區(qū)間 cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX) blurred = np.array(blurred, dtype=np.uint8) return blurred def alpha_rain(rain,img,beta = 0.8): #輸入雨滴噪聲和圖像 #beta = 0.8 #results weight #顯示下雨效果 #expand dimensin #將二維雨噪聲擴張為三維單通道 #并與圖像合成在一起形成帶有alpha通道的4通道圖像 rain = np.expand_dims(rain,2) rain_effect = np.concatenate((img,rain),axis=2) #add alpha channel rain_result = img.copy() #拷貝一個掩膜 rain = np.array(rain,dtype=np.float32) #數(shù)據(jù)類型變?yōu)楦↑c數(shù),后面要疊加,防止數(shù)組越界要用32位 rain_result[:,:,0]= rain_result[:,:,0] * (255-rain[:,:,0])/255.0 + beta*rain[:,:,0] rain_result[:,:,1] = rain_result[:,:,1] * (255-rain[:,:,0])/255 + beta*rain[:,:,0] rain_result[:,:,2] = rain_result[:,:,2] * (255-rain[:,:,0])/255 + beta*rain[:,:,0] #對每個通道先保留雨滴噪聲圖對應(yīng)的黑色(透明)部分,再疊加白色的雨滴噪聲部分(有比例因子) cv2.imwrite('rain_result.png', np.uint8(rain_result)) img = cv2.imread('cv.png') noise = get_noise(img,value=500) rain = rain_blur(noise,length=50,angle=-30,w=3) alpha_rain(rain,img,beta=0.6)
加上光斑噪聲
利用一張光斑的圖像加在原始圖像上:
import numpy as np import cv2 from PIL import Image image1 = cv2.imread('cub1.jpg') image2 = cv2.imread('ban.jpg') height = image1.shape[0] width = image1.shape[1] image2 = cv2.resize(image2, (width, height), interpolation = cv2.INTER_LINEAR) image = (image1 + image2) // 2 cv2.imwrite('cv.png', np.uint8(image))
到此這篇關(guān)于python圖像加噪聲的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)python圖像加噪聲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tensorflow模型繼續(xù)訓練 fineturn實例
今天小編就為大家分享一篇tensorflow模型繼續(xù)訓練 fineturn實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01安裝python依賴包psycopg2來調(diào)用postgresql的操作
這篇文章主要介紹了安裝python依賴包psycopg2來調(diào)用postgresql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

使用Python的package機制如何簡化utils包設(shè)計詳解
這篇文章主要給大家介紹了關(guān)于使用Python的package機制如何簡化utils包設(shè)計的相關(guān)資料,文中通過示例代碼的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
2017-12-12 
python內(nèi)置HTTP Server如何實現(xiàn)及原理解析
這篇文章主要為大家介紹了python內(nèi)置HTTP Server如何實現(xiàn)及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
2023-11-11