0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹下使用 OpenCV 的三個(gè)基本功能以及噪聲的類型分析與處理

Dbwd_Imgtec ? 2018-02-07 16:35 ? 次閱讀

總結(jié)學(xué)習(xí)下圖像處理方面基礎(chǔ)知識(shí)。

這是第一篇,簡(jiǎn)單的介紹下使用 OpenCV 的三個(gè)基本功能:

? 圖像的讀取? 圖像的顯示? 訪問(wèn)圖像的像素值

然后概述下圖像噪聲的類型,并為圖像添加兩種常見(jiàn)的噪聲:高斯噪聲和椒鹽噪聲。最后,使用中值濾波和均值濾波來(lái)處理帶有噪聲的圖像。

OpenCV 基礎(chǔ)

在 OpenCV 中,完成圖像的輸入輸出以及顯示,只需要以下幾個(gè)函數(shù):

1. namedWindow

創(chuàng)建一個(gè)可以通過(guò)其名字引用的窗口。第一個(gè)參數(shù),設(shè)置窗口的 name,可以通過(guò)name引用該窗口;第二個(gè)參數(shù),設(shè)置窗口的大小。有以下幾個(gè)選擇:

? WINDOW_NORMAL or WINDOW_AUTOSIZE 調(diào)整窗口的大小以適應(yīng)圖像,不同的是,使用WINDOW_NORMAL可以手動(dòng)調(diào)整窗口的大??;WINDOW_AUTOSIZE不能調(diào)整窗口的大小。? WINDOW_FREERATIO or WINDOW_KEEPRATIO 改變窗口時(shí)是否會(huì)保持圖像的ratio不變,沒(méi)發(fā)現(xiàn)這倆有什么區(qū)別。

2. imshow

顯示圖像

3. imread

讀取圖像數(shù)據(jù)到Mat中,第一個(gè)參數(shù)是圖像的文件名;第二個(gè)參數(shù)是標(biāo)志,標(biāo)識(shí)怎么處理圖像的色彩。常用的幾個(gè)選項(xiàng):

? IMREAD_UNCHANGED 和原圖像保持一直不變? IMREAD_GRAYSCALE 將圖像轉(zhuǎn)換為單通道的灰度圖? IMREAD_COLOR 將圖像轉(zhuǎn)換為3通道的BGR,默認(rèn)選項(xiàng)? IMREAD_REDUCED_GRAYSCALE_2 IMREAD_REDUCED_GRAYSCALE_4 IMREAD_REDUCED_GRAYSCALE_8 單通道灰度圖讀入圖像,并減小圖像的大小。減小的值為1/2,1/4,1/8? IMREAD_REDUCED_COLOR_2 IMREAD_REDUCED_COLOR_4 IMREAD_REDUCED_COLOR_2 3通道BGR讀入圖像,并減小圖像的大小。減小的值為1/2,1/4,1/8

4. Mat

Mat 是 OpenCV 中最重要的數(shù)據(jù)結(jié)構(gòu),在做圖像處理時(shí)基本都是對(duì)該結(jié)構(gòu)體的操作。

Mat 由兩部分構(gòu)成:矩陣頭和矩陣數(shù)據(jù),矩陣頭較小,創(chuàng)建的每個(gè) Mat 實(shí)例都擁有一個(gè)矩陣頭,而矩陣數(shù)據(jù)通常占有較大的空間,OpenCV 中通過(guò)引用計(jì)數(shù)來(lái)管理這部分內(nèi)存空間,當(dāng)調(diào)用賦值運(yùn)算符和拷貝構(gòu)造函數(shù)時(shí),并不會(huì)只復(fù)制矩陣頭,并不會(huì)復(fù)制矩陣數(shù)據(jù),只是將其的引用計(jì)數(shù)加1。例如:

上面代碼中的 a,b 和 m 各自擁有自己的矩陣頭,其引用的數(shù)據(jù)卻指向同一份。也就是說(shuō),修改了其中任意一個(gè),都會(huì)影響到其余的兩個(gè)。

要想復(fù)制矩陣數(shù)據(jù),可以調(diào)用 clone 和 copyTo 這兩個(gè)函數(shù)

將圖像讀入到 Mat 后,有三種方式訪問(wèn) Mat 中的數(shù)據(jù):

? 通過(guò)指針? 使用迭代器? 調(diào)用 at

圖像噪聲

圖像噪聲是圖像在獲取或傳輸?shù)倪^(guò)程中受到隨機(jī)信號(hào)的干擾,在圖像上出現(xiàn)的一些隨機(jī)的、離散的、孤立的像素點(diǎn),這些點(diǎn)會(huì)干擾人眼對(duì)圖像信息的分析。圖像的噪聲通常是比較復(fù)雜的,很多時(shí)候?qū)⑵淇闯墒嵌嗑S隨機(jī)過(guò)程,因而可以借助于隨即過(guò)程描述噪聲,即使用概率分布函數(shù)和概率密度函數(shù)。

