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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从去除噪点的说起,有OpenCV要什么PS?

發(fā)布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从去除噪点的说起,有OpenCV要什么PS? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫在最前

想必生活在2020的我們一定不得不對PS有所了解或者接觸,雖然現(xiàn)在借助人工智能技術(shù),ps已經(jīng)變成了一代“神級”妖術(shù),但是憶往昔,早期的PS其實也不過是一堆計算機視覺里的算法罷了。其實我們就可以使用計算機視覺里的技術(shù)來做一次人肉PS,提到計算機視覺逃不過的坎肯定是OpenCV,而又繞不過的坎肯定是深度學(xué)習(xí),所以我們干脆點直接opencv-python來進(jìn)行我們的旅程。只不過這次我不想劍指(劍指系列,之前寫的一系列一般會由淺入深,最終目標(biāo)是深挖)了,所以我們這次漫談計算機視覺,從最基本的OpenCV慢慢講起,一直講到這幾年比較好的深度學(xué)習(xí)各個領(lǐng)域。

正文開頭

OpenCV一個出色的開源框架,其中Open指的就是OpenSource,開源。而CV則是計算機視覺(Computer Vision)。依靠OpenCV背后開源社區(qū)背書,其不僅在過去實現(xiàn)了絕大多數(shù)計算機視覺所需要的基礎(chǔ)算法,同時也能跟隨時代發(fā)展不斷更新新的神經(jīng)網(wǎng)絡(luò)。

我們在之前曾經(jīng)編寫過OpenCV實現(xiàn)人臉識別,為了更好地進(jìn)行之后技術(shù)的發(fā)展。我們自然需要對OpenCV進(jìn)一步學(xué)習(xí)。今天就是從最基本的內(nèi)容——去除噪點開始,同時學(xué)習(xí)OpenCV的基本操作。

計算機女神——蕾娜

lena圖是計算機視覺非常經(jīng)典的圖像,她的優(yōu)勢在于圖像顏色豐富,明暗明顯,而且輪廓,邊角等都有豐富存在對演示多種算法都有不錯的效果(當(dāng)然也很漂亮,所以更容易廣泛傳播)。我們這次包括之后都會有很多地方能夠用到她。順便一提,上面這幅圖片來自O(shè)penCV的官方,你可以在opencv的github項目中找到她。

圖片的讀取,展示與存儲

opencv的安裝非常簡單,我們主要在python中使用它,因此使用“pip install opencv-python”進(jìn)行安裝即可。然后我們在python中引用OpenCV類庫,并使用即可。

讀取和保存的具體代碼如下:

import cv2 as cv# 讀取圖片 src=cv.imread('/lena.jpg')# 存儲圖片 cv.imwrite('images/lena_write.jpg',src)

可以看到代碼非常簡單,那么如何進(jìn)行如想處理呢?其實也非常簡單,只需要對src進(jìn)行操作即可,具體的操作粗略的來說有兩大類:第一類,使用opencv的方法進(jìn)行處理,包括類型轉(zhuǎn)換,濾波,反轉(zhuǎn)等等圖像操作,在這一類操作中,圖像依舊是opencv的存儲格式。而第二大類,則是從比較數(shù)學(xué)的角度考慮,存儲的圖像本質(zhì)不過是一個多維矩陣(或者多維數(shù)組),那么我們自然也可以使用python中的其他矩陣處理的類庫對其進(jìn)行處理,甚至編寫自己的圖像處理算法等等。

我們剛剛說到的展示圖片,本質(zhì)也是一種矩陣操作——以合適的像素展示于屏幕。我們也可以有多種方法解決該問題,下面就是有關(guān)代碼:

# 展示圖片 cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE) cv.imshow('input_image', src) cv.waitKey(0)# 刪除建立的全部窗口,釋放資源 cv.destroyAllWindows()

