計(jì)算機(jī)視覺(jué)PPT完整全套教學(xué)課件_第1頁(yè)
計(jì)算機(jī)視覺(jué)PPT完整全套教學(xué)課件_第2頁(yè)
計(jì)算機(jī)視覺(jué)PPT完整全套教學(xué)課件_第3頁(yè)
計(jì)算機(jī)視覺(jué)PPT完整全套教學(xué)課件_第4頁(yè)
計(jì)算機(jī)視覺(jué)PPT完整全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩409頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章計(jì)算機(jī)視覺(jué)概述1全套PPT課件第1章計(jì)算機(jī)視覺(jué)概述.pptx第2章Python與OpenCV運(yùn)行環(huán)境.pptx第3章圖像預(yù)處理.pptx第4章圖像特征提取.pptx第5章圖像分類(lèi).pptx第6章神經(jīng)網(wǎng)絡(luò)基礎(chǔ).pptx第7章卷積神經(jīng)網(wǎng)絡(luò)的基本概念.pptx第8章目標(biāo)檢測(cè).pptx第9章其他深度學(xué)習(xí)網(wǎng)絡(luò).pptx第10章人臉表情識(shí)別研究.pptx目錄1.1計(jì)算機(jī)視覺(jué)的研究目標(biāo)及相關(guān)歷史1.21.3計(jì)算機(jī)視覺(jué)的發(fā)展計(jì)算機(jī)視覺(jué)的任務(wù)1.4計(jì)算機(jī)視覺(jué)與其他學(xué)科的關(guān)系計(jì)算機(jī)視覺(jué)

1.1計(jì)算機(jī)視覺(jué)的研究目標(biāo)及相關(guān)歷史一、人類(lèi)視覺(jué)系統(tǒng)與計(jì)算機(jī)視覺(jué)系統(tǒng)圖像(或視頻)感應(yīng)裝置解釋設(shè)備感知結(jié)果橋,水,樹(shù),花,綠色等結(jié)果:春天的花園,人類(lèi)視覺(jué)系統(tǒng):計(jì)算機(jī)視覺(jué)系統(tǒng):計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)(Computer

Vision,

CV):是一門(mén)研究如何讓計(jì)算機(jī)實(shí)現(xiàn)人類(lèi)視覺(jué)系統(tǒng)功能的學(xué)科。

簡(jiǎn)單說(shuō),就是給計(jì)算機(jī)安裝上眼睛(攝像機(jī))和大腦(算法),讓計(jì)算機(jī)像人一樣去看、去感知環(huán)境。計(jì)算機(jī)視覺(jué)的主要的目標(biāo):讓計(jì)算機(jī)通過(guò)數(shù)值矩陣認(rèn)識(shí)圖片并完成特定的任務(wù)。計(jì)算機(jī)視覺(jué)

二、計(jì)算機(jī)視覺(jué)歷史回顧生物視覺(jué)的發(fā)展計(jì)算機(jī)視覺(jué)

機(jī)器視覺(jué)的發(fā)展計(jì)算機(jī)視覺(jué)

人類(lèi)視覺(jué)神經(jīng)的啟迪計(jì)算機(jī)視覺(jué)

1.2計(jì)算機(jī)視覺(jué)的發(fā)展

BlockworldLarry

Roberts,1963通過(guò)計(jì)算機(jī)程序從數(shù)字圖像中提取諸如立方體、稧狀體、棱柱體等多面體的三維結(jié)構(gòu),并對(duì)物體形狀及物體的空間關(guān)系進(jìn)行描述。計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)

1970DavidMarr提出了計(jì)算視覺(jué)理論計(jì)算機(jī)視覺(jué)

視覺(jué)神經(jīng)系統(tǒng)認(rèn)知過(guò)程第一階段抽取原始圖像的邊緣、紋理、線(xiàn)條、邊界等基本特征,這些特征的集合稱(chēng)為基元圖第二階段在以觀(guān)測(cè)者為中心的坐標(biāo)中,由輸入圖像和基元圖恢復(fù)場(chǎng)景信息(深度、法線(xiàn)方向、輪廓等),這些信息包含了深度信息,但不是真正的物理三維表示,因此,稱(chēng)為二維半圖第三階段在以物體為中心的坐標(biāo)系中,由基元圖、二維半圖提升到三維表達(dá)計(jì)算機(jī)視覺(jué)

卷積神經(jīng)網(wǎng)絡(luò)-20

世紀(jì)

80

年代卷積神經(jīng)網(wǎng)絡(luò)技術(shù)的實(shí)現(xiàn),使計(jì)算機(jī)視覺(jué)的研究邁上了一個(gè)新臺(tái)階-CNN由許多神經(jīng)網(wǎng)絡(luò)層組成。卷積和池化這兩種不同類(lèi)型的層通常是交替的。網(wǎng)絡(luò)中每個(gè)濾波器的深度從左到右增加。最后通常由一個(gè)或多個(gè)全連接層組成-生物視覺(jué)中的“局部感受野”是卷積神經(jīng)網(wǎng)絡(luò)的理論基礎(chǔ)計(jì)算機(jī)視覺(jué)

-深度學(xué)習(xí)技術(shù)發(fā)展計(jì)算機(jī)視覺(jué)

-CNN和深度神經(jīng)網(wǎng)絡(luò)才流行起來(lái)的原因一是CPU和GPU的計(jì)算能力不斷加強(qiáng),尤其是GPU的并行能力對(duì)于神經(jīng)網(wǎng)絡(luò)中的計(jì)算很有幫助。二是大數(shù)據(jù),無(wú)論是什么樣的機(jī)器學(xué)習(xí)算法,沒(méi)有足夠的數(shù)據(jù)量都容易o(hù)verfitting,而現(xiàn)在有了足夠大的有標(biāo)記的數(shù)據(jù)庫(kù)。計(jì)算機(jī)視覺(jué)

圖像分類(lèi)挑戰(zhàn):1000個(gè)對(duì)象類(lèi)1431167張圖片

互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展為深度學(xué)習(xí)技術(shù)的應(yīng)用提供了海量的數(shù)據(jù)

2010-2014基于ImageNet上的圖像分類(lèi)競(jìng)賽

0.26

0.16

0.12

0.07計(jì)算機(jī)視覺(jué)

1.3計(jì)算機(jī)視覺(jué)的任務(wù)圖像分類(lèi)計(jì)算機(jī)視覺(jué)

目標(biāo)檢測(cè)計(jì)算機(jī)視覺(jué)

圖像語(yǔ)義分割計(jì)算機(jī)視覺(jué)

圖像生成計(jì)算機(jī)視覺(jué)

視頻分類(lèi)計(jì)算機(jī)視覺(jué)

1.4計(jì)算機(jī)視覺(jué)與其它學(xué)科的聯(lián)系第2章Python與OpenCV運(yùn)行環(huán)境2目錄2.1Python環(huán)境配置2.22.3OpenCV環(huán)境配置OpenCV視覺(jué)庫(kù)模塊功能計(jì)算機(jī)視覺(jué)

2.1Python語(yǔ)言計(jì)算機(jī)視覺(jué)

單擊編輯標(biāo)題Python是一門(mén)計(jì)算機(jī)編程語(yǔ)言?!艚Y(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮母邔哟斡?jì)算機(jī)編程語(yǔ)言;◆1989年荷蘭Guido發(fā)明了一種面向?qū)ο蟮慕忉屝途幊陶Z(yǔ)言開(kāi)放源代碼;◆python設(shè)計(jì)哲學(xué):優(yōu)雅、明確、簡(jiǎn)潔。計(jì)算機(jī)視覺(jué)

一、基本概念◆Python解釋器是將python源碼高級(jí)語(yǔ)言解析為二進(jìn)制機(jī)器語(yǔ)言的工具。通常說(shuō)安裝python就是指安轉(zhuǎn)python解釋器。計(jì)算機(jī)視覺(jué)

◆正如在電腦上編輯文檔需要用Word、處理數(shù)據(jù)需要用Excel、做演示文稿需要用PPT、修圖需要用PS一樣,編寫(xiě)代碼也需要特定的工具。而這個(gè)用來(lái)編寫(xiě)代碼的工具就叫做編輯器。Python的編輯器有很多,有Python解釋器自帶的IDLE、基于iPython的JupyterNotebook、也有如PyCharm、Spyder、WingIDE等主要針對(duì)Python代碼編輯的編輯器;還有很多編輯器,如SublimeText、vSCode、Vim等適合各種編程語(yǔ)言的編輯器?!鬚ython最大的優(yōu)點(diǎn)之一就在于其豐富的庫(kù),pip(packageinstallerforPython)就是庫(kù)管理工具,通過(guò)pip就可以安裝、卸載、更新眾多的庫(kù)。Pythonpip,pip(最大的優(yōu)點(diǎn)之一就在于其豐富的庫(kù)的包安裝程序)就是庫(kù)管理工具,通過(guò)pip就可以安裝、卸載、更新眾多的庫(kù)?!舭惭bpython涉及到python解釋器、代碼編輯器和pip包管理工具者3個(gè)工具計(jì)算機(jī)視覺(jué)