圖像的噪聲很多,性質(zhì)也千差萬(wàn)別, 可以通過(guò)不同的方法給噪聲分類。

按照產(chǎn)生的原因:

? 外部噪聲? 內(nèi)部噪聲

這種分類方法,有助于理解噪聲產(chǎn)生的源頭,但對(duì)于降噪算法只能起到原理上的幫組。

噪聲和圖像信號(hào)的關(guān)系,可以分為:

? 加性噪聲,加性噪聲和圖像信號(hào)強(qiáng)度不相關(guān),這類噪聲可以看著理想無(wú)噪聲圖像f和噪聲的和。? 乘性噪聲,乘性噪聲和圖像信號(hào)是相關(guān)的,往往隨圖像信號(hào)的變化而變化

而為了分析處理的方便,常常將乘性噪聲近似認(rèn)為是加性噪聲,而且總是假定信號(hào)和噪聲是互相獨(dú)立的。

最重要的來(lái)了,按照概率密度函數(shù)(PDF)分類:

? 高斯噪聲,高斯噪聲模型經(jīng)常被用于實(shí)踐中。? 脈沖噪聲(椒鹽噪聲),圖像上一個(gè)個(gè)點(diǎn),也可稱為散粒和尖峰噪聲。? 伽馬噪聲? 瑞利噪聲? 指數(shù)分布噪聲? 均勻分布噪聲

這種分類方法,引入了數(shù)學(xué)模型,對(duì)設(shè)計(jì)過(guò)濾算法比較有幫助。

給圖像添加噪聲

按照指定的噪聲類型,生成一個(gè)隨機(jī)數(shù),然后將這個(gè)隨機(jī)數(shù)加到源像素值上,并將得到的值所放到[0,255]區(qū)間即可。

C++11 隨機(jī)數(shù)發(fā)生器

新的隨機(jī)數(shù)生成器被抽象成了兩個(gè)部分:隨機(jī)數(shù)生成引擎和要生成的隨機(jī)數(shù)符合的分布。

隨機(jī)數(shù)引擎有三種:

? linear_congruential_engine 線性同余算法? mersenne_twister_engine 梅森旋轉(zhuǎn)算法? subtract_with_carry_engine 帶進(jìn)位的線性同余算法

第一種最常用,而且速度比較快;第二種號(hào)稱最好的偽隨機(jī)數(shù)生成器

添加圖像噪聲

使用C++的隨機(jī)數(shù)發(fā)生器為圖像添加兩種噪聲:椒鹽噪聲和高斯噪聲。椒鹽噪聲是圖像中離散分布的白點(diǎn)或者黑點(diǎn),其代碼如下:

上述代碼中使用ptr()獲取圖像某一行的行首指針,得到行首指針后就可以任意的訪問(wèn)改行的像素值。

高斯噪聲是一種加性噪聲,為圖像添加高斯噪聲的代碼如下:

隨機(jī)產(chǎn)生符合高斯分布的隨機(jī)數(shù),然后將該值和圖像原有的像素值相加,并將得到的和壓縮到[0,255]區(qū)間內(nèi)。

左邊是原圖,中間的是添加高斯噪聲后的圖像,最右邊的是添加椒鹽噪聲后的圖像。

使用濾波器去除噪聲

根據(jù)噪聲類型的不同,選擇不同的濾波器過(guò)濾掉噪聲。通常,對(duì)于椒鹽噪聲,選擇中值濾波器(Median Filter),在去掉噪聲的同時(shí),不會(huì)模糊圖像;對(duì)于高斯噪聲,選擇均值濾波器(Mean Filter),能夠去掉噪聲,但會(huì)對(duì)圖像造成一定的模糊。

在 OpenCV 中,對(duì)應(yīng)于均值濾波器的函數(shù)是 blur,該函數(shù)需要5個(gè)參數(shù),通常只設(shè)置前3個(gè)后兩個(gè)使用默認(rèn)值即可。blur(m, m2, Size(5, 5));第一個(gè)參數(shù)是輸入的圖像,第二個(gè)參數(shù)是輸出的圖像,第三個(gè)參數(shù)是濾波器的大小,這里使用的是5×55×5的矩形。

對(duì)應(yīng)于中值濾波器的函數(shù)是medianBlur(m1, m3, 5);前兩個(gè)參數(shù)是輸入輸出的圖像,第三個(gè)參數(shù)是濾波器的大小,由于是選取的是中值,濾波器的大小通常是一個(gè)奇數(shù)。

