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

OpenCV學(xué)習(xí)之圖像加噪與濾波的實現(xiàn)詳解

 更新時間:2023年02月16日 08:54:45   作者:是Dream呀  
這篇文章主要為大家詳細(xì)介紹了OpenCV中圖像的加噪與濾波操作的相關(guān)資料,文中的示例代碼簡潔易懂,具有一定的借鑒價值,需要的可以參考一下

一、實驗內(nèi)容

編寫一Python程序,要求實現(xiàn)以下功能:

  • 讀入一幅圖像。
  • 使用兩種以上的方法分別向圖像中添加噪聲。
  • 輸出一幅二值圖像,圖像中未加入噪聲的區(qū)域為黑色,加入噪聲的區(qū)域為白色。
  • 使用三種濾波方法對上述添加了噪聲的圖像進(jìn)行濾波處理。
  • 輸出濾波處理后的圖像。

撰寫實驗報告,將上述處理的原理與處理流程進(jìn)行介紹;并添加原圖、加入噪聲的圖像、描述噪聲位置的二值圖像以及三種濾波方法處理后的圖像;最終對處理結(jié)果進(jìn)行分析,并附加程序。

二、實驗環(huán)境和配置

解釋器:Python3.9、開發(fā)環(huán)境:PyCharm

三、實驗原理及操作

實驗中我們使用opencv中imread讀入圖片,imwrite保存圖片。

1. 添加噪聲

在本次實驗中使用到的兩種噪聲分別為椒鹽噪聲及白噪聲。

椒鹽噪聲是將圖片中一定比例的像素點隨機(jī)置為0或255,使圖片上隨機(jī)分布黑色和白色的噪聲點。 實驗中,我們建立一閾值參數(shù)per(添加噪聲的比例),隨機(jī)生成與輸入圖片相同尺寸的0到1的隨機(jī)數(shù)矩陣,記錄隨機(jī)數(shù)矩陣中小于per/2和處于per/2與per之間的元素位置。將原圖像中與矩陣小于per/2對應(yīng)位置相同的像素置為255,處于per/2與per之間的置為0,這就完成為圖像添加椒鹽噪聲。

白噪聲與椒鹽噪聲類似,不同的是椒鹽噪聲可能添加黑色或白色的噪聲點,而白噪聲只會添加白色噪聲點。實驗中,我們同樣建立一閾值比例參數(shù)per,與輸入圖片尺寸相同的0到1的隨機(jī)矩陣,將矩陣中小于per的元素對應(yīng)位置的原圖像素點置為255,這就完成了對圖像添加白噪聲。

2.噪聲二值化

實驗中將我們將原圖與添加噪聲后的圖片進(jìn)行減法操作,未添加噪聲點的部分即為原始像素與原始像素相減,得到的值為0(黑色)。添加噪聲點的部分為噪聲點與原始圖像相減,無規(guī)律的某一特殊值。之后將非0點認(rèn)定為噪聲點所在位置,使用二值化操作將非0點置為255(白色),0點仍保持為0(黑色),這就實現(xiàn)了輸出標(biāo)志位置信息的二值圖像。

3. 濾波處理

實驗中使用均值濾波、中值濾波、高斯濾波對添加噪聲后的圖像進(jìn)行處理。

均值濾波是將濾波器中心的像素點替換為處于濾波器中全部像素點的均值,使用opencv中blur實現(xiàn);中值濾波是將濾波器中心的像素點替換為處于濾波器中全部像素點的中值,使用opencv中medianBlur實現(xiàn);高斯濾波的濾波器參數(shù)與離中心像素的距離有關(guān),其參數(shù)符合高斯分布,使用opencv中GaussianBlur實現(xiàn)。使用濾波器在原圖像進(jìn)行掃描,以實現(xiàn)降噪等目的。

四、實驗結(jié)果

1.原圖、添加椒鹽噪聲、添加白噪聲對比

圖1 原圖(上)、添加椒鹽噪聲(中)、添加白噪聲(下)對比圖

2.椒鹽噪聲二值圖與白噪聲二值圖

椒鹽噪聲二值圖(per=0.02)與白噪聲二值圖(per=0.05)

3.椒鹽噪聲處理圖經(jīng)處理后圖像

椒鹽噪聲處理圖經(jīng)均值濾波(上)、中值濾波(中)、高斯濾波(下)后圖像:

4.白噪聲處理圖經(jīng)處理后圖像

白噪聲處理圖經(jīng)均值濾波(上)、中值濾波(中)、高斯濾波(下)后圖像

五、結(jié)果分析