二、Python解釋器版本◆Python2已停止更新的最高版本是Python2.7;◆推薦選擇Python3的較新版本;◆尋找Python3的教程和代碼;◆舊的Python2.7的代碼轉(zhuǎn)換成3的版本:運(yùn)用第三方工具(Python2.x和Python3.x不兼容)。一般說(shuō)的安裝Python就是指安裝Python解釋器,因此Python解釋器必須安裝。目前,Python有兩個(gè)流行的版本Python2和Python3。三、安裝Python解釋器+第三方編輯器Pycharm計(jì)算機(jī)視覺(jué)

在Windows上安裝Python解釋器?!鬚ython安裝包下載地址:/downloads/◆選擇Python3.9.x的版本,點(diǎn)擊Download計(jì)算機(jī)視覺(jué)

◆點(diǎn)進(jìn)去之后,滾動(dòng)到下面,選擇Windowsinstaller(64-bit)的版本◆這也是官方推薦(Recommended)的◆說(shuō)明:以Windowsx86-64開(kāi)頭的是64位的Python安裝程序,目前主流◆步驟4:點(diǎn)擊前面的Version超鏈接下載計(jì)算機(jī)視覺(jué)

◆勾選AddPython3.9toPATH,這樣可以將Python命令工具所在目錄添加到系統(tǒng)Path環(huán)境變量中,以后開(kāi)發(fā)程序或者運(yùn)行Python命令會(huì)非常方便◆選擇自定義安裝◆Python支持兩種安裝方式,默認(rèn)安裝和自定義安裝:默認(rèn)安裝會(huì)勾選所有組件,并安裝在C盤(pán);自定義安裝可以手動(dòng)選擇要安裝的組件,并安裝到其它盤(pán)符。計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)

◆選擇好你常用的安裝目錄,點(diǎn)擊“Install”,等待幾分鐘就可以完成安裝計(jì)算機(jī)視覺(jué)

◆安裝完成以后,打開(kāi)Windows的命令行程序(命令提示符),在窗口中輸入python命令(注意字母p是小寫(xiě)的),如果出現(xiàn)Python的版本信息,并看到命令提示符>>>,就說(shuō)明安裝成功了計(jì)算機(jī)視覺(jué)

◆運(yùn)行python命令啟動(dòng)的是python交互式編程環(huán)境,我們可以在>>>后面輸入代碼,并立即看到執(zhí)行結(jié)果◆按下Ctrl+Z快捷鍵,或者輸exit()命令即可退出交互式編程環(huán)境,回到Windows命令行程序計(jì)算機(jī)視覺(jué)

Python解釋器3.4以后的版本自帶pip包管理工具,且自帶代碼編輯器IDLE,因此安裝了3.4之后的版本的解釋器就相當(dāng)于安裝了3個(gè)工具?!鬒DLE的全稱(chēng)是IntegratedDevelopmentandLearningEnvironment是Python自帶的集成開(kāi)發(fā)和學(xué)習(xí)環(huán)境◆Windows開(kāi)始◆搜索IDLE◆打開(kāi)窗口計(jì)算機(jī)視覺(jué)

◆在實(shí)際開(kāi)發(fā)中,通常不能只包含一行代碼,當(dāng)需要編寫(xiě)多行代碼時(shí),可以單獨(dú)創(chuàng)建一個(gè)文件保存這些代碼,在全部編寫(xiě)完成后一起執(zhí)行◆

File->NewFile”菜單項(xiàng),將打開(kāi)一個(gè)新窗口,在該窗口中,可以直接編寫(xiě)Python代碼◆py是Python文件的擴(kuò)展名◆在菜單欄中選擇“Run->RunModule”菜單項(xiàng)計(jì)算機(jī)視覺(jué)

但是,由于Python解釋器自帶的IDLE不好使用,只適合少量代碼編輯。因此,一般會(huì)再安裝一個(gè)第三方的編輯器,如pycharm,vscode等。PyCharm安裝,

PyCharm是由JetBrains開(kāi)發(fā)的IDE◆

Python安裝包下載地址:/products.html◆

選擇PyCharm進(jìn)入計(jì)算機(jī)視覺(jué)

◆PyCharm有兩個(gè)版本◆

專(zhuān)業(yè)版(收費(fèi))Professional◆

社區(qū)版(免費(fèi))Community◆

社區(qū)版功能上少一點(diǎn),不過(guò)我們學(xué)習(xí)足夠了計(jì)算機(jī)視覺(jué)

◆選中下載下來(lái)的文件,點(diǎn)擊右鍵◆

選擇“以管理員身份運(yùn)行計(jì)算機(jī)視覺(jué)

可以保持默認(rèn)的安裝目錄◆

如果需要更改,點(diǎn)擊Browse選擇一個(gè)自己喜歡的安裝位置◆

點(diǎn)擊Next計(jì)算機(jī)視覺(jué)

勾選CreateDesktopShortcut創(chuàng)建一個(gè)桌面快捷方式,其他的選項(xiàng)可以忽略不選◆點(diǎn)擊Next計(jì)算機(jī)視覺(jué)

◆安裝完畢后,可以不直接RunPyCharm◆

等一會(huì)用桌面的快捷方式圖標(biāo)運(yùn)行◆

點(diǎn)擊Finish計(jì)算機(jī)視覺(jué)

桌面上的快捷方式點(diǎn)擊右鍵◆

選擇“以管理員身份運(yùn)行計(jì)算機(jī)視覺(jué)

Customize是個(gè)性化IDE的界面◆

可以調(diào)節(jié)字號(hào)大小◆

顯示界面的顏色(黑色或白色)計(jì)算機(jī)視覺(jué)

◆新建工程Project◆

為新工程起名pythonProject001◆

設(shè)定解釋器interpreter計(jì)算機(jī)視覺(jué)

◆點(diǎn)擊右鍵New◆

新建PythonFile計(jì)算機(jī)視覺(jué)

◆輸入測(cè)試程序◆運(yùn)行查看結(jié)果計(jì)算機(jī)視覺(jué)

四、安裝anaconda+第三方編輯器Pycharm◆anaconda有兩個(gè)好處,一是集成了很多常用的,尤其是和數(shù)據(jù)分析相關(guān)的第三方庫(kù)以及python3.7版本解釋器以及很多編輯器(如jupyter、Spyder等)﹔二是可以創(chuàng)建虛擬環(huán)境,兼容python2.x和python3.x,因此更加方便,因此很多人會(huì)選擇安裝anaconda(安裝anaconda就不用按照第上面方法操作了),只要安裝了anaconda,也就相當(dāng)于集齊了安裝python需要的3個(gè)工具,而且更多?!魹槭裁催€要安裝pycharm呢(只要安裝了anaconda,完全可以不安裝pycharm),只是因?yàn)閍naconda雖然有很多編輯器〈(如jupyter、Spyder等),但是pycharm是專(zhuān)門(mén)針對(duì)python的,非常方便,行業(yè)應(yīng)用多,因此,作為長(zhǎng)期學(xué)習(xí)工作考慮,有必要安裝學(xué)習(xí)。計(jì)算機(jī)視覺(jué)

安裝Anaconda官網(wǎng)下載地址:(選擇Windows64bit)https:///products/individual

計(jì)算機(jī)視覺(jué)

雙擊下載好的exe文件進(jìn)行安裝,點(diǎn)擊next,點(diǎn)擊iagree,選擇justforme點(diǎn)擊next,點(diǎn)擊browse選擇安裝目錄,勾選紅色框點(diǎn)擊install等待完成,點(diǎn)擊next,點(diǎn)擊skip,取消兩個(gè)勾選框點(diǎn)擊finish;計(jì)算機(jī)視覺(jué)

按win+R,輸入cmd進(jìn)入終端,輸入python,如果出現(xiàn)Python版本信息說(shuō)明安裝成功(如果看不到嘗試先進(jìn)入安裝目錄在輸入python)。計(jì)算機(jī)視覺(jué)

在計(jì)算機(jī)視覺(jué)項(xiàng)目的開(kāi)發(fā)中,OpenCV(OpenSourceComputerVisionLibrary)作為最大眾的開(kāi)源庫(kù),擁有了豐富的常用圖像處理函數(shù)庫(kù),采用C/C++語(yǔ)言編寫(xiě),可以運(yùn)行在Linux、Windows、Mac等操作系統(tǒng)上,能夠快速的實(shí)現(xiàn)一些圖像處理和識(shí)別的任務(wù)。此外,OpenCV還提供了java、python、cuda等的使用接口、機(jī)器學(xué)習(xí)的基礎(chǔ)算法調(diào)用,從而使得圖像處理和圖像分析變得更加易于上手,讓開(kāi)發(fā)人員更多的精力花在算法的設(shè)計(jì)上。2.2OpenCV視覺(jué)庫(kù)計(jì)算機(jī)視覺(jué)