上面的代碼非常簡單,甚至在這里第一行還可以沒有,也沒有太大影響。至于代碼的具體解釋如下:第一行代碼的參數(shù)namedWindow,是創(chuàng)建一個窗口,第一個參數(shù)是窗口名字,第二個是尺寸。inshow適用于展示圖片的函數(shù),第一個參數(shù)是輸入的窗口的標(biāo)題,第二個是存儲的圖像。第三行是等待輸入以確定之后的操作,不設(shè)置的話,之前創(chuàng)建的窗口會直接退出。我們也可以通過設(shè)置具體的輸入鍵,使窗口在接收輸入之后自動執(zhí)行后續(xù)的代碼。最后一行是刪除所有窗口來釋放計算資源,主要是為了保障資源的釋放,這樣更安全合理一些。

圖片加噪

許多時候圖片會出現(xiàn)噪點,目前隨著各種技術(shù)的提升,噪點已經(jīng)比較少見了,但是我們?nèi)匀粫芏喔鼘I(yè)的領(lǐng)域遇到這類問題。opencv就自帶了很多濾波方法可以用于去噪,同時也帶有多種去噪。我們首先使用隨機函數(shù)為圖片添加隨機的噪點,也就是白點,然后使用非局部平均算法進(jìn)行去噪。由于opencv的原圖大小為400×400,所以我們需要生成的隨機噪點范圍為(0,399)。

filePath = 'images/lena.jpg' img = cv.imread(filePath)for i in range(1000): #生成1000個噪點a = random.randint(0,399)b = random.randint(0,399)img[a,b] = 255cv.imshow("noise",img) # 顯示噪點圖

圖像去噪

不同的去噪方法對應(yīng)著不同的噪點,我們這里首先使用非局部平均算法進(jìn)行圖像去噪,這是一種比較通用的去噪方法。缺點在于由于采用圖像的冗余數(shù)據(jù)進(jìn)行去噪,對于邊緣部分的處理效果往往比較不太好。

dst = cv.fastNlMeansDenoisingColored(img, None, 12, 12, 7, 21)# 保存圖片 cv.imwrite("/home/fonttian/Documents/MyBlog/OpenCV/images/lena_noise_1000_do.jpg",dst)

由上面可以看出該方法并不太適用于邊緣噪點,同時由于進(jìn)行了局部平均,因此也會喪失一些局部細(xì)節(jié)。那么這個時候我們就需要使用一些更直接的濾波方法進(jìn)行去噪。常見的濾波器有很多種,濾波器本身就是一個小的矩陣,也本質(zhì)等同與現(xiàn)在深度學(xué)習(xí)常用的卷積核。只不過我們這里是直接使用特定的軍陣運算對圖像進(jìn)行處理。與局部平均算法類似的是均值濾波,但是如果只是簡單的將幾個相鄰的數(shù)值進(jìn)行均值計算的話,由于我們這里的添加是白噪點(最大像素255),那么就會不可避免的導(dǎo)致周圍平均后全部變白。因此我們需要使用的是其他參數(shù)。這里我們選擇了中值濾波進(jìn)行濾波。兩種濾波器的參數(shù)都是指參數(shù)范圍。具體代碼和效果如下:

# 均值模糊 去隨機噪聲有很好的去噪效果 #(1, 15)是垂直方向模糊,(15, 1)是水平方向模糊,我們這里是隨機單個白噪點,選擇(3,3)進(jìn)行演示 dst = cv.blur(img, (3, 3))

中值濾波則比較合適,具體代碼和效果如下

dst = cv.medianBlur(img, 3)

可以看到中值濾波在這里的去噪效果和細(xì)節(jié)保留都非常好。而如果假如我們面對更多的噪聲類型,則也需要具體情況具體分析,選擇合理的處理方法。這個我們將在之后的內(nèi)容中一一教給大家。

專欄地址

CSDN

漫談計算機視覺

github

fongtian的github項目–漫談計算機視覺

公眾號
本文章首發(fā)于我司的公眾號“小白白AI學(xué)習(xí)”,這是我們高尋真源(山東)教育科技有限公司創(chuàng)辦的公眾號,主要目標(biāo)是為了促進(jìn)大數(shù)據(jù)與人工智能在山東高校的發(fā)展和落地。歡迎大家關(guān)注我們的公眾號,一起交流學(xué)習(xí),共同進(jìn)步。

總結(jié)

以上是生活随笔為你收集整理的从去除噪点的说起,有OpenCV要什么PS?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。