由圖1可知,對原圖像添加噪聲后,添加椒鹽噪聲的圖像上呈現(xiàn)出不規(guī)律的黑白像素點,添加白噪聲的圖像上呈現(xiàn)出不規(guī)律的白色像素點,說明添加噪聲成功。

從運行結(jié)果可以得出低通濾波操作可對圖像進(jìn)行降噪處理。其中中值濾波對椒鹽噪聲和白噪聲降噪效果顯著,原因是椒鹽噪聲點和白噪聲點與周圍像素點差異較大,當(dāng)有中值濾波器經(jīng)過時會將偏差值較大的點(黑噪聲和白噪聲)置為濾波器中的中值,這就過濾了這些差異較大的點,實現(xiàn)了圖像降噪。椒鹽噪聲點和白噪聲點經(jīng)均值濾波與高斯濾波后噪聲點顏色變淡、面積變大,是因為這兩種濾波相當(dāng)于對處于濾波器中的像素值進(jìn)行加權(quán)求和,當(dāng)噪聲點被濾波器處理時,與周圍像素加權(quán)求和,噪聲顏色變淺;當(dāng)處理的像素點周圍有噪聲時,與噪聲點加權(quán)求和,該像素點被“污染”,噪聲點變大。

六、實驗源碼

# @Time : 2022/10/10 16:29
# @Author : 是Dream呀
# @File : 圖像加噪與濾波.py
import cv2 as cv
import numpy as np

img = cv.imread('photo.jpg')
cv.imshow('test',img)
cv.waitKey(0)
cv.destroyAllWindows()

#  定義sp_Noise()來作為椒鹽噪聲
def sp_Noise(image, per):
    img = image.copy()
    threshold = per/2
    w,h = img.shape[0], img.shape[1]
    rand = np.random.random([w,h])
    #  標(biāo)注噪聲區(qū)域的二值圖像,背景為黑色,噪聲區(qū)域為白色
    noise = np.zeros(img.shape)
    noise[rand<per] = 1
    img[rand<threshold] = 0
    img[(rand<per) & (rand>=threshold)] = 255
    return noise*255,img

#  定義white_Noise()來作為白噪聲
def white_Noise(image, per):
    img = image.copy()
    w,h = img.shape[0], img.shape[1]
    rand = np.random.random([w,h])
    #  標(biāo)注噪聲區(qū)域的二值圖像,背景為黑色,噪聲區(qū)域為白色
    noise = np.zeros(img.shape)
    noise[rand < per] = 1
    img[rand < per] = 255
    return noise*255, img

white_noise, white_img = white_Noise(img, 0.05)
sp_noise, sp_img = sp_Noise(img, 0.02)

#  使用圖像減法與二值化處理獲取噪聲點
sp_noise1 = np.float32(sp_img) - np.float32(img)
sp_noise1 = np.where(sp_noise1 == 0, 0, 255)
sp_noise1 = np.uint8(sp_noise1)

white_noise1 = np.float32(white_img) - np.float32(img)
white_noise1 = np.where(white_noise1 == 0, 0, 255)
white_noise1 = np.uint8(white_noise1)
cv.imshow('white_noise1',white_noise1)
cv.imshow('sp_noise1',sp_noise1)
cv.waitKey(0)
cv.destroyAllWindows()

cv.imshow('img',img)
cv.imshow('white_img',white_img)
cv.imshow('sp_img',sp_img)
#  cv.imshow('white_noise',white_noise)
#  cv.imshow('sp_noise',sp_noise)
cv.waitKey(0)
cv.destroyAllWindows()

img_sp_blur = cv.blur(sp_img,(3,3))
img_white_blur = cv.blur(white_img,(3,3))
cv.imshow('img',img)
cv.imshow('white_img',white_img)
cv.imshow('sp_img',sp_img)
cv.imshow('img_sp_blur',img_sp_blur)
cv.imshow('img_white_blur',img_white_blur)
cv.waitKey(0)
cv.destroyAllWindows()


img_sp_med = cv.medianBlur(sp_img, 3)
img_white_med = cv.medianBlur(white_img, 3)
cv.imshow('img',img)
cv.imshow('white_img',white_img)
cv.imshow('sp_img',sp_img)
cv.imshow('img_sp_med',img_sp_med)
cv.imshow('img_white_med',img_white_med)
cv.waitKey(0)
cv.destroyAllWindows()

img_sp_gs = cv.GaussianBlur(sp_img,(5,5),1)
img_white_gs = cv.GaussianBlur(white_img,(5,5),1)
cv.imshow('img',img)
cv.imshow('white_img',white_img)
cv.imshow('sp_img',sp_img)
cv.imshow('img_sp_gs',img_sp_gs)
cv.imshow('img_white_gs',img_white_gs)
cv.waitKey(0)
cv.destroyAllWindows()