OpenCV的應(yīng)用領(lǐng)域OpenCV是一個(gè)用于圖像處理、分析、機(jī)器視覺(jué)方面的開(kāi)源函數(shù)庫(kù),該庫(kù)也包含了比較常用的一些機(jī)器學(xué)習(xí)算法?;蛟S,很多人知道圖像識(shí)別、機(jī)器視覺(jué)在安防領(lǐng)域有所應(yīng)用。但很少有人知道,在航拍圖片、街道圖片(例如googlestreetview)中,要嚴(yán)重依賴(lài)于機(jī)器視覺(jué)的攝像頭標(biāo)定、圖像融合等技術(shù)。近年來(lái),在入侵檢測(cè)、特定目標(biāo)跟蹤、目標(biāo)檢測(cè)、人臉檢測(cè)、人臉識(shí)別、人臉跟蹤等領(lǐng)域,OpenCV可謂大顯身手,而這些,僅僅是其應(yīng)用的冰山一角。如今,來(lái)自世界各地的各大公司、科研機(jī)構(gòu)的研究人員,共同維護(hù)支持著OpenCV的開(kāi)源庫(kù)開(kāi)發(fā)。這些公司和機(jī)構(gòu)包括:微軟,IBM,索尼、西門(mén)子、google、intel、斯坦福、MIT、CMU、劍橋。計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)

OpenCV-python安裝前面安裝好anaconda后,可以在anaconda下創(chuàng)建一個(gè)opencv-python環(huán)境首先,打開(kāi)anacondanavigator,然后創(chuàng)建一個(gè)環(huán)境來(lái)放opencv-python。先點(diǎn)擊下面的create,然后創(chuàng)建一個(gè)新環(huán)境。2.2OpenCV視覺(jué)庫(kù)計(jì)算機(jī)視覺(jué)

選擇python版本,這里選擇的是Python3.6。也可以根據(jù)需要和習(xí)慣來(lái)選擇合適的python版本。環(huán)境名字可以自己命名,但是盡量寫(xiě)自己能看懂的...這里已經(jīng)創(chuàng)建了一個(gè)叫opencv-python的環(huán)境,為了演示,這里創(chuàng)建一個(gè)叫Pytorch_envs的環(huán)境。然后會(huì)自動(dòng)開(kāi)始下載一些相關(guān)包。計(jì)算機(jī)視覺(jué)

之后,打開(kāi)anacondaprompt。先激活環(huán)境:activateopenCV(這里打開(kāi)的是已經(jīng)創(chuàng)建好的openCV環(huán)境,前面只做過(guò)程講解)完成到這一步代表OpenCV環(huán)境框架搭建完成計(jì)算機(jī)視覺(jué)

安裝numpy:pipinstallnumpy安裝OpenCV-Python:pipinstallopencv-python安裝imutils:pip

installimutils安裝scipy:pipinstallscipy安裝完opencv-python后命令行打開(kāi)python交互式環(huán)境:importcv2成功,便說(shuō)明成功安裝了opencv-python計(jì)算機(jī)視覺(jué)

2.3OpenCV視覺(jué)庫(kù)模塊OpenCV的CV模塊包含基本的圖像處理函數(shù)和高級(jí)的計(jì)算機(jī)視覺(jué)算法。ML是機(jī)器學(xué)習(xí)庫(kù),包含一些基于統(tǒng)計(jì)的分類(lèi)和聚類(lèi)工具。HighGUI包含圖像和視頻輸入/輸出的函數(shù)。CXCore包含OpenCV的一些基本數(shù)據(jù)結(jié)構(gòu)和相關(guān)函數(shù)。計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)

OpenCV圖像基本操作1.圖像的讀、寫(xiě)、顯示(1)圖像讀取cv2.imread(文件名,顯示控制參數(shù)),第一個(gè)參數(shù)是圖像文件名,第二個(gè)參數(shù)是要告訴函數(shù)應(yīng)該如何讀取這幅圖像。cv2.IMREAD_COLOR:讀入一副彩色圖像,圖像的透明度會(huì)被忽略,這是默認(rèn)參數(shù)。cv2.IMREAD_GRAYSCALE:以灰度模式讀入圖像。(2)圖像顯示dWindow(窗口名),創(chuàng)建指定名稱(chēng)的窗口。cv2.imshow(窗口名,圖像名),在指定的窗口顯示圖像。cv2.destroyWindow(窗口名),刪除指定窗口。cv2.destroyAllWindow(),刪除所有窗口。cv2.waitKey([delay]),鍵盤(pán)綁定函數(shù),當(dāng)decay>0時(shí),等待delay毫秒;當(dāng)decay<0時(shí),等待鍵盤(pán)單擊;當(dāng)decay=0時(shí),無(wú)限等待。計(jì)算機(jī)視覺(jué)

#OpenCV讀入圖像,matplotlib顯示importcv2ascvfrommatplotlibimportpyplotaspltimg=cv.imread("D:\opencv\lenna.jpg")b,g,r=cv.split(img)img2=cv.merge([r,g,b])plt.subplot(121),plt.imshow(img),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(img2),plt.xticks([]),plt.yticks([])plt.show()(a)未經(jīng)通道變換(b)經(jīng)過(guò)通道變換計(jì)算機(jī)視覺(jué)

(3)圖像保存cv2.imwrite(文件名,圖像名),第一個(gè)參數(shù)是保存的文件名,第二個(gè)參數(shù)是要保存的圖像。圖像讀、顯示、寫(xiě)示例#OpenCV圖像讀取、顯示和保存importcv2img=cv2.imread('D:/opencv/bird.jpg')dWindow("Image")cv2.imshow("Image",img)cv2.waitKey(0)cv2.destroyAllWindows()cv2.imwrite('D:\\opencv\\bird2.jpg',img)

計(jì)算機(jī)視覺(jué)

2圖像幾何變換(1)圖像的平移平移對(duì)應(yīng)的齊次坐標(biāo)矩陣表示形式為:以圖像沿x方向移動(dòng)100像素、y方向移動(dòng)50像素為例,實(shí)現(xiàn)程序如下:。#圖像平移importcv2importnumpyasnpimportmatplotlib.pyplotaspltimg=cv2.imread('D:/opencv/flower.jpg')M=np.float32([[1,0,100],[0,1,50]])#變換矩陣rows,cols=img.shape[:2]#warpAffine有三個(gè)參數(shù),原始圖像、變換矩陣、變換后的圖像大小res=cv2.warpAffine(img,M,(rows,cols))b,g,r=cv2.split(img)img=cv2.merge([r,g,b])b,g,r=cv2.split(res)res=cv2.merge([r,g,b])plt.subplot(121)plt.imshow(img)plt.subplot(122)plt.imshow(res)plt.show()

計(jì)算機(jī)視覺(jué)

(2)圖像的縮放對(duì)應(yīng)的齊次坐標(biāo)矩陣表示形式為:圖像的擴(kuò)大與縮小有專(zhuān)門(mén)函數(shù),cv2.resize()在函數(shù)cv2.resize()中,有幾種不同的插值(interpolation)方法可供選擇,在縮小時(shí)推薦cv2.INTER_ARER方法,擴(kuò)大時(shí)推薦cv2.INTER_CUBIC和cv2.INTER_LINEAR方法,默認(rèn)情況下采用cv2.INTER_LINEAR方法。以圖像寬度不變、高度放大一倍為例,縮放程序示例如下:#圖像縮放importnumpyasnpimportcv2ascvfrommatplotlibimportpyplotaspltimg=cv.imread("D:/opencv/flower.jpg")height,width=img.shape[:2]Scaling_img=cv.resize(img,(1*width,2*height),interpolation=cv.INTER_CUBIC)dWindow("Image")cv.imshow('Scalingimage',Scaling_img)cv.imshow('Imputimage',img)cv.waitKey(0)cv.destroyAllWindows()

計(jì)算機(jī)視覺(jué)

(3)圖像的旋轉(zhuǎn)對(duì)應(yīng)的齊次坐標(biāo)矩陣表示形式為:cv2.getRotationMatrix2D(),用來(lái)獲得旋轉(zhuǎn)變換矩陣。這個(gè)函數(shù)需要三個(gè)參數(shù),旋轉(zhuǎn)中心,旋轉(zhuǎn)角度,旋轉(zhuǎn)后圖像的縮放比例。以圖像旋轉(zhuǎn)45度為例,實(shí)現(xiàn)程序如下:#圖像旋轉(zhuǎn)importcv2importnumpyasnpimportmatplotlib.pyplotaspltimg=cv2.imread('D:/opencv/flower.jpg')rows,cols=img.shape[:2]#獲得旋轉(zhuǎn)變換矩陣M,參數(shù)一是旋轉(zhuǎn)中心,參數(shù)二旋轉(zhuǎn)角度,參數(shù)三縮放比例M=cv2.getRotationMatrix2D((cols/2,rows/2),45,1)#獲得M后,調(diào)用cv2.warpAffine函數(shù)得到旋轉(zhuǎn)后的圖像res=cv2.warpAffine(img,M,(cols,rows))b,g,r=cv2.split(img)img=cv2.merge([r,g,b])b,g,r=cv2.split(res)res=cv2.merge([r,g,b])plt.subplot(121),plt.imshow(img)plt.subplot(122),plt.imshow(res)plt.show()計(jì)算機(jī)視覺(jué)

