![機(jī)器視覺原理與應(yīng)用 課件全套 喬景慧 第1-13章 機(jī)器視覺理論簡介-隨機(jī)配置網(wǎng)絡(luò)_第1頁](http://file4.renrendoc.com/view2/M00/2F/0B/wKhkFmYNXC-AQAoNAAB7KsIyJzE886.jpg)
![機(jī)器視覺原理與應(yīng)用 課件全套 喬景慧 第1-13章 機(jī)器視覺理論簡介-隨機(jī)配置網(wǎng)絡(luò)_第2頁](http://file4.renrendoc.com/view2/M00/2F/0B/wKhkFmYNXC-AQAoNAAB7KsIyJzE8862.jpg)
![機(jī)器視覺原理與應(yīng)用 課件全套 喬景慧 第1-13章 機(jī)器視覺理論簡介-隨機(jī)配置網(wǎng)絡(luò)_第3頁](http://file4.renrendoc.com/view2/M00/2F/0B/wKhkFmYNXC-AQAoNAAB7KsIyJzE8863.jpg)
![機(jī)器視覺原理與應(yīng)用 課件全套 喬景慧 第1-13章 機(jī)器視覺理論簡介-隨機(jī)配置網(wǎng)絡(luò)_第4頁](http://file4.renrendoc.com/view2/M00/2F/0B/wKhkFmYNXC-AQAoNAAB7KsIyJzE8864.jpg)
![機(jī)器視覺原理與應(yīng)用 課件全套 喬景慧 第1-13章 機(jī)器視覺理論簡介-隨機(jī)配置網(wǎng)絡(luò)_第5頁](http://file4.renrendoc.com/view2/M00/2F/0B/wKhkFmYNXC-AQAoNAAB7KsIyJzE8865.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
機(jī)器視覺原理與應(yīng)用第1章機(jī)器視覺理論簡介1.1機(jī)器視覺簡介1.2機(jī)器視覺的發(fā)展1.3Marr視覺計(jì)算理論1.3.1機(jī)器視覺的三個(gè)層次1.3.2視覺表示框架1.4深度學(xué)習(xí)1.5機(jī)器視覺的研究內(nèi)容及面臨的問題1.5.1機(jī)器視覺的研究內(nèi)容1.5.2機(jī)器視覺研究面臨的問題1.6機(jī)器視覺的應(yīng)用1.1
機(jī)器視覺簡介機(jī)器視覺(MachineVision)機(jī)器視覺是一個(gè)系統(tǒng)的概念,集成了光學(xué)、機(jī)械、電子、計(jì)算機(jī)軟硬件等方面的技術(shù),涉及計(jì)算機(jī)、圖像處理、模式識(shí)別、機(jī)械工程、電光源照明、人工智能、信號(hào)處理、光機(jī)電一體化、光學(xué)成像、傳感器、模擬與數(shù)字視頻技術(shù)、計(jì)算機(jī)軟硬件技術(shù)(圖像增強(qiáng)和分析算法、圖像卡、
I/O卡等)等多個(gè)領(lǐng)域。一個(gè)典型的機(jī)器視覺應(yīng)用系統(tǒng)包括圖像捕捉、光源系統(tǒng)、圖像數(shù)字化模塊、數(shù)字圖像處理模塊、智能判斷決策模塊和機(jī)械控制執(zhí)行模塊。1.1
機(jī)器視覺簡介國際制造工程師學(xué)會(huì)(SME)機(jī)器視覺分會(huì)和美國機(jī)器人工業(yè)協(xié)會(huì)(RIA)自動(dòng)化視覺分會(huì)關(guān)于機(jī)器視覺的定義為:機(jī)器視覺是使用光學(xué)器件進(jìn)行非接觸感知,自動(dòng)獲取和解釋一個(gè)真實(shí)場景的圖像,以獲取信息和用于控制機(jī)器運(yùn)動(dòng)的裝置。通俗地講,機(jī)器視覺就是為機(jī)器安裝上一雙“智慧的眼睛”,讓機(jī)器具有像人一樣的視覺功能,從而實(shí)現(xiàn)引導(dǎo)、檢測、測量、識(shí)別等功能。1.1
機(jī)器視覺簡介機(jī)器視覺與計(jì)算機(jī)視覺既有區(qū)別又有聯(lián)系。機(jī)器視覺側(cè)重于機(jī)器,也就是機(jī)器應(yīng)用。而計(jì)算機(jī)視覺側(cè)重于計(jì)算機(jī),也就是計(jì)算機(jī)圖像處理。從學(xué)科上說,計(jì)算機(jī)視覺是計(jì)算機(jī)科學(xué)發(fā)展出來的一個(gè)分支,機(jī)器視覺則是系統(tǒng)工程領(lǐng)域內(nèi)多學(xué)科知識(shí)的交叉應(yīng)用。機(jī)器視覺屬于應(yīng)用領(lǐng)域,更多的是利用現(xiàn)有的各學(xué)科理論來實(shí)現(xiàn)機(jī)器替代,最終結(jié)果是完成現(xiàn)實(shí)生產(chǎn)目標(biāo)。計(jì)算機(jī)視覺則側(cè)重于理論研究,其研究在實(shí)踐中存在著不確定性。機(jī)器視覺系統(tǒng)是可以自動(dòng)獲取一幅或多幅目標(biāo)物體圖像,對(duì)所獲取圖像的各種特征量進(jìn)行處理、分析和測量,根據(jù)最終結(jié)果做出定性分析和定量解釋,從而得到有關(guān)目標(biāo)物體的某種認(rèn)識(shí)并作出相應(yīng)決策,執(zhí)行可直接創(chuàng)造經(jīng)濟(jì)價(jià)值或社會(huì)價(jià)值的功能活動(dòng)。1.1
機(jī)器視覺簡介機(jī)器視覺對(duì)于計(jì)算機(jī)的圖像處理功能存在極強(qiáng)的依賴性。計(jì)算機(jī)視覺為機(jī)器視覺提供了圖像處理分析的理論和算法,而機(jī)器視覺則實(shí)現(xiàn)了計(jì)算機(jī)視覺研究成果向?qū)嶋H應(yīng)用的轉(zhuǎn)化。機(jī)器視覺和計(jì)算機(jī)視覺的區(qū)別機(jī)器視覺機(jī)器視覺側(cè)重于機(jī)器,也就是機(jī)器應(yīng)用從學(xué)科上說,機(jī)器視覺則是系統(tǒng)工程領(lǐng)域內(nèi)多學(xué)科知識(shí)的交叉應(yīng)用機(jī)器視覺屬于應(yīng)用領(lǐng)域,更多的是利用現(xiàn)有的各學(xué)科理論來實(shí)現(xiàn)機(jī)器替代,最終結(jié)果是完成現(xiàn)實(shí)生產(chǎn)目標(biāo)。計(jì)算機(jī)視覺計(jì)算機(jī)視覺側(cè)重于計(jì)算機(jī),也就是計(jì)算機(jī)圖像處理從學(xué)科上說,計(jì)算機(jī)視覺是計(jì)算機(jī)科學(xué)發(fā)展出來的一個(gè)分支計(jì)算機(jī)視覺則側(cè)重于理論研究,其研究在實(shí)踐中存在著不確定性。71.2機(jī)器視覺的發(fā)展機(jī)器視覺的發(fā)展經(jīng)過初期的數(shù)字圖像處理,20世紀(jì)80年代的卡爾曼濾波及正則化時(shí)代,20世紀(jì)90年代的圖像分割,21世紀(jì)的計(jì)算攝像學(xué)與機(jī)器視覺中的深度學(xué)習(xí)等。20世紀(jì)70年代:初期的數(shù)字圖像處理階段機(jī)器視覺始于20世紀(jì)70年代早期,它被視為模擬人類智能并賦予機(jī)器人智能行為的感知組成部分。人工智能和機(jī)器人的早期研究者(麻省理工大學(xué)、斯坦福大學(xué)、卡內(nèi)基梅隆大學(xué)的研究者)認(rèn)為,在解決高層次推理和規(guī)劃等更困難問題的過程中,針對(duì)“視覺輸入”問題應(yīng)該是一個(gè)簡單的步驟。比如,1966年麻省理工大學(xué)的MarvinMinsky讓他的本科生GeraldJaySussman在暑期將相機(jī)連接到計(jì)算機(jī)上,讓計(jì)算機(jī)描述它所看到的事物。現(xiàn)在我們覺得很簡單,但是在當(dāng)時(shí)是不容易解決的。1.2機(jī)器視覺的發(fā)展20世紀(jì)70年代,人們對(duì)物體的三位建模進(jìn)行了研究。Barrow、Tenenbaum與Marr提出了一種理解亮度和陰影變化的方法,并通過表面朝向和陰影等恢復(fù)三維結(jié)構(gòu)。同時(shí)出現(xiàn)了基于特征的立體視覺對(duì)應(yīng)(stereocorrespondence)算法和基于亮度的光流(opticalflow)算法。在這個(gè)時(shí)期,DavidMarr介紹了視覺信息處理表達(dá)的三個(gè)層次。20世紀(jì)80年代:卡爾曼濾波及正則化時(shí)代20世紀(jì)80年代,計(jì)算機(jī)視覺獲得蓬勃發(fā)展,新概念、新方法和新理論不斷涌現(xiàn),如基于感知特征群的物體識(shí)別理論框架、主動(dòng)識(shí)別理論框架、視覺集成理論框架等。圖像金字塔和尺度空間用于對(duì)應(yīng)點(diǎn)搜索。三維視覺重建中出現(xiàn)“由X到形狀”的方法,包括由陰影到形狀、由光度立體視覺到形狀、由紋理到形狀及由聚焦到形狀。1.2機(jī)器視覺的發(fā)展20世紀(jì)90年代:圖像分割計(jì)算機(jī)視覺技術(shù)進(jìn)入深入發(fā)展、廣泛應(yīng)用時(shí)期。在這段時(shí)期,光流方法得到了不斷改進(jìn),產(chǎn)生了完整三維表面的多視圖立體視覺算法,同時(shí)跟蹤算法也得到了很多改進(jìn),包括使用“活動(dòng)輪廓”方法的輪廓跟蹤(如蛇形、粒子濾波和水平集方法)和基于亮度的跟蹤方法。21世紀(jì):計(jì)算攝像學(xué)與機(jī)器視覺中的深度學(xué)習(xí)計(jì)算機(jī)視覺與計(jì)算機(jī)圖形學(xué)之間的交叉越來越明顯,特別是在基于圖像的建模和繪制交叉領(lǐng)域。計(jì)算攝像學(xué)得到深入發(fā)展,其中光場獲取和繪制以及通過多曝光實(shí)現(xiàn)的高動(dòng)態(tài)范圍成像得到了發(fā)展。1.3Marr視覺計(jì)算理論Marr視覺計(jì)算理論立足于計(jì)算機(jī)科學(xué),系統(tǒng)地概括了心理生理學(xué)、神經(jīng)生理學(xué)等方面業(yè)已取得的所有重要成果,是視覺研究中迄今為止最為完善的視覺理論。Marr建立的視覺計(jì)算理論,使計(jì)算機(jī)視覺研究有了一個(gè)比較明確的體系,并大大推動(dòng)了計(jì)算機(jī)視覺研究的發(fā)展。人們普遍認(rèn)為,計(jì)算機(jī)視覺這門學(xué)科的形成與Marr的視覺理論有著密切的關(guān)系。事實(shí)上,盡管20世紀(jì)70年代初期就有人使用計(jì)算機(jī)視覺這個(gè)名詞,但正是Marr于70年代末建立的視覺理論促使計(jì)算機(jī)視覺這一名詞的流行。下面簡要地介紹Marr視覺理論的基本思想及其理論框架。1.3.1機(jī)器視覺的三個(gè)層次計(jì)算理論表示和算法硬件實(shí)現(xiàn)計(jì)算的目的是什么?為什么這一計(jì)算是合適的?執(zhí)行計(jì)算的策略是什么?如何實(shí)現(xiàn)這個(gè)理論計(jì)算?輸入、輸出的表示是什么?表示與表示之間的變換是什么?在物理上如何實(shí)現(xiàn)這些表示和算法?
Marr認(rèn)為,視覺是一個(gè)信息處理系統(tǒng)。因此,系統(tǒng)研究分為三個(gè)層次:計(jì)算理論層次,表示(epresenain)與算法層次,硬件實(shí)現(xiàn)層次,如表1-1所示。:表1-1Marr視覺理論的三個(gè)層次1.3.1機(jī)器視覺的三個(gè)層次按照Marr的理論,計(jì)算視覺理論要回答視覺系統(tǒng)的計(jì)算目的和策略是什么,或視覺系統(tǒng)的輸入和輸出是什么,如何由系統(tǒng)的輸入求出系統(tǒng)的輸出:在這個(gè)層次上,信息系統(tǒng)的特征,是將一種信息(輸入)映射為另一種信息(輸出)。比如,系統(tǒng)輸入是二維灰度圖象,輸出則是三維物體的形狀、位置和姿態(tài),視覺系統(tǒng)的任務(wù)就是研究如何建立輸入輸出之間的關(guān)系和約束,如何由二維灰度圖象恢復(fù)物體的三維信息。表示與算法層次:進(jìn)一步回答如何表示輸入和輸出信息,如何實(shí)現(xiàn)計(jì)算理論所對(duì)應(yīng)的功能的算法,以及如何由一種表示變換成另一種表示,比如創(chuàng)建數(shù)據(jù)結(jié)構(gòu)和符號(hào)。一般來說,不同的輸入、輸出和計(jì)算理論對(duì)應(yīng)不同的表示,而同一種輸入、輸出或計(jì)算理論可能對(duì)應(yīng)若干種表示。1.3.1機(jī)器視覺的三個(gè)層次硬件實(shí)現(xiàn)層次:在解決了理論問題和表示問題后,最后一個(gè)層次是解決用硬件實(shí)現(xiàn)上述表示和算法的問題。比如計(jì)算機(jī)體系結(jié)構(gòu)及具體的計(jì)算裝置及其細(xì)節(jié)。從信息處理的觀點(diǎn)來看,至關(guān)重要的乃是最高層次,即計(jì)算理論層次。這是因?yàn)闃?gòu)成知覺的計(jì)算本質(zhì),取決于解決計(jì)算問題本身。而不取決于用來解決計(jì)算問題的特殊硬件。換句話說,通過正確理解待解決問題的本質(zhì),將有助于理解并創(chuàng)造算法。如果考慮解決問題的機(jī)制和物理實(shí)現(xiàn),則對(duì)理解算法往往無濟(jì)于事。1.3.1機(jī)器視覺的三個(gè)層次上述三個(gè)層次之間存在著邏輯的因果關(guān)系,但它們之間的聯(lián)系不是十分緊密。因此,某些現(xiàn)象只能在其中一個(gè)或兩個(gè)層次上進(jìn)行解釋。比如神經(jīng)解剖學(xué)原則上與第三層次(即物理實(shí)現(xiàn))聯(lián)系在一起。突觸機(jī)制、動(dòng)作電位抑制性相互作用都在第三個(gè)層次上。心理物理學(xué)與第二層次(即表示與算法)有著更直接的聯(lián)系。更一般地說,不同的現(xiàn)象必須在不同的層次上進(jìn)行解釋,這會(huì)有助于人們把握正確的研究方向。例如,人們常說,人腦完全不同于計(jì)算機(jī),因?yàn)榍罢呤遣⑿屑庸さ?,后者是串行的。?duì)于這個(gè)問題,應(yīng)該這樣回答:并行加工和串行加工是在算法這個(gè)層次上的區(qū)別,而不是根本性的區(qū)別,因?yàn)槿魏我粋€(gè)并行的計(jì)算程序都可以寫成串行的程序。因此,這種并行與串行的區(qū)別并不支持這種觀點(diǎn),即人腦的運(yùn)行與計(jì)算機(jī)的運(yùn)算是不同的,因而人腦所完成的任務(wù)是不可能通過編制程序用計(jì)算機(jī)來完成。1.3.1機(jī)器視覺的三個(gè)層次16計(jì)算視覺理論層次:回答視覺系統(tǒng)的計(jì)算目的和策略是什么,或視覺系統(tǒng)的輸入和輸出是什么,如何由系統(tǒng)的輸入求出系統(tǒng)的輸出表示與算法層次:進(jìn)一步回答如何表示輸入和輸出信息,如何實(shí)現(xiàn)計(jì)算理論所對(duì)應(yīng)的功能的算法,以及如何由一種表示變換成另一種表示硬件實(shí)現(xiàn)層次:在解決了理論問題和表示問題后,最后一個(gè)層次是解決用硬件實(shí)現(xiàn)上述表示和算法的問題三個(gè)層次之間存在著邏輯的因果關(guān)系,但它們之間的聯(lián)系不是十分緊密。因此,某些現(xiàn)象只能在其中一個(gè)或兩個(gè)層次上進(jìn)行解釋1.3.2視覺表示框架視覺過程可劃分為三個(gè)階段,如表1-2所示。第一階段(也稱為早期階段)是將輸入的原始圖象進(jìn)行處理,抽取圖象中諸如角點(diǎn)、邊緣、紋理、線條、邊界等基本特征。這些特征的集合稱為基元圖(primitivesketch);第二階段(中期階段)是指在以觀測者為中心的坐標(biāo)系中,由輸入圖象和基元圖恢復(fù)場景可見部分的深度、法線方向、輪廓等,這些信息包含了深度信息,但不是真正的物體三維表示。因此,稱為二維半圖(2.5dimensionalsketch);在以物體為中心的坐標(biāo)系中,由輸入圖象、基元圖、二維半圖來恢復(fù)、表示和識(shí)別三維物體的過程稱為視覺的第三階段(后期階段)。1.3.2視覺表示框架Marr理論是計(jì)算機(jī)視覺研究領(lǐng)域的劃時(shí)代成就,但該理論不是十分完善的,許多方面還有爭議。比如,該理論所建立的視覺處理框架基本上是自下而上,沒有反饋。還有,該理論沒有足夠地重視知識(shí)的應(yīng)用。盡管如此,Marr理論給了我們研究計(jì)算機(jī)視覺許多珍貴的哲學(xué)思想和研究方法,同時(shí)也給計(jì)算機(jī)視覺研究領(lǐng)域創(chuàng)造了許多研究起點(diǎn)。1.3.2視覺表示框架視覺過程可分為三個(gè)階段表1-2由圖像恢復(fù)形狀信息的表示框架名
稱目的基元圖像亮度表示圖像中每一點(diǎn)的亮度值基元圖表示二維圖像的重要信息,主要是圖像中的亮度變化位置及其幾何分布和組織結(jié)構(gòu)零交叉、斑點(diǎn),端點(diǎn)和不連接點(diǎn),邊緣,有效線段,組合群,曲線組織,邊界2.5維圖在以觀測者為中心的坐標(biāo)系中,表示可見表面的方向,深度值和不連續(xù)的輪廓局部表面朝上(“針”基元)離觀測者的距離深度上的不連續(xù)點(diǎn)表面朝上的不連續(xù)點(diǎn)3維模型表示在以物體為中心的坐標(biāo)系中,用三維體積基元面積構(gòu)成的模塊化多層次表示,描述形狀及空間組織形式分層次組成若干三維模型,每個(gè)三維模型都是在幾個(gè)軸線空間的基礎(chǔ)上構(gòu)成的,所有體積基元或面積形狀基元都附著在軸線上1.4深度學(xué)習(xí)深度學(xué)習(xí)(Deeplearning)是機(jī)器學(xué)習(xí)的分支,它是使用包含復(fù)雜結(jié)構(gòu)或由多重非線性變換構(gòu)成的多個(gè)處理層對(duì)數(shù)據(jù)進(jìn)行高層抽象的機(jī)器學(xué)習(xí)的算法。它和機(jī)器學(xué)習(xí)以及人工智能的關(guān)系如圖1-1所示,在最外面的一環(huán)是人工智能(ArtificialIntelligence,AI),使用計(jì)算推理,里面的一環(huán)是機(jī)器學(xué)習(xí)(Machinelearning),深度學(xué)習(xí)在最中心。1.4深度學(xué)習(xí)圖1-1深度學(xué)習(xí)在人工智能中的位置211.4深度學(xué)習(xí)在過去的若干年中,由于功能更強(qiáng)大和價(jià)格更便宜的計(jì)算的出現(xiàn),許多研究人員開始采用復(fù)雜(深層)神經(jīng)網(wǎng)絡(luò)的體系結(jié)構(gòu)來實(shí)現(xiàn)20年前難以想象的目標(biāo)。自1957年Rosenblatt發(fā)明感知器后,人們對(duì)神經(jīng)網(wǎng)絡(luò)的興趣變得越來越大。然而,許多限制(擔(dān)心內(nèi)存和CPU速度)阻礙了此方面的研究,并且限制了算法的大量應(yīng)用。在過去十年中,研究人員開始瞄準(zhǔn)越來越大的模型,建立幾個(gè)不同層次的神經(jīng)網(wǎng)絡(luò)模型(這就是為什么這種方法被稱為深度學(xué)習(xí)),以解決新的具有挑戰(zhàn)性的問題。便宜和快速的計(jì)算機(jī)的可用性允許他們使用非常大的數(shù)據(jù)集(由圖像、文本和動(dòng)畫組成的數(shù)據(jù))在可接受的時(shí)間范圍內(nèi)獲得結(jié)果。這一努力產(chǎn)生了令人印象深刻的成果,如基于圖片元素的分類和使用強(qiáng)化學(xué)習(xí)的實(shí)時(shí)智能交互。1.4深度學(xué)習(xí)這些技術(shù)背后的想法是創(chuàng)建像大腦一樣工作的算法,由于神經(jīng)科學(xué)和認(rèn)知心理學(xué)的貢獻(xiàn),這一領(lǐng)域已經(jīng)有了很多重要進(jìn)展。特別是人們對(duì)于模式識(shí)別和聯(lián)想記憶的研究興趣越來越濃厚,采用了與人類大腦皮層相似的結(jié)構(gòu)和功能。神經(jīng)網(wǎng)絡(luò)還包括更簡單的稱為無模型(model-free)的算法,這些算法更多是基于通用學(xué)習(xí)技巧和重復(fù)經(jīng)驗(yàn),而不是基于特定問題的數(shù)學(xué)物理方法。當(dāng)然,對(duì)不同的構(gòu)架和優(yōu)化算法的測試可以通過并行處理來進(jìn)行,從而使得其比定義一個(gè)復(fù)雜的模型要簡單得多,并且復(fù)雜的模型也更難以適應(yīng)不同的情況,此外,即使是沒有基于上下文的模型,深度學(xué)習(xí)也表現(xiàn)出比其他方法更好的性能。這表明在許多情況下,最好是用不確定性做出不太精確的決定,而不是由非常復(fù)雜的模型(通常不是很快)輸出確定的精確決策。對(duì)于動(dòng)物來說,這種決策往往生死攸關(guān),如果決策成功,也是因?yàn)樗[含地放棄了一些精確性。1.4深度學(xué)習(xí)常見的深度學(xué)習(xí)應(yīng)用包括:圖像分類、實(shí)時(shí)視覺跟蹤、自動(dòng)駕駛、物流優(yōu)化、生物信息、語音識(shí)別。這些問題中,有許多也可以使用經(jīng)典方法來求解,但有時(shí)候要復(fù)雜很多,而深度學(xué)習(xí)的效果更好。此外,深度學(xué)習(xí)可以將其應(yīng)用擴(kuò)展到最初被認(rèn)為非常復(fù)雜的情況下,例如自動(dòng)駕駛汽車或?qū)崿F(xiàn)視覺對(duì)象識(shí)別。本書詳細(xì)介紹了一些經(jīng)典算法。然而,有許多介紹性和更高級(jí)的討論資源可供參考。GeogleDeepMind團(tuán)隊(duì)已經(jīng)得到了許多有趣的結(jié)果,建議訪問他們的網(wǎng)站,了解他們的最新研究結(jié)果。1.4深度學(xué)習(xí)深度學(xué)習(xí)(Deeplearning)是機(jī)器學(xué)習(xí)的分支,它是使用包含復(fù)雜結(jié)構(gòu)或由多重非線性變換構(gòu)成的多個(gè)處理層對(duì)數(shù)據(jù)進(jìn)行高層抽象的機(jī)器學(xué)習(xí)的算法。25常見的深度學(xué)習(xí)的應(yīng)用圖像分類1.4深度學(xué)習(xí)26實(shí)時(shí)視覺跟蹤自動(dòng)駕駛物流優(yōu)化、生物信息、語音識(shí)別……1.5.1機(jī)器視覺的研究內(nèi)容輸入設(shè)備輸入設(shè)備包括成像設(shè)備和數(shù)字化設(shè)備。成像設(shè)備是指通過光學(xué)攝像機(jī)或紅外、激光、超聲、X射線對(duì)周圍場景或物體進(jìn)行探測成像,然后使用數(shù)字化設(shè)備得到關(guān)于場景或物體的二維或三維數(shù)字化圖像。獲取數(shù)字化圖像是機(jī)器視覺系統(tǒng)的最基本功能。目前用于研究視覺的大多數(shù)輸入設(shè)備是商業(yè)化產(chǎn)品,如CCD黑白或彩色攝像機(jī)、數(shù)字掃描儀、超聲成像探測儀、CT(計(jì)算機(jī)斷層掃描)成像設(shè)備等。但是這些商業(yè)化的輸入設(shè)備遠(yuǎn)遠(yuǎn)不能滿足實(shí)際的需要,因此研究人員正在研究各種性能先進(jìn)的成像系統(tǒng),如紅外成像系統(tǒng)、激光成像系統(tǒng)、計(jì)算機(jī)成像系統(tǒng)、高分辨率智能成像顯微儀器(RUSH,每秒能夠拍到百億像素,是國際上首個(gè)能實(shí)現(xiàn)小鼠全腦皮層范圍神經(jīng)活動(dòng)高分辨率成像的儀器。)1.5.1機(jī)器視覺的研究內(nèi)容圖像生成圖像生成主要研究相機(jī)內(nèi)參數(shù)和外參數(shù),使用線性或非線性對(duì)相機(jī)進(jìn)行標(biāo)定,光源類型及其產(chǎn)生的效果、光照及陰影,色彩匹配及線性顏色空間和非線性顏色空間,圖像顏色模型中的漫反射項(xiàng)及鏡面反射項(xiàng)受表面的顏色與光源的互反射的顏色影響。1.5.1機(jī)器視覺的研究內(nèi)容低層視覺低層視覺主要對(duì)輸入的原始圖像進(jìn)行處理,主要包括圖像線性濾波或非線性濾波、圖像增強(qiáng)、邊緣檢測、圖像紋理檢測、圖像運(yùn)動(dòng)檢測,由紋理恢復(fù)形狀、圖像去噪等。中層視覺中層視覺的主要任務(wù)是恢復(fù)場景深度、表面法線方向、輪廓等有關(guān)場景的2.5維信息,實(shí)現(xiàn)途徑有立體視覺、測距成像、運(yùn)動(dòng)估計(jì)以及利用明暗特征、紋理特征等進(jìn)行形狀恢復(fù)的方法。291.5.1機(jī)器視覺的研究內(nèi)容高層視覺高層視覺的主要任務(wù)是在以物體為中心的坐標(biāo)系中,根據(jù)原始輸入圖像及基本特征,恢復(fù)物體的三維結(jié)構(gòu),并確定物體的位置和方向。另外,利用微分幾何知識(shí),描述物體的平滑表面及輪廓,同時(shí)利用滑動(dòng)窗口法進(jìn)行的人臉檢測、行人檢測和邊界檢測,形變物體檢測等。301.5.2機(jī)器視覺研究面臨的問題目前所建立的各種機(jī)器視覺系統(tǒng)只適用于某種特定環(huán)境或應(yīng)用場合,而要建立一個(gè)可以與人類視覺相比擬的通用視覺系統(tǒng)是非常困難的,機(jī)器視覺研究面臨的困難如下。信息損失在相機(jī)或者人眼圖像獲取過程中,會(huì)出現(xiàn)3D向2D轉(zhuǎn)換過程中信息損失。這是由針孔模型的近似或者透鏡成像模型決定的,在成像過程中丟失了深度等的信息,在投影變換過程中,會(huì)將點(diǎn)沿著射線做映射,但不保持角度和共線性。局部窗口和對(duì)全局視圖的需要一般來說,圖像分析與處理的是全局圖像的一部分像素,也就是說通過小孔來看圖像。因此通過局部(小孔)很難實(shí)現(xiàn)全局上下文的理解。20世紀(jì)80年代,1.5.2機(jī)器視覺研究面臨的問題McCarthy指出構(gòu)造上下文是解決推廣性問題的關(guān)鍵,而僅從局部來看或只有一些局部小孔可供觀察時(shí),解釋一幅圖像一般時(shí)非常困難的。噪聲實(shí)際的視覺檢測都含有噪聲,需要使用相應(yīng)的數(shù)學(xué)工具和方法對(duì)含有噪聲的視覺感知結(jié)果進(jìn)行分析與處理,進(jìn)而獲得復(fù)原真實(shí)視覺數(shù)據(jù)。亮度測量輻射率用圖像亮度近似表示。輻射率依賴于輻照度(輻照度與光源類型、強(qiáng)度和位置有關(guān))、觀察者位置、表面的局部幾何性質(zhì)。大數(shù)據(jù)灰度圖像、彩色圖像、深度圖像的信息量是巨大的,視頻數(shù)據(jù)會(huì)更大。巨大的數(shù)據(jù)量處理的相率仍然是一個(gè)重要的問題。1.6機(jī)器視覺的應(yīng)用機(jī)器視覺在很多領(lǐng)域已經(jīng)得到了廣發(fā)應(yīng)用,如工業(yè)自動(dòng)化生產(chǎn)線、視覺導(dǎo)航、光學(xué)字符識(shí)別、人機(jī)交互、醫(yī)學(xué)成像及虛擬現(xiàn)實(shí)等。(1)工業(yè)自動(dòng)化生產(chǎn)線機(jī)器視覺應(yīng)用于工業(yè)自動(dòng)化可以提高生產(chǎn)效率和產(chǎn)品質(zhì)量,同時(shí)還可以應(yīng)用于產(chǎn)品檢測、質(zhì)量控制、工業(yè)探傷、自動(dòng)焊接以及各種危險(xiǎn)場合工作的機(jī)器人等。(2)視覺導(dǎo)航用于無人駕駛、移動(dòng)機(jī)器人、巡航導(dǎo)彈制導(dǎo)及自動(dòng)巡航裝備捕獲目標(biāo)和確定距離。1.6機(jī)器視覺的應(yīng)用(3)醫(yī)學(xué)成像廣泛應(yīng)用于醫(yī)學(xué)診斷,成像方法包括傳統(tǒng)的X射線成像、計(jì)算機(jī)層析(computerdtomography,CT)成像、核磁共振成像(magneticresonanceimaging,MRI)、超聲成像等。機(jī)器視覺在醫(yī)學(xué)診斷方面由兩方面的應(yīng)用,一個(gè)是對(duì)圖像進(jìn)行增強(qiáng)、標(biāo)記、染色等處理來幫助醫(yī)生診斷疾病,協(xié)助醫(yī)生對(duì)感興趣的區(qū)域進(jìn)行定量測量和比較;二是利用專家知識(shí)系統(tǒng)對(duì)圖像進(jìn)行自動(dòng)分析和解釋,給出診斷結(jié)果。(4)人機(jī)交互讓計(jì)算機(jī)借助人的手勢、嘴唇動(dòng)作、軀干運(yùn)動(dòng)、表情等了解人的要求而執(zhí)行指令,鑒別用戶身份,識(shí)別用戶的體勢及表情測定,既符合人類的交互習(xí)慣,也增強(qiáng)交互的方便性和臨場感。1.6機(jī)器視覺的應(yīng)用(5)虛擬現(xiàn)實(shí)飛機(jī)駕駛員訓(xùn)練、手術(shù)模擬、場景建模、戰(zhàn)場環(huán)境表示等,它可以幫助人們超越人的生理極限,“身臨其境”,提高工作效率。(6)其它總之,計(jì)算機(jī)視覺的應(yīng)用是多方面的,它在制造業(yè)、電子、航天、遙感、印刷、固廢處理、冶煉、選礦、建材、紡織、包裝、醫(yī)療、制藥、食品、智能交通、金融、體育、考古、公共安全、各類球類運(yùn)動(dòng)分析、農(nóng)業(yè)、心理學(xué)、電視電影制作、美術(shù)模型、遠(yuǎn)程教育、多媒體教學(xué)及科學(xué)研究等行業(yè)均有著廣泛應(yīng)用。1.6機(jī)器視覺的應(yīng)用工業(yè)自動(dòng)化生產(chǎn)線36視覺導(dǎo)航醫(yī)學(xué)成像人機(jī)交互虛擬現(xiàn)實(shí)思考與練習(xí)1-1什么是機(jī)器視覺?1-2總結(jié)機(jī)器視覺的發(fā)展歷程。1-3機(jī)器視覺研究的主要內(nèi)容有哪些?1-4說明機(jī)器視覺應(yīng)用的五個(gè)具體例子。1-5說明Marr視覺理論的主要內(nèi)容。37第2章機(jī)器視覺原理與應(yīng)用數(shù)學(xué)基礎(chǔ)2.1線性空間2.2內(nèi)積空間 2.2.1內(nèi)積空間及其基本性質(zhì) 2.2.2度量矩陣2.3矩陣的因子分解2.3.1對(duì)角矩陣2.3.2單位矩陣2.3.3初等矩陣2.4稠密及其完備性2.5向量范數(shù)第2章機(jī)器視覺原理與應(yīng)用數(shù)學(xué)基礎(chǔ)2.6矩陣范數(shù)2.7矩陣擾動(dòng)分析2.8廣義逆矩陣2.8.1廣義逆矩陣的概念2.8.2廣義逆矩陣與線性方程組的極小最小二乘解2.1
線性空間數(shù)域如果復(fù)數(shù)的一個(gè)非空集合P含有非零的數(shù),且其中任意兩數(shù)的和、差、積、商(除數(shù)不為零)仍屬于該集合,則稱數(shù)集P為一個(gè)數(shù)域。如有理數(shù)域、實(shí)數(shù)域及復(fù)數(shù)域,其中有理數(shù)域是數(shù)域的一部分,每個(gè)數(shù)域都包含整數(shù)0和1。2.1
線性空間線性空間的定義定義2-1設(shè)V是一非空集合,P是一數(shù)域。如果:(1)在集合V上定義了一個(gè)二元運(yùn)算(通常稱為加法),即V中任意元素x,y經(jīng)過這個(gè)運(yùn)算后得到的結(jié)果,仍是集合V中一個(gè)唯一確定的元素,這元素稱為x與y的和,并記作x+y;(2)在數(shù)域P與集合V的元素之間還定義了一種運(yùn)算,叫做數(shù)量乘法,即對(duì)于P中任一數(shù)與V中任一元素x,經(jīng)過這一運(yùn)算后所得結(jié)果仍為V中一個(gè)唯一確定元素,稱為與x的數(shù)量乘積,記作x;(3)上述兩個(gè)運(yùn)算滿足下列八條規(guī)則:①對(duì)任意
,
;②對(duì)任意
,
;③V中存在一個(gè)零元素,記作0,對(duì)任一
,都有
;2.1
線性空間④任一 ,都有
,使得
,元素y稱為x的負(fù)元素,記作–x;⑤對(duì)任一
,都有
;⑥對(duì)任何
,
,
;⑦對(duì)任何
,
,
;⑧對(duì)任何
,
,
;則集合V稱為數(shù)域P上的線性空間或向量空間,V中的元素常稱為向量。V中的零元素常稱為零向量.當(dāng)P是實(shí)數(shù)域時(shí),V叫實(shí)線性空間;當(dāng)P是復(fù)數(shù)域時(shí),V叫復(fù)線性空間;數(shù)域P上的線性空間有時(shí)簡稱為線性空間。422.1
線性空間43定義2-2
設(shè)V是數(shù)域P上的線性空間,W是V的一個(gè)非空子集,如果W對(duì)于V的加減法運(yùn)算及數(shù)量乘法運(yùn)算也構(gòu)成數(shù)域P上的線性空間,則W為V的一個(gè)線性子空間(簡稱子空間).如何判斷線性空間V的一個(gè)非空子集W是否構(gòu)成V的子空間?有如下定理:2.1
線性空間定理2-1設(shè)W是數(shù)域P上線性空間V的非空子集,則W是V的一個(gè)線性子空間當(dāng)且僅當(dāng)W對(duì)于V的兩種運(yùn)算封閉,即(1)如果
,則
;(2)如果
,
,則 .定理2-2若W是有限維線性空間V的子空間,則W的一組基可擴(kuò)充成V的一組基.由定理2.5.2可知,線性空間V的一組向量構(gòu)造V的子空間的方法如下所示。設(shè),,……,是數(shù)域P上線性空間V的一組向量,這個(gè)向量組的所有線性組合組成的集合記為W,即
442.1
線性空間452.2.1內(nèi)積空間及其基本性質(zhì)我們首先在一般的線性空間中定義內(nèi)積運(yùn)算,導(dǎo)出內(nèi)積空間的概念,然后引進(jìn)長度、角度等度量概念。定義2-3 設(shè)V是數(shù)域P上的線性空間,V到P的一個(gè)代數(shù)運(yùn)算記為。
如果
滿足下列條件:(1)
;(2)
;(3)
;(4)
,當(dāng)且僅當(dāng)
時(shí)
,其中k是數(shù)域P中的任意數(shù), 是V中的任意元素,則稱
為α與β的內(nèi)積。定義了內(nèi)積的線性空間V稱為內(nèi)積空間.特別地,稱實(shí)數(shù)域R上的內(nèi)積空間V為Euclid空間(簡稱為歐氏空間);稱復(fù)數(shù)域C上的內(nèi)積空間V為酉空間或復(fù)內(nèi)積空間。若內(nèi)積空間是完備的,稱為Hilbert空間(內(nèi)積空間+完備性)。462.2.1內(nèi)積空間及其基本性質(zhì)由定義2-3不難導(dǎo)出,在內(nèi)積空間中有(1)(2)(3)2.2.1內(nèi)積空間及其基本性質(zhì)2.2.1內(nèi)積空間及其基本性質(zhì)2.2.1內(nèi)積空間及其基本性質(zhì)定理2-3 設(shè)V是數(shù)域P上的內(nèi)積空間,則向量長度具有如下性質(zhì);
(1) 當(dāng)且僅當(dāng)
時(shí)
;
(2)對(duì)任意
,有
;
(3)對(duì)任意
,有
(4)對(duì)任意
,有
(5)對(duì)任意
,有
并且等號(hào)成立的充分必要條件是α,β線性相關(guān).502.2.1內(nèi)積空間及其基本性質(zhì)512.2.1內(nèi)積空間及其基本性質(zhì)522.2.1內(nèi)積空間及其基本性質(zhì)532.2.1內(nèi)積空間及其基本性質(zhì)定義2-5 設(shè)V是內(nèi)積空間,V中向量α與β之間的距離定義為
并稱
是由長度導(dǎo)出的距離.542.2.2度量矩陣定義2-6 設(shè)α,β是內(nèi)積空間中兩個(gè)向量,如果
,則稱α與β正交,記為
.552.2.2度量矩陣562.2.2度量矩陣定理2-4 設(shè)
是數(shù)域P上n維內(nèi)積空間V的一組基,則它的度量矩陣A非奇異.572.2.2度量矩陣定義2-7
設(shè)
,用表示以A的元素的共軛復(fù)數(shù)為元素組成的矩陣,
稱為A的共軛轉(zhuǎn)置矩陣。矩陣的共軛轉(zhuǎn)置運(yùn)算具有下列性質(zhì):(1) ;(2) ;(3) ;(4) ;(5) ;(6)如果A可逆,則
。582.2.1內(nèi)積空間及其基本性質(zhì)定義2-8
設(shè)
,如果
,則稱A為Hermite矩陣;如果 ,則稱A為反Hermite矩陣。
實(shí)對(duì)稱矩陣是Hermite矩陣,有限維內(nèi)積空間的度量矩陣是Hermite矩陣定義2-9 如果n階實(shí)矩陣A滿足 ,則稱A為正交矩陣。
如果n階實(shí)矩陣A滿足 ,則稱A為酉矩陣。592.2.2度量矩陣602.2.1內(nèi)積空間及其基本性質(zhì)定義2-10
設(shè)
,且
,則稱A為正規(guī)矩陣。推論1 設(shè)A是n階正規(guī)矩陣,其特征值為
,則(1)A是厄米特(Hermite)矩陣的充要條件是:A的特征值全為實(shí)數(shù);(2)A是反厄米特矩陣的充要條件是:A的特征值為零或純虛數(shù);(3)A是酉矩陣的充要條件是:A的每個(gè)特征值的模。2.3.1對(duì)角矩陣方陣
的特點(diǎn)是:從左上角到右下角的直線(叫做對(duì)角線)以外的元素都是0,這種方陣稱為對(duì)角矩陣,簡稱對(duì)角陣。對(duì)角陣也記作:特別地當(dāng)
時(shí)的線性變換叫做恒等變換,它對(duì)應(yīng)的n階方陣
叫做n階單位矩陣62線性變換
對(duì)應(yīng)n階方陣2.3.2單位矩陣形如
的矩陣特點(diǎn)為:對(duì)角線上的元素都是1,其他元素都是0即單位矩陣E的
元為:
。632.3.3初等矩陣1初等行變換
(1)對(duì)換兩行(對(duì)換i,j兩行,記作
);
(2)以數(shù)
乘某一行中的所有元素(第i行乘k,記作
)
(3)把某一行所有元的k倍加到另一行對(duì)應(yīng)的元素上去(第j行的k倍加到第i行上,記作
).2初等列變換
把上面(1)(2)(3)的“行”換成“列”,得初等列變換。3初等變換
矩陣的初等行變換與初等列變換,統(tǒng)稱為初等變換。642.3.3初等矩陣4初等矩陣
定義2-11
設(shè)
,為一復(fù)數(shù),如下形式的矩陣
稱為初等矩陣。定理2-5 初等矩陣具有如下性質(zhì): (1)
; (2)如果
,則
可逆,并且其逆矩陣也是初等矩陣
其中
(3)對(duì)任意非零向量
,可適當(dāng)選取和使得
652.3.3初等矩陣662.3.3初等矩陣672.3.3初等矩陣682.3.3初等矩陣692.4稠密及其完備性702.4稠密及其完備性712.4稠密及其完備性定義2-12(有界集)設(shè)
是非空數(shù)集。(1)如果存在
,使
,有
,則稱M為數(shù)集A的一個(gè)上界;(2)如果存在
,使,有,則稱m為數(shù)集A的一個(gè)下界;(3)如果數(shù)集A既有上界又有下界,則稱A為有界數(shù)集。注2-1數(shù)集有界的等價(jià)定義:如果存在
,使
,有
,則稱A為有界數(shù)集。722.4稠密及其完備性732.4稠密及其完備性742.4稠密及其完備性752.4稠密及其完備性762.4稠密及其完備性完備性在微積分中,數(shù)列
收斂
是基本列(或
列),它有六個(gè)相互等價(jià)的命題,這些命題反映了實(shí)數(shù)的完備性(連續(xù)性)?,F(xiàn)在將這一概念推廣到距離空間。定義2-14(基本列)設(shè)
是一距離空間,是X中的點(diǎn)列,如果, ,當(dāng)
時(shí),有
就稱為基本列(或
列).772.4稠密及其完備性定理2-7(基本列的性質(zhì))
中的基本列有如下的性質(zhì):(1)若點(diǎn)列收斂,則是基本列;(2)若點(diǎn)列是基本列,則有界;(3)若基本列含有收斂子列,則該基本列收斂,其極限為該子列的極限。782.4稠密及其完備性792.4稠密及其完備性802.5向量范數(shù)定義2-16(范數(shù)公理)
設(shè)V是數(shù)域P上的線性空間,是以V中的向量α
為自變量的非負(fù)實(shí)值函數(shù),如果它滿足以下三個(gè)條件:(1)非負(fù)性:當(dāng)
時(shí),
;當(dāng)
時(shí),
;(2)齊次性:對(duì)任意
,有
;(3)三角不等式:對(duì)任意
,有
。
則稱為向量α的范數(shù),并稱定義了范數(shù)的線性空間為賦范線性空間,稱
為賦范線性空間,簡記為V.如果V按照距離
是完備的,稱V為巴拿赫空間。812.5向量范數(shù)822.5向量范數(shù)832.5向量范數(shù)842.6矩陣范數(shù)定義2-17
設(shè)是以
中的矩陣A為自變量的非負(fù)實(shí)值函數(shù),如果它滿
足以下四個(gè)條件:(1)非負(fù)性:當(dāng)
時(shí),
;當(dāng)時(shí),
;(2)齊次性:對(duì)任意
,有
;(3)三角不等式:對(duì)任意
,有
;(4) ,則稱為矩陣A的范數(shù).852.6矩陣范數(shù)862.6矩陣范數(shù)定理2-8 設(shè)
,則有
(列模和最大者)
(
是
最大特征者)
(行模和最大者)通常將稱為A的列和范數(shù).稱為A的譜范數(shù),稱為A的行和范數(shù),稱為的Frobenius范數(shù)(范數(shù)).872.6矩陣范數(shù)882.6矩陣范數(shù)892.6矩陣范數(shù)902.6矩陣范數(shù)912.7矩陣擾動(dòng)分析為了解決科學(xué)與工程實(shí)際中的實(shí)際問題,人們根據(jù)物理、力學(xué)等規(guī)律建立問題的數(shù)學(xué)模型,并根據(jù)數(shù)學(xué)模型提出求解數(shù)學(xué)問題的數(shù)值計(jì)算方法,然后進(jìn)行程序設(shè)計(jì),在計(jì)算機(jī)上計(jì)算出實(shí)際需要的結(jié)果。在數(shù)學(xué)問題的求解過程中,通常存在兩類誤差影響計(jì)算結(jié)果的精度,即數(shù)值計(jì)算方法引起的截?cái)嗾`差和計(jì)算環(huán)境引起的舍入誤差。為了分析這些誤差對(duì)數(shù)學(xué)問題解的影響,人們將其歸結(jié)為原始數(shù)據(jù)的擾動(dòng)(或攝動(dòng))對(duì)解的影響。自然地,我們需要研究該擾動(dòng)引起了問題解的多大變化,即問題解的穩(wěn)定性。922.7矩陣擾動(dòng)分析932.7矩陣擾動(dòng)分析942.7矩陣擾動(dòng)分析952.7矩陣擾動(dòng)分析962.7矩陣擾動(dòng)分析972.7矩陣擾動(dòng)分析982.7矩陣擾動(dòng)分析992.7矩陣擾動(dòng)分析1002.8廣義逆矩陣1012.8.1廣義逆矩陣的概念對(duì)
,Penrose以簡便實(shí)用的形式給出了矩陣A的廣義逆定義,并陳述了四個(gè)條件,稱為Penrose方程。(1) (2)(3) (4) 定義2-19對(duì)任意矩陣A,如果存在某個(gè)G矩陣,滿足Penrose方程的一部分或全部,則稱G為A的廣義逆矩陣。1022.8.1廣義逆矩陣的概念1032.8.2廣義逆矩陣與線性方程組的極小最小二乘解設(shè)A是的矩陣,其秩為
。關(guān)于矩陣A的Moore-Penrose廣義逆的存在性與唯一性,有如下結(jié)論:定理2-11設(shè)A是任意的
矩陣,存在并且唯一。定理2-12設(shè)A是
矩陣,其滿秩分解為其中B是矩陣,C是
矩陣,
,
則Moore-Penrose廣義逆的基本性質(zhì)可概述為如下定理。定理2-13設(shè)A是矩陣,則 (1)1042.8.2廣義逆矩陣與線性方程組的極小最小二乘解(2) (3) (4) (5) (6) (7) (8)若
,則(9)若
,則(10)若
分別為階正交矩陣,則(11)若
,其中R為r階非奇異矩陣,則1052.8.2廣義逆矩陣與線性方程組的極小最小二乘解定理2-14設(shè)
, ,則線性方程組
有解的充分必要條件是:
這時(shí),
的通解是
其中
是任意的。定理2-15設(shè)
,,則不相容線性方程組
的最小二乘解的通
式為其中
是任意的。定理2-16設(shè)A是
矩陣,則G是Moore-Penrose廣義逆的充分必要條件為
是不相容線性方程組
的極小最小二乘解。106思考與練習(xí)2-1數(shù)域P上的線性空間的含義。2-2什么是張成的子空間?怎樣表示?2-3什么是內(nèi)積空間、歐氏空間及酉空間?各自具有哪些性質(zhì)?2-4試證明定理2-3中的(1)~(5)。2-5向量范數(shù)和矩陣范數(shù)各具有哪些性質(zhì)?2-6廣義逆矩陣具有哪些性質(zhì)?107第3章機(jī)器視覺編程基礎(chǔ)3.1Python安裝及環(huán)境搭建 3.1.1安裝Python 3.1.2安裝PyCharmCommunity 3.1.3PyCharm初始化
3.1.4在Prompt中安裝OpenCV庫函數(shù)3.2Python編譯器3.3Python數(shù)據(jù)類型 3.3.1數(shù)值類型 3.3.2字符串類型 3.3.3布爾類型3.4變量與常量第3章機(jī)器視覺編程基礎(chǔ)3.5運(yùn)算符 3.5.1運(yùn)算符簡介 3.5.2字符串類型3.6選擇與循環(huán) 3.6.1if語句 3.6.2while循環(huán) 3.6.3for循環(huán) 3.6.4break和continue語句3.7列表與元組 3.7.1序列索引 3.7.2序列切片
第3章機(jī)器視覺編程基礎(chǔ) 3.7.3創(chuàng)建 3.7.4查詢 3.7.5修改 3.7.6刪除3.8Numpy數(shù)組 3.8.1Numpy.array 3.8.2創(chuàng)建Numpy數(shù)組 3.8.3Numpy數(shù)組切片3.9字典 3.9.1字典的創(chuàng)建 3.9.2字典的常規(guī)操作
第3章機(jī)器視覺編程基礎(chǔ) 3.9.3字典的遍歷3.10函數(shù) 3.10.1函數(shù)的定義與調(diào)用 3.10.2參數(shù)傳遞3.11面向?qū)ο蟮木幊?3.11.1類與對(duì)象
3.11.2繼承與多態(tài)3.12Python調(diào)用MATLAB程序
3.1Pyhton安裝及環(huán)境搭建Anaconda官網(wǎng)
/products/individualPyCharm官網(wǎng)
/pycharm/download/#section=windowsPyCharm初始化
創(chuàng)建一個(gè)新的工程在Interpreter目錄中選擇CondaEnvironment,在Interpreter右側(cè)目錄中選擇Python.exe,此文件Python.exe在已安裝好的Anaconda目錄下,點(diǎn)擊OK完成配置安裝OpenCV庫
選擇Anaconda3下的AnacondaPrompt,在窗口中輸入pipinstall-i/simpleopencv-python==53.2Pyhton編譯器Python是一種跨平臺(tái)的計(jì)算機(jī)程序語言是我們進(jìn)行項(xiàng)目開發(fā)而使用的一門計(jì)算機(jī)語言,通俗來說就是編寫代碼,編寫完代碼之后,我們就需要運(yùn)行,這時(shí)我們需要運(yùn)行Python代碼的運(yùn)行環(huán)境和工具Anaconda是一個(gè)開源的Python發(fā)行版本,其包含了conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng),Conda是一個(gè)開源的包、環(huán)境管理器,可以用于在同一個(gè)機(jī)器上安裝不同版本的軟件包及其依賴,并能夠在不同的環(huán)境之間切換PyCharm是一種常用的PythonIDE,該IDE提供了一些高級(jí)功能,以用于支持Django框架下的專業(yè)Web開發(fā),界面編寫代碼和運(yùn)行操作更加簡單3.2Pyhton編譯器我們使用以下四種方式來運(yùn)行Python代碼,前提是已經(jīng)下載好了Python解釋器,下載后配置好其系統(tǒng)環(huán)境變量,解釋器的作用就是將Python代碼解釋成機(jī)器可以識(shí)別并執(zhí)行的語言1.在命令窗口中運(yùn)行快捷鍵Win+R—>輸入cmd到命令窗口—>窗口內(nèi)輸入python3.2Pyhton編譯器2.腳本方式運(yùn)行新建一個(gè)A.txt腳本文件,寫完腳本之后,然后把名稱后綴命名為.py,到命令窗口找到相應(yīng)的文件目錄,然后執(zhí)行代碼pythonA.py3.2Pyhton編譯器3.使用Python自帶的IDLE編輯器IDLE是Python原生自帶的開發(fā)環(huán)境,是迷你版的IDE,與以上方式不同的是它帶有圖形界面,有簡單的編輯和調(diào)試功能,但是操作起來比較麻煩。使用方式Win+R—>輸入IDLE3.2Pyhton編譯器4.使用第三方Python的IDE編輯器使用第三方Python的IDE相對(duì)于Python自帶的IDLE而言,功能更加全面,界面更加美觀,操作起來更加容易。目前比較流行的有PyCharm、Vscode、Jupyter等,本文推薦廣泛使用的Pycharm3.3.1數(shù)值類型數(shù)值類型一般用來存儲(chǔ)程序中的數(shù)值。Python支持三種不同的數(shù)值類型,分別是整型(int)、浮點(diǎn)型(float)和復(fù)數(shù)型(complex)1.整型整型就是我們常說的整數(shù),沒有小數(shù)點(diǎn),但是可以有正負(fù)號(hào)。在Python中,可以對(duì)整型數(shù)據(jù)進(jìn)行(+)、減(-)、乘(*)、除(/)和乘方(**)的操作另外,Python中還支持運(yùn)算次序,可以在同一個(gè)表達(dá)式中使用多種運(yùn)算,還可以使用括號(hào)來修改運(yùn)算次序3.3.1數(shù)值類型2.浮點(diǎn)型Python將帶小數(shù)點(diǎn)的數(shù)字都稱為浮點(diǎn)數(shù)。大多數(shù)編程語言都使用這個(gè)術(shù)語,它可以用來表示一個(gè)實(shí)數(shù),通常分為十進(jìn)制小數(shù)形式(如5.32)和指數(shù)形式.指數(shù)形式的浮點(diǎn)數(shù)用字母e或者(E)來表示以10為底的小數(shù),e之前為整數(shù)部分,之后為指數(shù)部分,而且兩部分必須同時(shí)存在3.復(fù)數(shù)型在科學(xué)計(jì)算中經(jīng)常會(huì)遇到復(fù)數(shù)型的數(shù)據(jù),鑒于此,Python提供了運(yùn)算方便的復(fù)數(shù)類型。對(duì)于復(fù)數(shù)類型的數(shù)據(jù),一般的形式是a+bj,其中a為實(shí)部,b為虛部,j為虛數(shù)單位
3.3.2字符串類型在Python中可以使用單引號(hào)、雙引號(hào)、三引號(hào)來定義字符串,使用單引號(hào)或者雙引號(hào)表示的字符串必須在同一行表示,而三引號(hào)表示的字符串可以多行表示,這種情況用于注釋:>>>str3="""helloPtyhon!""">>>print(str3)HelloPython!在Python中不可以對(duì)已經(jīng)定義的字符串進(jìn)行修改,只能重新定義字符串運(yùn)行結(jié)果3.3.3布爾類型
布爾(bool)類型的數(shù)據(jù)用于描述邏輯運(yùn)算的結(jié)果,只有真(True)和假(False)兩種值,在Python中一般用在程序中表示條件,滿足為True,不滿足為False3.4變量與常量計(jì)算機(jī)中的變量類似于一個(gè)存儲(chǔ)東西的盒子,在定義一個(gè)變量后,可以將程序中表達(dá)式所計(jì)算的值放入該盒子中,即將其保存到一個(gè)變量中。在程序運(yùn)行過程中不能改變的數(shù)據(jù)對(duì)象稱為常量在Python中使用變量要遵循一定的規(guī)則,基本規(guī)則如下:(1)變量名只包含字母、數(shù)字和下劃線。變量名可以以字母或下劃線開頭,但不能以數(shù)字開頭。例如,可將變量命名為singal_2,但不能將其命名為2_singal。(2)變量名不包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名open_cl可行,但變量名opencl會(huì)引發(fā)錯(cuò)誤。(3)變量名應(yīng)既簡短又具有描述性。(4)不要將Python關(guān)鍵字和函數(shù)名用作變量名。例如,break、i、for等關(guān)鍵字不能用作變量名3.5.1運(yùn)算符簡介
Python中,如正負(fù)號(hào)運(yùn)算符“+”和“-”接受一個(gè)操作數(shù)、可以將其稱為一元運(yùn)算符。而接受兩個(gè)操作數(shù)的運(yùn)算符可以稱為二元運(yùn)算符,如“*”“/”等。如果在計(jì)算過程中包含多個(gè)運(yùn)算符,其計(jì)算的順序需要根據(jù)運(yùn)算符的結(jié)合順序和優(yōu)先級(jí)而定。優(yōu)先級(jí)高的先運(yùn)算,同級(jí)的按照結(jié)合順序從左到右依次計(jì)算3.5.2運(yùn)算符優(yōu)先級(jí)按優(yōu)先順序排列:運(yùn)算符描述Or布爾“或”And布爾“與”Not布爾“非”in,notin成員測試is,isnot同一性測試<,<=,>,>=,!=,==比較|按位或^按位異或&按位與<<,>>移位+,-加法與減法*,/,%,//乘法,除法,取余,整數(shù)除法~x按位反轉(zhuǎn)**指數(shù)/冪3.6選擇與循環(huán)選擇結(jié)構(gòu)(根據(jù)程序執(zhí)行路線不同)循環(huán)結(jié)構(gòu)也是類似,需要有循環(huán)的條件和循環(huán)所執(zhí)行的程序(即循環(huán)體)單分支雙分支多分支3.6.1if語句
if語句的子句即if語句在條件成立時(shí)所要執(zhí)行的程序,它將在語句的條件為True時(shí)執(zhí)行。如果條件為False,那么將跳過子句。if單分支結(jié)構(gòu)一般的格式為:if表達(dá)式(條件):語句塊(子句)單分支if語句執(zhí)行過程3.6.1if語句if雙分支結(jié)構(gòu)if子句后有時(shí)也可以跟else語句。只有if語句的條件為False時(shí),else子句才會(huì)執(zhí)行if語句同樣可以實(shí)現(xiàn)雙分支結(jié)構(gòu),其一般格式為:
if表達(dá)式(條件):語句塊1(1f子句)else;語句塊2(else子句)單分支if語句執(zhí)行過程3.6.1if語句if多分支結(jié)構(gòu)雖然只有if或else子句會(huì)被執(zhí)行,但當(dāng)希望有更多可能的子句中有一個(gè)被執(zhí)行時(shí),elif語句就派上用場了。elif語句是“否則如果”,總是跟在if或另一條elif語句后面。它提供了另一個(gè)條件,僅在前面的條件為False時(shí)才檢查該條件。3.6.1if語句
if語句也可以實(shí)現(xiàn)多分支結(jié)構(gòu),它的一般格式為:if表達(dá)式1(條件1):語句塊1elif表達(dá)式2(條件2):語句塊2elif表達(dá)式3(條件3):語句塊3……elif表達(dá)式m(條件m):語句塊m[else:語句塊n]多分支if語句執(zhí)行過程3.6.2while循環(huán)
while循環(huán)結(jié)構(gòu)是通過判斷循環(huán)條件是否成立來決定是否要繼續(xù)進(jìn)行循環(huán)的一種循環(huán)結(jié)構(gòu),它可以先判斷循環(huán)的條件是否為True,若為True則繼續(xù)進(jìn)行循環(huán),若為False,則退出循環(huán)。while語句基本格式在Python中,while語句的一般格式為:while表達(dá)式(循環(huán)條件):語句塊 while循環(huán)語句執(zhí)行過程3.6.2while循環(huán)while語句中的else語句在Python中可以在while語句之后使用else語句。在while。運(yùn)向的循環(huán)體正常循環(huán)結(jié)束退出循環(huán)后會(huì)執(zhí)行else語句的子句,但是當(dāng)循環(huán)用break語句退出時(shí),else語句的子句則不會(huì)被執(zhí)行。3.6.3for循環(huán)當(dāng)想要在程序中實(shí)現(xiàn)計(jì)數(shù)循環(huán)時(shí),一般會(huì)采用for循環(huán)。在Python中,for循環(huán)是一個(gè)通用的序列迭代器,可以遍歷任何有序序列對(duì)象中的元素。for循環(huán)的格式for循環(huán)的一般格式為:for目標(biāo)變量in序列對(duì)象:語句塊for循環(huán)首先將序列中的元素依次賦給目標(biāo)變量,每賦值一次都要執(zhí)行一次循環(huán)體的代碼。for循環(huán)執(zhí)行結(jié)構(gòu)3.6.3for循環(huán)range在for循環(huán)中的應(yīng)用for循環(huán)經(jīng)常和range聯(lián)用。range是Python3.x內(nèi)部定義的一個(gè)迭代器對(duì)象,可以幫助for語句定義迭代對(duì)象的范圍。其基本格式為:range(start,stopl,[step])range的返回值從start開始,以step為步長,到stop結(jié)束,step為可選參數(shù),默認(rèn)為1。3.6.4break和continue語句break語句和continue語句都是循環(huán)控制語句,可以改變循環(huán)的執(zhí)行路徑。break語句break語句多用于for、while循環(huán)的循環(huán)體,作用是提前結(jié)束循環(huán),即跳出循環(huán)體。當(dāng)多個(gè)循環(huán)嵌套時(shí),break只是跳出最近的一層循環(huán)。continue語句continue語句類似于break語句,必須在for和while循環(huán)中使用。但是,與break語句不同的是,continue語句僅僅跳出本次循環(huán),返回到循環(huán)條件判斷處,并且根據(jù)判斷條件來確定是否繼續(xù)執(zhí)行循環(huán)。3.7列表和元組在數(shù)學(xué)里,序列也稱為數(shù)列,是指按照一定順序排列的一列數(shù),在程序設(shè)計(jì)中,序列是一種常用的數(shù)據(jù)存儲(chǔ)方式Python中內(nèi)置了5個(gè)常用的序列結(jié)構(gòu),分別是列表、元組、集合、字典和字符串在Python中,列表和元組這兩種序列可以存儲(chǔ)不同類型的元素。不同之處:列表的值是可以改變的,而元組的值是不可變的。3.7.1序列索引序列結(jié)構(gòu)遵循序列索引。序列中的每一個(gè)元素都有一個(gè)編號(hào),稱為索引。正數(shù)索引:從左往右計(jì)數(shù),第一個(gè)索引值是0負(fù)數(shù)索引:從右向左計(jì)數(shù),最后一個(gè)元素的索引值是-13.7.2序列切片切片操作是訪問序列中元素的另一種方法,它可以訪問一定范圍內(nèi)的元素。通過切片操作可以生成一個(gè)新的序列。實(shí)現(xiàn)切片操作的語法格式如下:qiepian[start:end:step]參數(shù)說明:
qiepian:表示序列的名稱;
start:表示切片的開始位置(包括該位置),如果不指定,則默認(rèn)為0;
end:表示切片的截止位置(不包括該位置),如果不指定,則默認(rèn)為序列的長度;
step:表示切片的步長,如果省略,則默認(rèn)為1,當(dāng)省略該步長時(shí),最后一個(gè)冒號(hào)也可以省略。3.7.3創(chuàng)建列表的創(chuàng)建方法一:列表的創(chuàng)建采用在方括號(hào)中用逗號(hào)分隔的定義方式,基本形式如下:
方法二:列表也可以通過list對(duì)象來創(chuàng)建,基本形式如下:list()#創(chuàng)建一個(gè)空列表list(iterable)#創(chuàng)建一個(gè)空列表,iterable為列舉對(duì)象元素3.7.3創(chuàng)建元組的創(chuàng)建采用括號(hào)中逗號(hào)分隔的定義方式,其中,圓括號(hào)可以省略?;拘问饺缦拢?/p>
或者為:注意當(dāng)元組中只有一個(gè)項(xiàng)目時(shí),其后面的逗號(hào)可以省略,否則,Python解釋器會(huì)把(x1)當(dāng)做x1元組也可以通過tuple對(duì)象來創(chuàng)建,基本形式如下:tuple()#創(chuàng)建一個(gè)空元組tuple(iterable)#創(chuàng)建一個(gè)空元組,iterable為列舉對(duì)象元素3.7.4查詢列表和元組都支持查詢(訪問)其中的元素。在Python中,序列的每一個(gè)元素被分配一個(gè)位置編號(hào),稱為索引(index)。第一個(gè)元素的索引是0,序列中的元素都可以通過索引進(jìn)行訪問。一般格式為:
序列名[索引]列表與元組的正向索引查詢:list_1=[1,2,3]print(list_1[1])tuple_1=((1,2,3))print(tuple_1[0])運(yùn)行結(jié)果為:3.7.4查詢另外,Python序列還支持反向索引(負(fù)數(shù)索引)。這種索引方式可以從最后一個(gè)元素開始計(jì)數(shù),即倒數(shù)第一個(gè)元素的索引是-1。這種方法可以在不知道序列長度的情況下訪問序列最后面的元素。列表與元組的反向索引查詢:list_1=[1,2,3]print(list_1[-1])tuple_1=((1,2,3))print(tuple_1[-2])運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:3.7.5修改對(duì)于修改操作,由于元組的不可變性,元組的數(shù)據(jù)不可以被改變,除非將其改為列表類型。對(duì)于列表來說,要修改其中某一個(gè)值,可以采用索引的方式,這種操作也叫作賦值。
例如: list_1=[1,2,3] list_1[1]=9 print(list_1)
運(yùn)行結(jié)果為:3.7.5修改append函數(shù)的作用是在列表末尾添加一個(gè)元素extend函數(shù)用于將一個(gè)列表添加到另一個(gè)列表的尾部由于元組的不可變性,我們不能改變元組的元素,但是可以將元組轉(zhuǎn)換為列表進(jìn)行修改,例如:tuple_1=[1,2,3]list_1=list(tuple_1)#元祖轉(zhuǎn)列表list_1[1]=8tuple_1=tuple(list_1)#列表轉(zhuǎn)元祖print(tuple_1)運(yùn)行結(jié)果為:3.7.5修改方法解釋說明s.append(x)把對(duì)象x追加到列表s的尾部s.clear()刪除所有元素s.copy()復(fù)制列表s.extend(t)把序列t附加到列表s的尾部s.insert(i,x)在下標(biāo)i的位置插入對(duì)象xs.pop([i])返回并移除下標(biāo)i位置的對(duì)象,省略i時(shí)為最后的對(duì)象s.remove(x)移除列表中第一個(gè)出現(xiàn)的xs.remove()列表反轉(zhuǎn)s.sort()列表排序,默認(rèn)為升序列表對(duì)象的主要操作方法3.7.6刪除元素的刪除操作也只適用于列表,而不適用于元組,同樣,將元組轉(zhuǎn)換為列表就可以進(jìn)行刪除操作。從列表中刪除元素很容易,可以使用del、clear、remove等操作del不僅可以刪除某個(gè)元素,還可以刪除對(duì)象clear會(huì)刪除列表中所有的元素remove(x)操作會(huì)將列表中出現(xiàn)的第一個(gè)x刪除3.8Numpy數(shù)組Numpy是Python編程語言的擴(kuò)展,它增加了對(duì)大型多維數(shù)組和矩陣的支持,以及對(duì)這些數(shù)組進(jìn)行操作的大型高級(jí)數(shù)學(xué)函數(shù)庫的支持。在Numpy中,數(shù)組的類型為ndarray(n維數(shù)組),所有元素必須具有相同的類型3.8.1Numpy.array在OpenCV中,很多PythonAPI是基于NumPy的,Numpy是Python的一種開源數(shù)值計(jì)算擴(kuò)展,用來處理多維數(shù)組。例1:使用Numpy生成一個(gè)灰度圖像,其中的像素均為隨機(jī)數(shù)。importcv2ascvimportnumpyasnppicturegray=np.random.randint(0,256,size=[256,256],dtype=np.uint8)cv.imshow("picturegray",picturegray)cv.waitKey()cv.destroyAllWindows()3.8.1Numpy.array例2:使用Numpy生成一個(gè)彩色圖像,其中的像素均為隨機(jī)數(shù)。importcv2ascvimportnumpyasnppicturecolor=np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)cv.imshow("picturecolor",picturecolor)cv.waitKey()cv.destroyAllWindows()3.8.2創(chuàng)建Numpy數(shù)組使用numpy中的函數(shù)構(gòu)建數(shù)組使用arange()函數(shù)構(gòu)建數(shù)組importnumpyasnpa1=np.arange(12) #產(chǎn)生0到11一維數(shù)組print(a1) #[01234567891011]print(a1.shape) #(12,)使用zeros()函數(shù)創(chuàng)建一個(gè)特定大小、全部填充為0的數(shù)組importnumpyasnpa2=np.zeros(9) #產(chǎn)生全是0的一維數(shù)組print(a2) #[000000000]print(a2.shape) #(9,)3.8.2創(chuàng)建Numpy數(shù)組2從Python列表中創(chuàng)建數(shù)組importnumpyasnplist1=[2,6,7,8,1]b1=np.array(list1)print(b1)#[2,6,7,8,1]print(b1.shape)#(5,)3.8.3Numpy數(shù)組切片在Python中,可以使用像m:n這樣的表達(dá)式來選擇一系列元素,選擇的是以m開頭并以n-1結(jié)尾的元素(注意不包括第n個(gè)元素)。切片m:n也可以更明確地寫為m:n:1,其中數(shù)字1表示應(yīng)該選擇m和n之間的每個(gè)元素。要從m和n之間每兩個(gè)元素選擇一個(gè),請(qǐng)使用m:n:2,p個(gè)元素,則使用m:n:p一維數(shù)組(冒號(hào):),通過冒號(hào)分隔切片參數(shù)start:stop:step來進(jìn)行切片操作。一個(gè)參數(shù):a[i] 返回與該索引相對(duì)應(yīng)的單個(gè)元素兩個(gè)參數(shù):b=a[i:j] 表示復(fù)制a[i]到a[j-1],以生成新的list對(duì)象三個(gè)參數(shù):b=a[i:j:s] 三個(gè)參數(shù)時(shí),i、j、s為索引,通過冒號(hào)分隔切片參數(shù)start:stop:step來進(jìn)行切片操作3.9.1字典的創(chuàng)建字典就是用大括號(hào)括起來的“關(guān)鍵字:值”對(duì)的集合體,每一個(gè)“關(guān)鍵字:值”對(duì)被稱為字典的一個(gè)元素。創(chuàng)建字典的一般格式為:字典名={[關(guān)鍵字1:值1[,關(guān)鍵字2:值2,……,關(guān)鍵字n:值n]]}其中,關(guān)鍵字與值之間用“:”分隔,元素與元素之間用逗號(hào)分隔。字典中關(guān)鍵字必須是唯一的,值可以不唯一。字典的元素是列表、元祖和字典另外,在Python中還有一種創(chuàng)建字典的方法,即dict函數(shù)法3.9.2字典的常規(guī)操作訪問在Python中可以通過關(guān)鍵字進(jìn)行訪問,一般格式為:字典[關(guān)鍵字]例如:
運(yùn)行結(jié)果為:dict_1={'name':'LiHua','score':95}print(dict_1['score'])3.9.2字典的常規(guī)操作更新在Python中更新字典的格式一般為:字典名[關(guān)鍵字]=值如果在字典中已經(jīng)存在該關(guān)鍵字,則修改它;如果不存在,則向字典中添加一個(gè)這樣的新元素。
dict_2={'name':'LiHua','score':95}dict_2['score']=80 運(yùn)行結(jié)果為:print(dict_2)dict_2['agr']=19print(dict_2)3.9.2字典的常規(guī)操作刪除在Python中刪除字典有很多種方法,這里介紹del和clear方法。del方法的一般格式如下:del字典名[關(guān)鍵字] #刪除關(guān)鍵字對(duì)應(yīng)的元素del字典真名 #刪除整個(gè)字典字典的刪除如下所示:dict_3={'name':'LiHua','score':95,'age':19}deldict_3['score']print(dict_3)dict_3.clear()print(dict_3)運(yùn)行結(jié)果為:3.9.2字典的常規(guī)操作方法說明d.copy()字典復(fù)制,返回d的副本d.clear()字典刪除,清空字典d.pop(key)從字典d中刪除關(guān)鍵字key并返回刪除的值d.popitem()刪除字典的“關(guān)鍵字:值”對(duì),并返回關(guān)鍵字和值構(gòu)成的元祖d.fromkeys()創(chuàng)建并返回一個(gè)新字典d.keys()返回一個(gè)包含字典所有關(guān)鍵字的列表d.values()返回一個(gè)包含字典所有值的列表d.items()返回一個(gè)包含字典所有“關(guān)鍵字:值”對(duì)的列表len()計(jì)算字典中所有“關(guān)鍵字:值”對(duì)的數(shù)目字典的其他操作方法3.9.3字典的遍歷對(duì)字典進(jìn)行遍歷一般會(huì)使用for循環(huán),但建議在訪問之前使用in或notin判斷字典的關(guān)鍵字是否存在。字典的遍歷操作如下所示。dict_4={'name':'LiHua','score':95,}forkeyindict_4.keys():print(key,dict_4[key]) forvalueindict_4.values(): print(value) foritemindict_4.items():print(item) 運(yùn)行結(jié)果為:3.10.1函數(shù)的定義和調(diào)用函數(shù)是帶有名字的代碼塊,用于完成具體的任務(wù)在Python中,函數(shù)是一種運(yùn)算或處理過程,即將一個(gè)程序段完成的運(yùn)算或處理過程放在一個(gè)自定義函數(shù)中完成。這種操作首先要定義一個(gè)函數(shù),然后可以根據(jù)實(shí)際需要多次調(diào)用它,而不用再次編寫,大大減少了工作量。函數(shù)的定義
Python函數(shù)定義的一般格式為:def函數(shù)名([形式參數(shù)]):
函數(shù)體3.10.1函數(shù)的定義和調(diào)用有了函數(shù)的定義,在之后的編程中,只要用到該函數(shù)都可以直接調(diào)用它。調(diào)用函數(shù)的一般格式為:函數(shù)名(實(shí)際參數(shù)表)如果定義的函數(shù)有形式參數(shù),那么可以在調(diào)用函數(shù)時(shí)傳入實(shí)際參數(shù),當(dāng)然,如果沒有,可以不傳,只保留一個(gè)空括號(hào)。但需要注意的是,無論有沒有參數(shù)的傳遞,函數(shù)名后的括號(hào)都不可以省略。3.10.1函數(shù)的定義和調(diào)用例:根據(jù)海倫公式計(jì)算三角形的面積。importmathdefangle_area(a,b,c):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合作協(xié)議(15篇)
- 青春勵(lì)志演講稿2024(33篇)
- 2024-2025學(xué)年山東省德州市臨邑博文中學(xué)高一上學(xué)期第三次月考?xì)v史試卷
- 2025年公共衛(wèi)生間設(shè)施改善施工合同樣本
- 2025年雙方解除購銷合同協(xié)議的分析
- 2025年采購合作合同標(biāo)準(zhǔn)文本
- 2025年儲(chǔ)藏室租賃合同樣本
- 2025年個(gè)人資金周轉(zhuǎn)借款協(xié)議書
- 2025年節(jié)能、高效干燥設(shè)備項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模稿
- 2025年信息技術(shù)租賃回購協(xié)議書
- 中考語文名著復(fù)習(xí):《駱駝祥子》閱讀卡片1-24章
- 藥品監(jiān)管知識(shí)培訓(xùn)課件
- 過松源晨炊漆公店(其五)課件
- 安全事故案例圖片(76張)課件
- 預(yù)應(yīng)力錨索施工方案
- 豇豆生產(chǎn)技術(shù)規(guī)程
- MES運(yùn)行管理辦法
- 中藥炮制學(xué)教材
- 現(xiàn)場快速反應(yīng)跟蹤管理看板
- 框架核心筒結(jié)構(gòu)辦公樓施工測量方案(12頁)
- 常見腫瘤AJCC分期手冊第八版(中文版)
評(píng)論
0/150
提交評(píng)論