最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python圖像加噪聲的實現(xiàn)示例

 更新時間:2023年08月14日 11:21:30   作者:winycg  
圖像加噪聲就是其中一種常見的處理方式,噪聲可以幫助提高圖像的真實性和復(fù)雜性,使得處理后的圖像更加接近真實的場景,本文主要介紹了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)文章

最新評論

庆元县| 剑阁县| 土默特左旗| 山东省| 分宜县| 莱芜市| 洱源县| 大田县| 邢台县| 盱眙县| 磴口县| 通州市| 大新县| 基隆市| 南平市| 长宁区| 阿拉善右旗| 宝丰县| 房山区| 凭祥市| 澳门| 确山县| 余姚市| 济宁市| 罗甸县| 尼玛县| 都兰县| 无棣县| 绥滨县| 乌兰浩特市| 铜山县| 靖安县| 佛山市| 丹凤县| 云龙县| 会同县| 东乌| 宜春市| 赤水市| 威海市| 阿城市|