(4)圖像的翻轉(zhuǎn)垂直(以X軸為對(duì)稱(chēng)軸)翻轉(zhuǎn)對(duì)應(yīng)的齊次坐標(biāo)矩陣表示形式為OpenCV中提供了函數(shù)cv2.flip(src,flipCode)來(lái)實(shí)現(xiàn)圖像的翻轉(zhuǎn),scr為原圖像,flipCode為翻轉(zhuǎn)代碼:flipCode=0,以X軸為對(duì)稱(chēng)軸翻轉(zhuǎn);flipCode>0,以Y軸為對(duì)稱(chēng)軸翻轉(zhuǎn);flipCode<0,同時(shí)沿X、Y軸翻轉(zhuǎn)。水平、垂直、水平垂直翻轉(zhuǎn)示例#圖像翻轉(zhuǎn)importcv2importnumpyasnpfrommatplotlibimportpyplotaspltimage=cv2.imread('D:/opencv/flower.jpg')#FlippedHorizontally水平翻轉(zhuǎn)h_flip=cv2.flip(image,1)#FlippedVertically垂直翻轉(zhuǎn)v_flip=cv2.flip(image,0)#FlippedHorizontally&Vertically水平垂直翻轉(zhuǎn)hv_flip=cv2.flip(image,-1)plt.figure(figsize=(8,8))plt.subplot(221),plt.imshow(image[:,:,::-1]),plt.title('original')plt.subplot(222),plt.imshow(h_flip[:,:,::-1]),plt.title('horizontalflip')plt.subplot(223),plt.imshow(v_flip[:,:,::-1]),plt.title('verticalflip')plt.subplot(224),plt.imshow(hv_flip[:,:,::-1]),plt.title('h_vflip')#調(diào)整子圖間距plt.subplots_adjust(top=0.9,bottom=0.2,left=0.10,right=0.95,hspace=0.4,wspace=0.05)plt.show()

計(jì)算機(jī)視覺(jué)

(5)圖像的剪裁取原圖像x方向100:350像素、y方向100:350像素的圖像,代碼如下#圖像剪裁importcv2ascvimportnumpyasnpimg=cv.imread("D:/opencv/flower.jpg")img2=img[100:350,100:350]cv.imshow('image',img2)cv.waitKey(0)

計(jì)算機(jī)視覺(jué)

(6)圖像的仿射圖像旋轉(zhuǎn)加上拉伸形成圖像仿射變換。仿射變換需要確定變換矩陣MOpenCV提供一種根據(jù)變換前后三個(gè)點(diǎn)(左上角,左下角,右上角)的對(duì)應(yīng)關(guān)系來(lái)自動(dòng)求解變換矩陣M的函數(shù),M=cv2.getAffineTransform(pos1,pos2),參數(shù)pos1和pos2分別為變換前后三個(gè)點(diǎn)的位置。得到M后,使用函數(shù)cv2.warpAffine()即可進(jìn)行仿射變換。width=imgInfo[1]mode=imgInfo[2]#原圖中的三個(gè)點(diǎn)matSrc=np.float32([[0,0],[0,height-1],[width-1,0]])#對(duì)應(yīng)的變換后的三個(gè)點(diǎn)matDst=np.float32([[50,50],[100,height-50],[width-200,100]])#獲得仿射變換矩陣M=cv.getAffineTransform(matSrc,matDst)#得到變換后的圖像dst=cv.warpAffine(img,M,(height,width))cv.imshow('image',dst)cv.waitKey(0)

#圖像仿射變換importcv2ascvimportnumpyasnpimg=cv.imread("D:/opencv/flower.jpg")imgInfo=img.shapeheight=imgInfo[0]計(jì)算機(jī)視覺(jué)

3.圖像顏色變換(1)圖像通道拆分與合并常見(jiàn)的彩色圖像有R、G、B三個(gè)通道,OpenCV中提供函數(shù)cv2.split()將彩色圖像拆分為R、G、B三個(gè)通道,相應(yīng)地,提供cv2.merge()函數(shù),實(shí)現(xiàn)三通道的合并。#圖像通道拆分importnumpyasnpimportcv2ascvfrommatplotlibimportpyplotaspltimg=cv.imread("D:/opencv/flower.jpg")b,g,r=cv.split(img)dWindow("Image")cv.imshow('ChannelB',b)cv.imshow('ChannelG',g)cv.imshow('ChannelR',r)cv.waitKey(0)cv.destroyAllWindows()R通道圖像G通道圖像

B通道圖像計(jì)算機(jī)視覺(jué)

(2)圖像的反轉(zhuǎn)圖像反轉(zhuǎn)特別適用于增強(qiáng)嵌入圖像暗色區(qū)域中的白色或灰色細(xì)節(jié),灰度值范圍在[0,L-1]的圖像,其反轉(zhuǎn)圖像可由公式s=L-1-r獲得,其中,r為原圖像像素灰度值,s為反轉(zhuǎn)后的像素灰度值。計(jì)算機(jī)視覺(jué)

第3章圖像預(yù)處理3目錄計(jì)算機(jī)視覺(jué)

3.13.23.3空域?yàn)V波頻域?yàn)V波直方圖修正計(jì)算機(jī)視覺(jué)

圖像預(yù)處理方法:直方圖修正,空域?yàn)V波和頻域?yàn)V波圖像預(yù)處理的主要目的:是消除圖像中的無(wú)關(guān)信息,恢復(fù)有用的、真實(shí)的信息,可以提高特征抽取、圖像分割、匹配和識(shí)別的可靠性。計(jì)算機(jī)視覺(jué)

3.1直方圖直方圖是一個(gè)二維坐標(biāo)系,橫軸表示整幅圖像上灰度值的變化范圍,縱軸表示每個(gè)灰度值的統(tǒng)計(jì)個(gè)數(shù)。直方圖能夠反映灰度圖像的灰度分布特征。原始圖像直方圖計(jì)算機(jī)視覺(jué)

灰度直方圖定義:nk:灰度值等于rk的像素?cái)?shù)量(計(jì)數(shù)值)rh(r)計(jì)算機(jī)視覺(jué)

直方圖的性質(zhì)直方圖描述了每個(gè)灰度級(jí)具有的像素的個(gè)數(shù),但它不能為這些像素在圖像中的空間位置提供任何線(xiàn)索。因此,任何一幅特定的圖像具有唯一的直方圖,但反之并不成立。極不相同的圖像可以有相同的直方圖。例如,在圖像中移動(dòng)物體一般對(duì)直方圖沒(méi)有影響。直方圖的性質(zhì)總結(jié)如下。不同圖像具有相同直方圖計(jì)算機(jī)視覺(jué)

3.1.1直方均衡化許多圖像的灰度值是非均勻分布的,其中灰度值集中在一個(gè)小區(qū)間內(nèi)的圖像是很常見(jiàn)的.直方圖均衡化是一種通過(guò)重新均勻地分布各灰度值來(lái)增強(qiáng)圖像對(duì)比度的方法.一般來(lái)說(shuō),直方圖修正能提高圖像的主觀(guān)質(zhì)量,因此在處理藝術(shù)圖像時(shí)非常有用.計(jì)算機(jī)視覺(jué)

3.1.2均衡化實(shí)現(xiàn)流程:

計(jì)算機(jī)視覺(jué)

例:一幅大小為64×64的灰度圖像有8個(gè)灰度級(jí)(L=8),所示為該圖像的灰度分布信息,對(duì)該圖像進(jìn)行直方圖均衡化處理原圖像灰度級(jí)k像素?cái)?shù)量nkk=0790k=11023k=2850k=3656k=4329k=5245k=6122k=781圖像灰度級(jí)k歸一化灰度級(jí)rk像素?cái)?shù)量nkk=0r0=0

7900.190.19k=1r1=1/710230.250.44k=2r2=2/78500.210.65k=3r3=3/76560.160.81k=4r4=4/73290.080.89k=5r5=5/72450.060.95k=6r6=6/71220.030.98k=7r7=1810.021表3-1表3-2計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)

直方圖均衡化的優(yōu)缺點(diǎn):

直方圖均衡化方法對(duì)于背景和前景都太亮或者太暗的圖像非常有用,尤其是可以改善X光圖像中由于曝光過(guò)度或曝光不足而導(dǎo)致的骨骼結(jié)構(gòu)顯示不清晰的情況,該方法的主要優(yōu)勢(shì)就是它是一個(gè)相當(dāng)直觀(guān)的技術(shù)且是可逆操作。