cv.imwrite('white_noise1.jpg',white_noise1)
cv.imwrite('sp_noise1.jpg',sp_noise1)
cv.imwrite('white_img.jpg',white_img)
cv.imwrite('sp_img.jpg',sp_img)

cv.imwrite('img_sp_blur.jpg',img_sp_blur)
cv.imwrite('img_white_blur.jpg',img_white_blur)
cv.imwrite('img_sp_med.jpg',img_sp_med)
cv.imwrite('img_white_med.jpg',img_white_med)
cv.imwrite('img_sp_gs.jpg',img_sp_gs)
cv.imwrite('img_white_gs.jpg',img_white_gs)

dx = cv.Sobel(sp_img,-1,1,0,3)
dy = cv.Sobel(sp_img,-1,0,1,3)
d = cv.addWeighted(dx,0.5,dy,0.5,0)
d = cv.convertScaleAbs(d)
cv.imshow('img_gs_med',d)
cv.waitKey(0)
cv.destroyAllWindows()

以上就是OpenCV學(xué)習(xí)之圖像加噪與濾波的實現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于OpenCV圖像加噪濾波的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實現(xiàn)web應(yīng)用框架之增加動態(tài)路由

    python實現(xiàn)web應(yīng)用框架之增加動態(tài)路由

    這篇文章主要介紹web應(yīng)用框架如何添加動態(tài)路由,在我們編寫的框架中,我們添加動態(tài)路由,是使用了正則表達(dá)式,同時在注冊的時候,需要注明該路由是請求路由,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • Python實現(xiàn)批量下載SMAP數(shù)據(jù)

    Python實現(xiàn)批量下載SMAP數(shù)據(jù)

    在科學(xué)研究和數(shù)據(jù)分析中,獲取大規(guī)模的遙感數(shù)據(jù)是一個常見的任務(wù),本文將詳細(xì)為大家介紹如何利用Python實現(xiàn)SMAP數(shù)據(jù)的批量下載,需要的可以參考下
    2023-12-12
  • Python關(guān)于時間序列calendar模塊的深入講解

    Python關(guān)于時間序列calendar模塊的深入講解

    calendar,是與日歷相關(guān)的模塊。calendar模塊文件里定義了很多類型,主要有Calendar,TextCalendar以及HTMLCalendar類型。其中,Calendar是TextCalendar與HTMLCalendar的基類
    2021-11-11
  • python進(jìn)階之魔術(shù)方法詳解

    python進(jìn)階之魔術(shù)方法詳解

    這篇文章主要為大家介紹了python進(jìn)階之魔術(shù)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 淺談Python接口對json串的處理方法

    淺談Python接口對json串的處理方法

    今天小編就為大家分享一篇淺談Python接口對json串的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 詳細(xì)解讀Python字符串的使用與f-string

    詳細(xì)解讀Python字符串的使用與f-string

    這篇文章主要介紹了詳細(xì)解讀Python字符串的使用與f-string,在?Python?中,引號內(nèi)的任何內(nèi)容都是字符串,但是字符串也有很多的用法,需要的朋友一起來看看吧
    2023-04-04
  • 用python實現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計

    用python實現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計

    今天教各位小伙伴學(xué)習(xí)怎么用python實現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴有很大的幫助,需要的朋友可以參考下
    2021-05-05
  • Python解決拋小球問題 求小球下落經(jīng)歷的距離之和示例

    Python解決拋小球問題 求小球下落經(jīng)歷的距離之和示例

    這篇文章主要介紹了Python解決拋小球問題 求小球下落經(jīng)歷的距離之和,涉及Python基于遞歸的數(shù)值計算相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 詳解用Python練習(xí)畫個美隊盾牌

    詳解用Python練習(xí)畫個美隊盾牌

    這篇文章主要介紹了用Python練習(xí)畫個美隊盾牌,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python調(diào)用Zoomeye搜索接口的實現(xiàn)

    Python調(diào)用Zoomeye搜索接口的實現(xiàn)

    本文主要介紹了Python調(diào)用Zoomeye搜索接口的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論

山阴县| 城口县| 武城县| 承德县| 洛浦县| 芜湖县| 凤冈县| 石首市| 沐川县| 中西区| 遂宁市| 甘洛县| 高清| 黄浦区| 涡阳县| 大冶市| 正安县| 临桂县| 黔江区| 自治县| 乐至县| 嘉善县| 乐清市| 南开区| 北川| 桃园县| 新蔡县| 丁青县| 都江堰市| 苗栗市| 岑溪市| 林甸县| 米脂县| 卓资县| 恩施市| 永仁县| 黄梅县| 调兵山市| 车险| 原阳县| 阿克苏市|