下圖是對(duì)有噪聲圖像使用濾波器后的結(jié)果,中間的是原始圖像,左邊的是使用均值濾波器過(guò)濾高斯噪聲后的結(jié)果;右邊的是使用中值濾波器過(guò)濾椒鹽噪聲后的結(jié)果??梢悦黠@的看出,這兩種濾波器都能夠很好的去掉圖像的噪聲,但會(huì)對(duì)圖像造成一定的模糊,尤其是均值濾波器造成的模糊比較明顯。

總結(jié)

本文算是第一篇文章,簡(jiǎn)單的介紹下 OpenCV 的基本使用;接著訪問(wèn)圖像中的像素,并借助于C++11的隨機(jī)數(shù)庫(kù),為圖像添加高斯噪聲和椒鹽噪聲;最后使用中值濾波器和均值濾波器除去圖像,并對(duì)結(jié)果進(jìn)行了對(duì)比。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 噪聲
    +關(guān)注

    關(guān)注

    13

    文章

    1122

    瀏覽量

    47427
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1292

    瀏覽量

    56764
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41368

原文標(biāo)題:圖像處理基礎(chǔ)(1):噪聲的添加和過(guò)濾

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【NUCLEO-F412ZG試用體驗(yàn)】遲來(lái)的開箱及基本功能介紹

    ` 本帖最后由 xcs101 于 2017-1-1 21:36 編輯 遲來(lái)的開箱及基本功能介紹大學(xué)最后一年幸運(yùn)地申請(qǐng)到了試用,不過(guò)由于期末考試的時(shí)間臨近,一直沒(méi)將試用報(bào)告整理處理,難得考完試
    發(fā)表于 01-01 21:30

    物聯(lián)網(wǎng)的最基本功能是什么?

    萬(wàn)物互聯(lián)大時(shí)代,物聯(lián)網(wǎng)的最基本功能是什么?
    發(fā)表于 06-16 11:33

    BMS的基本功能和硬件拓?fù)?/a>

    BMS基本功能BMS 的硬件拓?fù)銪MS的狀態(tài)估算及均衡控制電池內(nèi)短路的快速識(shí)別
    發(fā)表于 12-16 06:30

    MCU的基本功能及程序編寫

    MCU的基本功能MCU程序的編寫
    發(fā)表于 01-12 07:53

    MCU的基本功能和程序編寫

    MCU的基本功能MCU程序的編寫
    發(fā)表于 01-14 07:42

    MCU的基本功能及程序編寫

    MCU的基本功能MCU程序的編寫
    發(fā)表于 02-02 06:05

    MCU的基本功能

    MCU的基本功能MCU程序的編寫
    發(fā)表于 02-05 06:37

    MCU的基本功能有哪些呢

    以下來(lái)自Atmel Mega128的說(shuō)明手冊(cè):微控制器(微處理器)Microcontroller(MCU)的四個(gè)基本功能為:1.access memory,2.perform calculation
    發(fā)表于 11-03 06:50

    STM32CUBEMX基本功能如何配置?

    STM32CUBEMX基本功能如何配置?
    發(fā)表于 11-23 06:12

    串口的基本配置和基本功能是什么?

    串口功能有哪些?串口的基本配置和基本功能是什么?
    發(fā)表于 12-10 07:19

    reertos基本功能包括什么

    本文介紹嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTO的常用API,freertos基本功能包括 任務(wù)調(diào)度、內(nèi)存管理、中斷管理、定時(shí)器管理、消息隊(duì)列、信號(hào)量、互斥鎖等。1. FreeRTOS 任務(wù)相關(guān)API
    發(fā)表于 12-27 06:36

    RTOS具有的基本功能有哪些

    title: 【編寫RTOS】前序author: zhoujiabotags:RTOS任務(wù)切換Cortex - M3date: 2020-05-08 16:53:00一個(gè)RTOS具有的基本功能
    發(fā)表于 01-06 07:11

    介紹解決USART通信的最基本功能實(shí)現(xiàn)的編程思路

    作為初學(xué)stm32的小白,下面我來(lái)介紹解決USART通信的最基本功能實(shí)現(xiàn)的編程思路。1.
    發(fā)表于 01-20 07:17

    介紹操作系統(tǒng)的基本功能以及UCOSII的移植方法

    文章向大家介紹操作系統(tǒng)的基本功能,以及UCOSII的移植方法。RTOS:Real time Operation SystemKeil RTX 是免版稅的確定性實(shí)時(shí)操作系統(tǒng),適用于 ARM 和 Cortex-M 設(shè)備。RTOS可以
    發(fā)表于 02-18 06:59

    自動(dòng)發(fā)電控制系統(tǒng)具有三個(gè)基本功能

    自動(dòng)發(fā)電控制系統(tǒng)(AGC)具有三個(gè)基本功能,這些功能在電力系統(tǒng)的運(yùn)行和調(diào)度中發(fā)揮著重要作用。以下是這三個(gè)基本功能的詳細(xì)解析:
    的頭像 發(fā)表于 10-03 15:05 ?574次閱讀