該方法的缺點(diǎn)是,對(duì)處理的數(shù)據(jù)不加選擇,這樣可能會(huì)增加背景無(wú)用信息的對(duì)比度,并且降低有用信息的對(duì)比度;變換后圖像的灰度級(jí)減少,導(dǎo)致某些細(xì)節(jié)消失。計(jì)算機(jī)視覺(jué)

3.1.3直方規(guī)定化

直方圖均衡化實(shí)現(xiàn)了圖像灰度的均衡分布,對(duì)提高整幅圖像的對(duì)比度有明顯作用。但是,在實(shí)際應(yīng)用中,有時(shí)候需要對(duì)某些特定的灰度區(qū)間進(jìn)行增強(qiáng)。這時(shí),可以使用直方圖規(guī)定化的方法,按需要靈活地對(duì)直方圖的分布進(jìn)行調(diào)整。

直方圖規(guī)定化,也叫做直方圖匹配,用于將圖像變換為某一特定的灰度分布。因此,規(guī)定化操作可以有目的的增強(qiáng)某個(gè)灰度區(qū)間。在執(zhí)行規(guī)定化操作時(shí),首先要知道變換后的灰度直方圖,這樣才能確定變換函數(shù)。計(jì)算機(jī)視覺(jué)

(1)計(jì)算原圖像和規(guī)定化圖像中各灰度級(jí)概率分布和;(2)計(jì)算原直方圖和規(guī)定化直方圖的累積率分布sk和vk;(3)對(duì)于原圖像中的灰度級(jí)i,計(jì)算|si-vj|,使得|si-vj|最小時(shí)j的取值,即為i在規(guī)定化直方圖中對(duì)應(yīng)的灰度級(jí),由此確定映射關(guān)系為i→j;直方圖規(guī)定化的實(shí)現(xiàn)步驟:計(jì)算機(jī)視覺(jué)

(b)規(guī)定化直方圖(a)原始圖像直方圖序號(hào)步驟灰度分布1圖像灰度級(jí)k012345672原圖像各灰度級(jí)像素nk7901023850656329245122813原直方圖p(nk)0.190.250.210.160.080.060.030.024原直方圖累積概率sk0.190.440.650.810.890.950.9815規(guī)定化直方圖p(zk)0000.150.20.30.20.156規(guī)定化直方圖累積概率vk0000.150.350.650.851序號(hào)步驟灰度分布1原圖像灰度級(jí)k012345672原直方圖累積概率sk0.190.440.650.810.890.950.9813規(guī)定化直方圖累積vk0000.150.350.650.8514345667775確定映射關(guān)系6變換后的直方圖0000.190.250.210.240.11原始圖像灰度分布信息和規(guī)定化信息確定規(guī)定化的映射關(guān)系(c)規(guī)定化變換后的直方圖計(jì)算機(jī)視覺(jué)

直方規(guī)定化的特點(diǎn):直方圖規(guī)定化就是修改一幅圖像的直方圖,使得其概率分布逼近目標(biāo)直方圖的概率分布。當(dāng)需要具有特定直方圖的圖像時(shí),可按照預(yù)先設(shè)定的某個(gè)形狀人為的調(diào)整圖像的直方圖。使用直方圖規(guī)定化的方法,需先根據(jù)經(jīng)驗(yàn)知識(shí),計(jì)算最合適的規(guī)定直方圖,與原始圖像一起作為輸入,輸出為規(guī)定化之后的圖像,從而達(dá)到特定的圖像增強(qiáng)效果。直方圖均衡化與直方圖規(guī)定化對(duì)比直方圖均衡化:自動(dòng)增強(qiáng);效果不易控制;得到的是全局增強(qiáng)的結(jié)果。直方圖規(guī)定化:有選擇地增強(qiáng);須給定需要的直方圖;可得到局部增強(qiáng)的結(jié)果。計(jì)算機(jī)視覺(jué)

3.2空間域?yàn)V波圖像濾波,即在盡量保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,是圖像預(yù)處理中不可缺少的操作;如低通濾波器會(huì)濾除信號(hào)中的高頻成分,從而達(dá)到去噪的效果。濾波方法:空間域法和頻率域法.空間域方法主要是在空間域內(nèi)對(duì)圖像像素直接運(yùn)算處理。頻率域方法就是在圖像的某種變換域,對(duì)圖像的變換值進(jìn)行運(yùn)算,如先對(duì)圖像進(jìn)行付立葉變換,再對(duì)圖像的頻譜進(jìn)行某種計(jì)算(如濾波等),最后將計(jì)算后的圖像逆變換到空間域。計(jì)算機(jī)視覺(jué)

其中,M是鄰域N內(nèi)的像素點(diǎn)總數(shù)。在像素點(diǎn)[i,j]處取3X3鄰域,得:(1)均值濾波器每一個(gè)像素值用其局部鄰域內(nèi)所有值的均值置換3.2.1空間平滑域?yàn)V波計(jì)算機(jī)視覺(jué)

均值濾波器的實(shí)現(xiàn):進(jìn)行卷積模板的等權(quán)值卷積運(yùn)算實(shí)現(xiàn)。計(jì)算機(jī)視覺(jué)

903X3窗口7X7窗口鄰域N的大小控制著濾波程度,對(duì)應(yīng)大卷積模板的大尺度鄰域會(huì)加大濾波程度.作為去除大噪聲的代價(jià),大尺度濾波器也會(huì)導(dǎo)致圖像細(xì)節(jié)的損失.計(jì)算機(jī)視覺(jué)

(2)高斯平滑濾波高斯濾波器是一類(lèi)根據(jù)高斯函數(shù)的形狀來(lái)選擇權(quán)值的線(xiàn)性平滑濾波器.高斯平滑濾波器對(duì)去除服從正態(tài)分布的噪聲是很有效的.

一維零均值高斯函數(shù)為:

其中,高斯分布參數(shù)σ決定了高斯濾波器的寬度.計(jì)算機(jī)視覺(jué)

高斯濾波器可認(rèn)為是一種線(xiàn)性加權(quán)的均值濾波器。高斯濾波模板處于掩膜中心位置的像素權(quán)值較大,距離掩膜中心較遠(yuǎn)的像素權(quán)值較小,這是為了減小平滑處理中的模糊現(xiàn)象。需要注意的是,該掩膜所有系數(shù)的和為16,那么掩膜中心位置的濾波響應(yīng)可表示為:計(jì)算機(jī)視覺(jué)

#對(duì)高斯噪聲圖像進(jìn)行高斯平滑濾波,模板大小為3*3,σ=3img_Gaussian_blur=cv.GaussianBlur(img_Gaussian_noise,(3,3),sigmaX=3)#openCv高斯模糊函數(shù)show(np.hstack([img_Gaussian_noise,img_Gaussian_blur]))原圖、添加了高斯噪聲的圖像、3×3高斯模板處理后的圖像、7×7高斯模板處理后的圖像計(jì)算機(jī)視覺(jué)

均值濾波和高斯濾波運(yùn)算的主要問(wèn)題:有可能模糊圖像中的尖銳不連續(xù)部分.按亮度值大小排列像素點(diǎn)選排序像素的中間值作為點(diǎn)的新值。中值濾波器:中值濾波器的基本思想是用像素點(diǎn)鄰域灰度值的中值來(lái)代替該像素點(diǎn)的灰度值,該方法在去除脈沖噪聲、椒鹽噪聲的同時(shí)又能保留圖像邊緣細(xì)節(jié),這是因?yàn)樗灰蕾?lài)于鄰域內(nèi)那些與典型值差別很大的值。例如,取函數(shù)窗,計(jì)算以點(diǎn)為中心的函數(shù)窗像素中值步驟如下:(3)中值濾波器計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)

#對(duì)椒鹽噪聲圖像進(jìn)行中值濾波,模板大小為3×3img_median_blur=cv.medianBlur(img_salt_pepper_noise,3)#openCv中值模糊函數(shù)show(np.hstack([img_salt_pepper_noise,img_median_blur]))左圖為原圖,中間為添加椒鹽噪聲的圖像,右圖為3×3模板中值濾波后的圖像計(jì)算機(jī)視覺(jué)

3.2.2空域銳化濾波與平滑濾波器的作用相反,圖像銳化的目的是突出圖像中的細(xì)節(jié).抑制圖像中灰度平坦區(qū)域。如果說(shuō)平滑濾波是一種低通濾波器的話(huà),銳化濾波則屬于高通濾波器。(1)基于一階微分的圖像銳化近似一階微分圖像梯度算子Roberts算子Prewitt算子Sobel算子計(jì)算機(jī)視覺(jué)

Roberts算子計(jì)算機(jī)視覺(jué)

Prewitt算子檢測(cè)豎直邊緣檢測(cè)水平邊緣Prewitt算子,近似一階微分卷積模版:去噪+增強(qiáng)邊緣

Gx=(z7+z8+z9)-(z1+z2+z3)Gy=(z3+z6+z9)-(z1+z4+z7)梯度值:

|f||Gx|+|Gy|計(jì)算機(jī)視覺(jué)

Sobel算子Sobel算子,近似一階微分去噪+增強(qiáng)邊緣,給四鄰域更大的權(quán)重Sobel算子對(duì)于象素的位置的影響做了加權(quán),因此效果更好。Gx-220-110-110000-1-1-2112Gyz2z8z5z3z9z6z1z7z4Sobel算子為:

Gx=(z7+2z8+z9)-(z1+2z2+z3)Gy=(z3+2z6+z9)-(z1+2z4+z7)梯度值:|f||Gx|+|Gy|計(jì)算機(jī)視覺(jué)

Sobel例子#Sobel算子銳化importnumpyasnpimportmatplotlib.pyplotaspltimportcv2ascv#定義sobel算子defsobel(img):h,w=img.shapenew_img=np.zeros([h,w])x_img=np.zeros(img.shape)y_img=np.zeros(img.shape)sobel_y=np.array([[-1,-2,-1],[0,0,0],[1,2,1]])sobel_x=np.array([[-1,0,1],[-2,0,2],[-1,0,1]])foriinrange(h-2):forjinrange(w-2):x_img[i+1,j+1]=abs(np.sum(img[i:i+3,j:j+3]*sobel_x))y_img[i+1,j+1]=abs(np.sum(img[i:i+3,j:j+3]*sobel_y))new_img[i+1,j+1]=np.sqrt(np.square(x_img[i+1,j+1])+np.square(y_img[i+1,j+1]))returnnp.uint8(new_img)

img=cv.imread('lenna.png',0)img_sobel=sobel(img)show(np.hstack([img,img_sobel]))計(jì)算機(jī)視覺(jué)

在數(shù)字圖像上計(jì)算二階微分拉普拉斯算子0-10-14-10-10-1-1-1-18-1-1-1-1(2)基于二階微分的圖像銳化90度旋轉(zhuǎn)各向同性的濾波45度各向同性的濾波因?yàn)閿?shù)字圖像是離散形式,則有:拉普拉斯算子的數(shù)字近似3*3卷積模版計(jì)算機(jī)視覺(jué)

#Laplace算子銳化importnumpyasnpimportmatplotlib.pyplotaspltimportcv2ascv#定義Laplace算子defLaplace_op(img,n):#n表示采用n鄰域Laplace算子h,w=img.shapenew_image=np.zeros((h,w))ifn==4:filter=np.array([[0,1,0],[1,-4,1],[0,1,0]])elifn==8:filter=np.array([[1,1,1],[1,-8,1],[1,1,1]])foriinrange(h-2):forjinrange(w-2):new_image[i+1,j+1]=abs(np.sum(img[i:i+3,j:j+3]*filter))returnnp.uint8(new_image)

img=cv.imread('lenna.png',0)lap4_image=Laplace_op(img,4)lap8_image=Laplace_op(img,8)show(np.hstack([img,lap4_image,lap8_image]))計(jì)算機(jī)視覺(jué)

拉普拉斯算子的特點(diǎn)拉普拉斯算子的運(yùn)算結(jié)果是標(biāo)量只有幅值,只使用一個(gè)模版便可計(jì)算得到方向?qū)傩詠G失實(shí)際中幾乎不單獨(dú)使用拉普拉斯算子:二次求導(dǎo)數(shù),對(duì)噪聲非常敏感通常配合濾波器同時(shí)使用計(jì)算機(jī)視覺(jué)

LaplacianofGaussian(LoG)首先用Gauss函數(shù)對(duì)圖像進(jìn)行平滑,抑制噪聲然后對(duì)經(jīng)過(guò)平滑的圖像使用Laplacian算子利用卷積的性質(zhì)LoG算子等效于:

Gaussian平滑+Laplacian二階微分計(jì)算機(jī)視覺(jué)

二維邊緣微分濾波器LoG算子:高斯拉普拉斯高斯高斯的導(dǎo)數(shù)計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)

Canny邊緣檢測(cè)器J.Canny,“AComputationalApproachtoEdgeDetection”,IEEETrans.onPAMI,8(6),1986.CSDivision,UniversityofCalifornia,BerkeleyBID:TheBerkeleyInstituteofDesignJohnCannyCanny的目標(biāo)是找到一個(gè)最優(yōu)的邊緣檢測(cè)算法,最優(yōu)邊緣檢測(cè)的含義是:好的檢測(cè)(Gooddetection)

-算法能夠盡可能多地標(biāo)識(shí)出圖像中的實(shí)際邊緣。好的定位(Goodlocalization)-標(biāo)識(shí)出的邊緣要盡可能與實(shí)際圖像中的實(shí)際邊緣盡可能接近。低的錯(cuò)誤檢測(cè)率(Lowfalsepositives)

-圖像中的邊緣只能標(biāo)識(shí)一次,并且可能存在的圖像噪聲不應(yīng)標(biāo)識(shí)為邊緣。計(jì)算機(jī)視覺(jué)

Canny邊緣檢測(cè)算法算法基本過(guò)程:計(jì)算圖像梯度梯度非極大值抑制雙閾值提取邊緣點(diǎn)幅值大小M(x,y)方向Theta(x,y)NMS:Non-MaximaSuppression計(jì)算機(jī)視覺(jué)

Canny邊緣檢測(cè)算子主要包括以下幾個(gè)步驟:①高斯平滑濾波,采用高斯平滑濾波對(duì)原圖像進(jìn)行降噪處理。②計(jì)算梯度幅值和方向:③非極大值抑制,沿梯度方向,對(duì)梯度幅值進(jìn)行非極大值抑制。④雙閾值邊緣篩選,設(shè)置兩個(gè)閾值,分別為低閾值和高閾值。計(jì)算機(jī)視覺(jué)

計(jì)算圖像梯度:高斯函數(shù)的一階導(dǎo)數(shù)-11-11(2)使用一階有限差分計(jì)算偏導(dǎo)數(shù)的兩個(gè)陣列:(1)求圖像與高斯平滑濾波器卷積:11-1-1相當(dāng)于與模版進(jìn)行卷積運(yùn)算:代表對(duì)圖像的平滑程度計(jì)算機(jī)視覺(jué)

計(jì)算圖像梯度:高斯函數(shù)的一階導(dǎo)數(shù)(3)幅值和方位角:M代表梯度幅值的大小,在存在邊緣的圖像位置處,M的值變大,圖像的邊緣特征被“增強(qiáng)”計(jì)算機(jī)視覺(jué)

非極大值抑制NMS非極大值抑制(NMS:Non-MaximaSuppression)主要思想:由梯度幅值圖像M(x,y),僅保留極大值。(嚴(yán)格地說(shuō),保留梯度方向上的極大值點(diǎn)。)得到的結(jié)果為N(x,y),具體過(guò)程:初始化N(x,y)=M(x,y)對(duì)于每個(gè)點(diǎn),在梯度方向和反梯度方向各找n個(gè)像素點(diǎn)。若M(x,y)不是這些點(diǎn)中的最大點(diǎn),則將N(x,y)置零,否則保持N(x,y)不變。計(jì)算機(jī)視覺(jué)

非極大值抑制NMS

在梯度方向的沿線(xiàn)上檢測(cè)該點(diǎn)是否為局部極大值簡(jiǎn)化的情形,只使用4個(gè)方向:{0,45,90,135}

得到的結(jié)果N(x,y)包含邊緣的寬度為1個(gè)像素計(jì)算機(jī)視覺(jué)

對(duì)NMS結(jié)果進(jìn)行二值化對(duì)上述得到的N(x,y)使用閾值進(jìn)行二值化使用大的閾值,得到:少量的邊緣點(diǎn)許多空隙使用小的閾值,得到:大量的邊緣點(diǎn)大量的錯(cuò)誤檢測(cè)計(jì)算機(jī)視覺(jué)

使用雙閾值檢測(cè)邊緣兩個(gè)閾值T1,T2:T2>>T1由T1得到E1(x,y),低閾值邊緣圖:更大的誤檢測(cè)率由T2得到E2(x,y),高閾值邊緣圖:更加可靠邊緣連接:E1E1E1E1E2E2E2計(jì)算機(jī)視覺(jué)

邊緣連接將E2(x,y)中相連的邊緣點(diǎn)輸出為一幅邊緣圖像E(x,y)對(duì)于E(x,y)中每條邊,從端點(diǎn)出發(fā)在E1(x,y)中尋找其延長(zhǎng)的部分,直至與E(x,y)中另外一條邊的端點(diǎn)相連,否則認(rèn)為E1(x,y)中沒(méi)有它延長(zhǎng)的部分將E(x,y)作為結(jié)果輸出E1E1E1E1E2E2E2計(jì)算機(jī)視覺(jué)

Canny算子:流程原始圖像原始圖像經(jīng)過(guò)Gauss平滑計(jì)算機(jī)視覺(jué)

Canny算子:流程梯度幅值圖像梯度幅值經(jīng)過(guò)非極大值抑制計(jì)算機(jī)視覺(jué)

Canny算子:流程低閾值邊緣圖像高閾值邊緣圖像Canny輸出邊緣圖像計(jì)算機(jī)視覺(jué)

使用Canny算子需要注意的問(wèn)題Canny算子的優(yōu)點(diǎn):參數(shù)較少計(jì)算效率得到的邊緣連續(xù)完整參數(shù)的選擇:Gauss濾波的尺度雙閾值的選擇(LOW=HIGH*0.4)計(jì)算機(jī)視覺(jué)

漸增高斯濾波模版的尺寸計(jì)算機(jī)視覺(jué)

漸增雙閾值的大小,保持low=high*0.4計(jì)算機(jī)視覺(jué)

3.3頻域?yàn)V波3.3.1離散傅里葉變換一維連續(xù)函數(shù)f(x)的傅里葉變換可記為F(u),f(x)和F(u)被稱(chēng)為一個(gè)傅里葉變換對(duì),記為:離散離散傅里葉變換

u=0時(shí),u=1時(shí),傅里葉變換的每一項(xiàng)是由的所有值(x=0,1,2,...,M-1)的和組成的。DFT變換逆變換獲得原函數(shù)f(x):計(jì)算機(jī)視覺(jué)

二維DFT可表示為:逆DFT變換公式為:x和y為空間域變量,u和v為頻率域變量。計(jì)算機(jī)視覺(jué)

傅里葉變換具有平移性和對(duì)稱(chēng)性,這對(duì)于其在圖像處理中的應(yīng)用非常重要平移性:圖像f(x,y)在空域與指數(shù)函數(shù)相乘對(duì)應(yīng)于F(u,v)在頻域的移位當(dāng)時(shí)則有:計(jì)算機(jī)視覺(jué)

對(duì)稱(chēng)性該性質(zhì)可簡(jiǎn)化頻域?yàn)V波器的設(shè)計(jì)復(fù)雜度計(jì)算機(jī)視覺(jué)

3.3.2頻域?yàn)V波步驟(1)將原始圖像f(x,y)乘以(-1)x+y;(2)對(duì)進(jìn)行DFT,將圖像變換至頻率域,得到F(u,v);(3)構(gòu)建頻域?yàn)V波器H(u,v),并與F(u,v)相乘,完成濾波,得到G(u,v);(4)將G(u,v)進(jìn)行逆DFT變換,得到濾波后的圖像;(5)將濾波后圖像乘以(-1)x+y以消除在步驟(1)中對(duì)圖像的處理,得到最終圖像。計(jì)算機(jī)視覺(jué)

3.3.3頻域平滑濾波器傅里葉變換后,低頻成分對(duì)應(yīng)圖像中灰度變化平緩區(qū)域,高頻成分對(duì)應(yīng)圖像中灰度尖銳變換部分,如邊緣和噪聲。頻域平滑濾波器可通過(guò)抑制圖像傅里葉變換中的高頻部分、保留低頻部分來(lái)實(shí)現(xiàn),因此,平滑濾波器也稱(chēng)為低通濾波器。頻域?yàn)V波公式:F(u,v)為待濾波圖像的傅里葉變換,H(u,v)為要構(gòu)建的濾波器,G(u,v)表示濾波結(jié)果。計(jì)算機(jī)視覺(jué)

(1)理想低通濾波器D(u,v)為點(diǎn)(u,v)到濾波器中心的距離,D0是一個(gè)給定的非負(fù)數(shù),也稱(chēng)為截止頻率。(a)原圖及其頻譜圖(b)濾波器(D0=30)及其及濾波后圖像(c)濾波器(D0=50)及其及濾波后圖像計(jì)算機(jī)視覺(jué)

(2)巴特沃斯低通濾波器n階巴特沃斯低通濾波器可表示為:D(u,v)為點(diǎn)(u,v)到濾波器中心的距離,D0是截止頻率,n是巴特沃斯低通濾波器的階數(shù)。巴特沃斯低通濾波(n=2,D0=30)計(jì)算機(jī)視覺(jué)

(3)高斯低通濾波器高斯低通濾波器的二維表示形式為:D(u,v)為點(diǎn)(u,v)到濾波器中心的距離,D0是截止頻率。高斯低通濾波(D0=30)計(jì)算機(jī)視覺(jué)

3.3.4頻域銳化濾波器與平滑濾波器相對(duì),銳化濾波器保留圖像頻率域的高頻成分,也稱(chēng)為高通濾波器。(1)理想高通濾波器理想高通濾波器(IHPF)的定義如下:理想高通濾波(D0=30)計(jì)算機(jī)視覺(jué)

(2)巴特沃斯高通濾波器n階巴特沃斯高通濾波器可用表示為:巴特沃斯高通濾波(n=2,D0=30)第4章特征提取4目錄4.1HOG特征4.24.3SIFT特征哈希特征4.1HOG特征HOG即方向梯度直方圖(HistogramofOrientedGradient),HOG特征是一種在計(jì)算機(jī)視覺(jué)和圖像處理中用于物體檢測(cè)的特征描述子,即用圖像梯度信息來(lái)識(shí)別物體。它通過(guò)對(duì)圖像的每個(gè)單元進(jìn)行梯度方向直方圖計(jì)算來(lái)構(gòu)成特征向量。HOG特征結(jié)合SVM分類(lèi)器已被廣泛應(yīng)用于圖像識(shí)別中,思路就是用提取出的HOG特征訓(xùn)練分類(lèi)器。其優(yōu)點(diǎn)是對(duì)于目標(biāo)相同但大小、方向不同的圖像,可以利用相同的HOG特征模式來(lái)檢測(cè),而不管目標(biāo)的位置和呈現(xiàn)方式。HOG特征在行人檢測(cè)應(yīng)用中獲得了極大的成功,由于HOG是在圖像的局部方格單元上操作,所以它對(duì)圖像的幾何和光學(xué)形變都能保持很好的不變性,只要行人大體上能夠保持直立的姿勢(shì),可以容許行人有一些細(xì)微的肢體動(dòng)作,這些細(xì)微的動(dòng)作可以被忽略而不影響檢測(cè)效果。HOG特征提取步驟

步驟4:將圖像劃分成若干個(gè)單元cells,例如每個(gè)cell為8x8像素。步驟5:統(tǒng)計(jì)每個(gè)cell的梯度直方圖,即可形成每個(gè)cell的描述子。假設(shè)采用9個(gè)bin的直方圖來(lái)統(tǒng)計(jì)這8*8個(gè)像素的梯度信息,其中,9個(gè)bin的向量代表的是角度0,20,40,60.....160(不考慮方向的正負(fù))。也就是將cell的梯度方向0-360度分成9個(gè)方向塊需要注意的是,如果有一個(gè)角度在160-180度之間,這里不考慮方向的正負(fù),角度0和180度可用同一個(gè)bin表示,角度為165度,梯度值為85,要把梯度值按照比例放到0和160的bin里面去。把這8*8的cell里所有像素點(diǎn)的梯度值分別累加到9個(gè)bin里面去,就構(gòu)建了一個(gè)9-bin的直方圖步驟6:將幾個(gè)cell組成一個(gè)block(例如3x3個(gè)cell/block),一個(gè)block內(nèi)所有cell的特征描述子串聯(lián)起來(lái)便得到該block的HOG特征描述子。計(jì)算block的時(shí)候,是把整張圖像遍歷一遍的過(guò)程,窗口移動(dòng)步長(zhǎng)可以設(shè)定為1個(gè)cell。步驟7:將圖像內(nèi)所有block的HOG特征描述子串聯(lián)起來(lái)就可以得到該圖像的HOG特征描述子,這個(gè)就是最終可供分類(lèi)使用的特征向量。例子:64x128的圖像而言,每8x8個(gè)像素組成一個(gè)cell,每2x2個(gè)cell組成一個(gè)block,總共有多少個(gè)特征?因?yàn)槊總€(gè)cell有9個(gè)特征,所以每個(gè)塊內(nèi)有4x9=36個(gè)特征,以1個(gè)cell為步長(zhǎng),那么,水平方向?qū)⒂?個(gè)掃描窗口,垂直方向?qū)⒂?5個(gè)掃描窗口。也就是說(shuō),64x128的圖像,總共有36x7x15=3780個(gè)特征。4.2SIFT特征SIFT(ScaleInvariantFeatureTransform)即尺度不變特征變換,是一種基于尺度空間的、對(duì)圖像縮放、旋轉(zhuǎn)甚至仿射變換保持不變性的圖像局部特征描述算子。SIFT算子最早由D.G.Lowe于1999年提出,并于2004年完善。SIFT算法具有以下優(yōu)點(diǎn):(1)SIFT特征是圖像局部特征,基于物體上的一些局部外觀(guān)的興趣點(diǎn)而與圖像的大小和旋轉(zhuǎn)無(wú)關(guān),對(duì)于光線(xiàn)、噪聲、視角改變的容忍度相當(dāng)高。(2)獨(dú)特性,SIFT特征高度顯著而且相對(duì)容易提取,適用于在海量特征數(shù)據(jù)中進(jìn)行快速、準(zhǔn)確的匹配。使用SIFT特征描述對(duì)于部分物體遮擋的檢測(cè)率也相當(dāng)高。(3)多量性,即使是很少幾個(gè)物體也可以產(chǎn)生大量的SIFT特征。(4)高速性,經(jīng)優(yōu)化的SIFT匹配算法甚至可以達(dá)到實(shí)時(shí)性。(5)可擴(kuò)展性,可以很方便地與其他形式的特征向量進(jìn)行聯(lián)合。SIFT算法實(shí)現(xiàn)SIFT算法的實(shí)質(zhì)是在不同的尺度空間上查找關(guān)鍵點(diǎn)(特征點(diǎn)),并計(jì)算出關(guān)鍵點(diǎn)的方向。算法主要包括以下幾個(gè)步驟:步驟1:尺度空間的極值檢測(cè),搜索所有尺度空間上的圖像,通過(guò)高斯微分函數(shù)來(lái)識(shí)別潛在的對(duì)尺度不變的興趣點(diǎn)。步驟2:特征點(diǎn)定位,在每個(gè)候選位置上,通過(guò)擬合模型來(lái)確定位置尺度,關(guān)鍵點(diǎn)的選取依據(jù)它們的穩(wěn)定程度。步驟3:特征方向賦值,基于圖像局部梯度方向,分配給每個(gè)關(guān)鍵點(diǎn)位置一個(gè)或多個(gè)方向,后續(xù)的所有操作都是對(duì)于關(guān)鍵點(diǎn)的方向、尺度和位置進(jìn)行變換,從而提供這些特征的不變性。步驟4:特征點(diǎn)描述,在每個(gè)特征點(diǎn)的鄰域內(nèi),在選定的尺度上測(cè)量圖像的局部梯度,這些梯度被變換成一種表示,這種表示允許比較大的局部形狀的形變和光照變換。1DoG尺度空間構(gòu)造

(1)尺度左邊為sigma=1尺度下的圖像,中間為sigma=3尺度下的圖像,右邊為sigma=5的圖像,尺度越大,圖像越模糊圖像金字塔能夠很好的顯示圖像多尺度空間的特征,SIFT算法中的圖像金字塔共有o組,每組有S層,下一組的圖像由上一組圖像降采樣得到。為原圖的1/2.(2)圖像金字塔(3)高斯金字塔構(gòu)建為了能夠檢測(cè)到不同尺度下的特征點(diǎn),對(duì)于一幅圖像I,建立其高斯尺度金字塔。金字塔由若干組(Octave)構(gòu)成,每組都是“復(fù)合”結(jié)構(gòu),又由若干層(Interval)不同尺度的圖像組成。

前面已經(jīng)有了高斯金字塔和DoG算子,根據(jù)下圖可以進(jìn)一步計(jì)算高斯差分金字塔。在高斯尺度金字塔中,每組包含6層圖像,經(jīng)過(guò)高斯差分之后每組為5層圖像。(3)高斯差分金字塔圖像差分運(yùn)算就是對(duì)兩個(gè)圖像做一個(gè)相減的運(yùn)算,尋找兩幅圖像不一樣的地方。一種非常簡(jiǎn)單的圖像特征提取方法,就是用原始圖像減去經(jīng)過(guò)高斯模糊后的圖像,能夠得到特征信息。從信號(hào)理論的角度來(lái)講,模糊后的圖像保留的是低頻信息,原始圖像減去低頻信息留下高頻信息。

中間的檢測(cè)點(diǎn)和它同尺度的8個(gè)相鄰點(diǎn)和上下相鄰尺度對(duì)應(yīng)的9×2個(gè)點(diǎn)共26個(gè)點(diǎn)比較,以確保在尺度空間和二維圖像空間都檢測(cè)到極值點(diǎn)。

一個(gè)點(diǎn)如果在DoG尺度空間本層以及上下兩層的26個(gè)鄰域中是最大值或最小值,就認(rèn)為該點(diǎn)是圖像在該尺度下的一個(gè)特征點(diǎn)。(1)粗略尋找2關(guān)鍵點(diǎn)搜索與定位由于DoG值對(duì)噪聲和邊緣較敏感,因此,在上面DoG尺度空間中檢測(cè)到的局部極值點(diǎn)還需要進(jìn)一步檢驗(yàn)才能精確定位為特征點(diǎn)。(2)細(xì)化尋找第一步:尋找極值并去除較小的極值對(duì)關(guān)鍵點(diǎn)進(jìn)行3D二次函數(shù)擬合,然后求擬合函數(shù)的極值點(diǎn),作為真正的極值點(diǎn)。

(3)消除邊緣噪聲

(3)消除邊緣噪聲3方向賦值

前面已經(jīng)獲取了特征關(guān)鍵點(diǎn)的位置、尺度和方向參數(shù),這些特征點(diǎn)已經(jīng)對(duì)上述參數(shù)的變化保持了不變性。下一步,就是要生成一種能夠描述這些特征的描述子。

4關(guān)鍵點(diǎn)描述子生成(2)旋轉(zhuǎn)主方向?qū)⒆鴺?biāo)軸旋轉(zhuǎn)為關(guān)鍵點(diǎn)的方向,以確保旋轉(zhuǎn)不變性那么旋轉(zhuǎn)角度后的新坐標(biāo)為:

(3)生成描述子

16*16鄰域的sift特征點(diǎn)

5SIFT特征匹配兩幅圖中,給出了SIFT特征匹配的實(shí)例,可以看出,兩幅圖中,貓耳的方向是不同的,采用SIFT特征可成功匹配。由此可見(jiàn),SIFT具有旋轉(zhuǎn)不變性。Hash算法是在工程領(lǐng)域中度量?jī)蓮垐D像相似度最常用的算法之一。Hash算法通過(guò)獲取圖像的Hash值,比較兩張圖像Hash值的漢明(HammingDistance)距離來(lái)度量圖像是否相似。兩張圖像越相似,其Hash值的漢明距離越小。Hash算法可分為三種,分別是平均哈希算法(aHash)、感知哈希算法(pHash)和差異哈希算法(dHash)。下面將對(duì)這三種算法進(jìn)行詳細(xì)介紹。4.3哈希特征1平均哈希算法(aHash)4.3.1平均哈希算法(aHash)

實(shí)例:圖像aHash值的計(jì)算過(guò)程17110413112612616013999147105119153208153147571519910716217519440159144101124531764355159136112127791375615617515041213771087314520710647116691521341329792581298913620448771011111010011110100111011010100110101011101000110000111000101100計(jì)算灰度圖所有像素的均值a=121.33,將上述矩陣中大于或等于a的元素置為1,小于a的元素置為0,可得右圖。將右圖所示矩陣向量化,可得Lena圖的aHash為:1011111010011110100111011010100110101011101000110000111000101100。(5)計(jì)算漢明距離:得到aHash值后,就可以比較兩張圖像的aHash值之間的漢明距離,通常認(rèn)為漢明距離小于10的一組圖像為相似圖像。Lena原圖的aHash值:1011111010011110100111011010100110101011101000110000111000101100

Lena噪聲圖的aHash值:1011111000011110100111011010100110101011101000110000111000101100

Barbara圖的aHash值:1010010100101001011110010111111010100110001100000110010100000110

Lena原圖和噪聲圖aHash值之間的漢明距離:1

Lena原圖和Barbara圖aHash值之間的漢明距離:35(a)Lena原圖(b)加入噪聲的Lena圖(c)Barbara圖感知哈希算法是基于DCT(離散余弦變換)來(lái)得到圖片的hash值,其算法步驟為:(1)縮放圖像:將圖像大小統(tǒng)一縮放為32x32共1024個(gè)像素點(diǎn)。(2)圖像灰度化:將縮放后的標(biāo)準(zhǔn)圖像轉(zhuǎn)為灰度圖像。(3)DCT變換:對(duì)灰度圖像做離散余弦變換,得到對(duì)應(yīng)的32×32數(shù)據(jù)矩陣。(4)縮小DCT:取上一步32×32數(shù)據(jù)矩陣左上角的8×8子區(qū)域G來(lái)替代整幅圖像,這部分呈現(xiàn)了圖片中的最低頻率。(5)計(jì)算像素均值:對(duì)8×8矩陣G,計(jì)算其所有元素的平均值,假設(shè)其值為a。(6)計(jì)算pHash值:遍歷G中的每個(gè)像素,如果第i行j列元素G(i,j)≥a,則置G(i,j)為1,否則,置G(i,j)為0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論