主頁 > 軟體設計 > 工業機器視覺系統相機如何選型?

工業機器視覺系統相機如何選型?

2021-04-11 10:46:17 軟體設計

目錄

1、影像基礎知識

1.1、影像型別

1.2、影像分別率、系統解析度和像素解析度

1.3、視場

2、影響成像質量的因素

3、成像系統模型

4、鏡頭系統簡化模型

5、鏡頭與相機的選型

5.1、鏡頭的選型

5.1.1、鏡頭解析度

5.1.2、鏡頭成像要素

5.1.3、普通鏡頭和遠心鏡頭

5.2、相機的選型

5.2.1、CCD/CMOS

5.2.2、模擬相機和數字相機

6、總結


數字影像是機器視覺系統作業的前提和基礎,工業機器視覺系統把成像子系統的信號轉換為反映現實場景的二維數字影像,并對其進行分析、處理,得出各種指令來控制機器的動作,

1、影像基礎知識

影像是指所有具有視覺效果的畫面,它是對客觀物件的一種相似的、生動的描述,

根據色彩不同,影像可以分為彩色影像和黑白(灰度)影像,通過對人眼結構及特性的研究發現,人眼對紅(R)、綠(G)、藍(B)3種顏色特別敏感,不同強度的RGB混合后刺激視網膜上的錐狀體,使人眼可以感知自然界中的幾乎所有色彩,反過來,自然界中的色彩可以分解為不同強度RGB基本色的組合,這種表示色彩的方式稱為RGB顏色模型或RGB色彩空間,如下圖所示:

相應地,也可以將彩色影像的研究分解為對RGB分量所對應的灰度影像的研究,

1.1、影像型別

影像根據記錄方式的不同可分為模擬影像和數字影像兩大類,

如果將灰度影像看作二維空間上的光強度函式f (x,y),則模擬灰度影像就是對該空間上光強度幅值f變化的連續記錄,當(x,y)和f為離散、有限的數值時,光強度幅值f的變化將以類似矩陣的形式被記錄,此時所記錄的影像就稱為數字影像,而所記錄的值對應在影像中的每個點稱為像素(pixel),橫向及縱向像素的個數稱為影像的解析度(image resolution),如果是彩色數字影像,則在計算機中需要記錄每個像素對應的RGB分量,如下圖所示:

工業機器視覺系統中提及的影像通常就指數字影像,

1.2、影像分別率、系統解析度和像素解析度

影像解析度、系統解析度和像素解析度是機器視覺系統設計時較常見的引數,它們通常與客戶對機器視覺系統的需求關系最為密切,是選擇相機和鏡頭的重要依據,

  • 影像解析度指影像中存盤的資訊量,是每英寸影像內有多少個像素點,解析度的單位為PPI(Pixels Per Inch),通常叫做像素每英寸,影像解析度一般被用于PS中,用來改變影像的清晰度,
  • 系統解析度指成像系統可以識別出監測目標的最小細節或最小特征,諸如“要求系統能檢測0.1mm的目標"、"要求系統測量精度達到0.01mm"之類的要求一般都和系統解析度相關,
  • 像素解析度指為了表示檢測目標所需要的像素數,一般情況下,可以根據客戶對檢測目標中最小特征的要求來確定最小像素解析度,如果將整個影像看作周期為最小特征大小的周期信號,則根據奈奎斯特采樣定律,必須對信號每個周期采樣2個點以上,才能完整恢復該信號,因此如果客戶沒有特別要求,常用至少兩個像素來代表檢測目標中的最小特征,這可被看作是影像傳感器的奈奎斯特定律,

影像傳感器應具備的最小像素解析度常通過下面的公式計算:

  • Rmin為最小像素解析度,
  • Lmax為檢測目標的最大長度,
  • lmin為檢測目標的最小特征長度(視覺系統的解析度),
  • pmin為表示最小特征的像素數,

在無特別要求時,pmin=2,如果客戶要求使用多于2像素來表示最小特征,則最小解析度將適當增加,

1.3、視場

視場(Field of View,FOV)指成像系統中影像傳感器可以監測到的最大區域,在機器視覺系統設計時,考慮到一般都會使被檢測目標盡量填滿整視場,因此常用視場大小代替目標的最大長度Lmax來計算視覺系統的像素解析度,如下圖(a)所示,表示被檢測目標在水平方向上占據整個視場,而圖(b)表示目標未填滿視場,

如果橫縱方向上視場大小為[FOVh,FOVv],檢測目標的最小特征的大小為[Ih,lv],則影像傳感器應具有的最小像素解析度為:

成像系統視場的大小可以通過研究其成像規律得知,目前,機器視覺系統常用使用配備各種鏡頭系統的工業CCD/CMOS相機作為成像系統,透鏡成像示意圖如下所示:

鏡頭系統一般使用透鏡系統,其成像遵循高斯成像公式:

  • f為透鏡焦距(focal length,凸正凹負),
  • u為物距,
  • v為像距(實正虛負),如下圖所示,通常將像距與物距的比值定義為透鏡的放大率M:

2、影響成像質量的因素

數字影像是對成像系統輸出的信號進行數字化后的結果,成像系統反映真實場景的性能和質量直接決定整個機器視覺系統的性能,

影響機器視覺成像系統成像質量的因素主要包括:光源(Illumination)、系統解析度(System Resolution)、像素解析度(Pixel Resolution)、對比度(Contrast)、景深(Depth of Field,DOF)、投影誤差(Perspective Error)和鏡頭畸變(Lens Distortion),

而這些因素(引數)卻直接或間接地由硬體選型和安裝方式決定,

3、成像系統模型

工業或研究領域的成像系統多種多樣,常見的有工業CCD/CMOS相機、工業顯微鏡、生物顯微鏡、X射線成像儀、紅外成像儀、熱成像儀等,無論這些成像系統的原理有多復雜,都可被抽象為下圖所示的簡化模型,

千差萬別的成像系統對現實世界中的可見光、紅外、X射線、熱量等實施某種轉換T (x,y),將物理量轉換為電信號,再經影像采集設備采樣、量化后生成數字影像,

4、鏡頭系統簡化模型

由于對機器視覺成像系統來說,相機鏡頭到所檢測目標的距離(稱為作業距離,相當于物距)相對于相機焦距可近似認為是無窮遠,若將其帶入高斯成像公式,可得出此時相機像距近似等于其焦距,也就是說相機成像在焦平面上,據此,可以將鏡頭系統抽象為類似小孔成像的簡化模型,如下圖所示:

根據該簡化模型,可以得出機器視覺系統影像傳感器尺寸S(傳感器平面某個方向上的長度)、視場FOV、作業距離WD及鏡頭焦距f之間的約束關系:

此時,透鏡的放大率M則可以等效為:

如果進一步將前述最小像素解析度的計算公式與該約束關系結合(用視場FOV代替目標的最大長度Lmax),則可以得出以下成像系統簡化模型的引數約束關系:

該公式所顯示的引數間的相互約束關系是機器視覺系統設計和搭建部署時系統設計和設備選型的基礎,

實際中傳感器尺寸S可以通過查詢相機的技術規范獲知,焦距f、作業距離WD直接由所選擇的鏡頭決定,在已知這些引數時,可以很容易地計算出視場FOV,相機的像素解析度由其有效像素區域(即傳感器尺寸)決定,通常用橫向和縱向有效像素數來表示(如768×576),為機器視覺系統所選擇的相機像素解析度,必須大于或等于按照專案需求(包括對最小特征尺寸lmin和用于表示最小特征的像素數pmin的要求)計算出的最小像素解析度Rmin,下圖進一步顯示了公式中涉及的引數含義:

5、鏡頭與相機的選型

工業機器視覺系統中,鏡頭與相機的選型非常重要,如果事先既未確定相機又未確定鏡頭,則需要先了解專案作業環境對相機安裝(作業距離)、要檢測的最大范圍(視場)、最小特征的尺寸和代表它的像素數的要求,然后根據這些條件來計算應使用何種鏡頭或相機,下圖為機器視覺專案選擇鏡頭和相機的簡化流程:

?

無論何種情況,都是基于成像系統簡化模型的引數約束關系和專案需求獲取最優搭配的程序,

5.1、鏡頭的選型

如果將機器視覺系統與人類視覺系統進行類比,那么相機的傳感器芯片就如同人的視網膜,而鏡頭則相當于眼睛內的晶狀體,各種現實世界中的影像都通過這個“晶狀體"對光線進行變換(匯聚)后,投射在"視網膜”上,

機器視覺成像系統使用的鏡頭通常由凸透鏡和凹透鏡結合設計而成,

  • 單個凸透鏡或凹透鏡是進行光束變換的基本單元,凸透鏡可對光線進行匯聚,也稱為會聚透鏡或正透鏡,
  • 凹透鏡對光線具有發散作用,也稱為發散透鏡或負透鏡,

兩種透鏡成像均遵循高斯成像公式,通過把它們結合使用,在校正各種像差和失真后,設計出具有不同結構和技術指標的復合鏡頭系統,與鏡頭相關的主要技術引數有鏡頭解析度、焦距、最小作業距離、最大像面、視場/視場角、景深、光圈和相對孔徑及其安裝介面型別等,

5.1.1、鏡頭解析度

鏡頭的空間解析度、相機像素解析度和相機的空間解析度、系統空間解析度和系統解析度是幾個極容易混淆的概念,

  • 鏡頭空間解析度表示它的空間極限分辨能力,常用拍攝正弦光柵的方法來測驗,如果從信號處理的角度來看,任何非周期影像信號都可以被看作周期影像(或子影像)的疊加,而任何周期影像又都可以被分解為亮度按正弦變化的圖形的疊加,因此,通過研究鏡頭對亮度按正弦變化圖形的反應,就可以研究鏡頭的性能和解析度,正弦光柵就是亮度按照正弦變化的影像,如下圖所示:

?

其中棚格黑白相間,可把黑色看作正弦波谷,把白色看作正弦波峰,正弦光柵中一對相鄰黑線和白線稱為一個線對(line pair,lp),它所占據的長度被定義為正弦光柵的空間周期,單位是毫米,正弦光柵空間周期的倒數就是空間頻率(spatial frequency),它表示每毫米內的線對數,單位是線對/毫米(Ip/mm),通過拍攝正弦光柵,研究鏡頭每毫米內能分辨的線對數,就可以獲知鏡頭的解析度,鏡頭解析度越高,則說明其每毫米內能分辨的線對數越多,對于機器視覺系統設計來說,只需要查詢鏡頭引數表即可獲知其解析度,

  • 相機像素解析度是指相機傳感器上縱橫方向上的像素數,

  • 相機的空間解析度卻表示它的空間極限分辨能力,根據前述相機奈奎斯特定律,相機要能恢復空間影像,必須至少使用2個像素來表示影像的最小單元,如果用研究鏡頭的空間解析度類似的方法來研究相機空間解析度,則正弦光柵中的每對線需要至少2個像素來表示,由此,可以通過像素的物理大小來計算相機的空間解析度,例如,某相機的像素物理大小為8.4um×9.8um,則相機在橫縱方向上的空間解析度為:

?

  • 對于鏡頭和相機構成的成像系統來說,整個系統的空間解析度取鏡頭和相機空間解析度的最小值,

5.1.2、鏡頭成像要素

影響鏡頭成像的因素包括:焦距、最大像面、視場/視場角、漸暈、景深等方面,

  • 焦距是指無限遠處目標在鏡頭的像方所成像位置到像方主面的距離,焦距體現了鏡頭的基本特性:即在不同物距上,目標的成像位置和成像大小由焦距決定,市面上常見的鏡頭焦距大小包括6mm、8mm、12.5mm、25mm以及50mm等,對機器視覺成像系統來說,作業距離就是成像系統中所說的物距,由于視覺成像系統模型的假定條件是作業距離相對于鏡頭焦距為無限遠,因此一般在鏡頭的產品引數中都會說明其最小作業距離,當相機在小于該最小作業距離的環境下作業時,就會出現影像失真,影響機器視覺系統的可靠性,
  • 最大像面是指鏡頭能支持的最大清晰成像范圍(常用可觀測范圍的直徑表示),超出這個范圍所成的像對比度會降低而且會變得模糊不清,最大像面是由鏡頭本身的特性決定的,它的大小也限定了鏡頭可支持的視場的大小,
  • 鏡頭的視場就是鏡頭最大像面所對應的觀測區域,視場角是視場的另一種表述方法,類似人眼“視角"的意義,視場角等于最大像面對應的目標張角,通常,在遠距離成像系統中,例如望遠鏡、航拍鏡頭等場合,鏡頭的成像范圍均用視場角來衡量,而近距離成像中,常用實際物面的直徑(即幅面)來表示,

由于機器視覺成像系統中的傳感器多制作成長方形或正方形,因此鏡頭的最大像面常用它可以支持的最大傳感器尺寸(單位為英寸,1英寸約為2.54cm)來表示,相應地,鏡頭的視場也可以用最大像面所對應的橫向和縱向觀測距離或視場角來表示,如下圖所示:

?

對于同一相機來說,有公式如下:

?

  • S為相機傳感器在二維平面某個維度上的大小,
  • f為焦距,
  • 2w為視場角,

由于相機傳感器尺寸固定,因此視場角也可以被看作焦距的另一種表達,因此在生活中,人們常按照鏡頭的視場角對其進行分類,如望遠鏡(6~12°)、遠距攝像鏡頭(120~46°) .標準鏡頭(46~65°)、廣角鏡頭(650~100°)及超廣角鏡頭( >100°)等,

一般來說,鏡頭的失真會隨著焦距的減小(或視場角的增大)而增大,因而在構建機器視覺系統(特別是精確測量系統)時,一般都不會選擇焦距小于8mm或視場角很大的鏡頭,

鑒于鏡頭能清楚成像的范圍受到最大像面的限制,因此在為相機選配鏡頭時,要特別注意相機傳感器與鏡頭可支持最大傳感器之間的關系,

一般來說,必須確保所選鏡頭可支持的最大傳感器尺寸大于或等于相機的傳感器尺寸,這樣做的另一個主要原因是為了避免漸暈(Vignetting)現象的發生,

如圖下圖(c)所示,如果相機傳感器的尺寸大于鏡頭可支持的最大傳感器尺寸時,所生成的影像就會形成類似隧道的效果,該現象稱為漸暈現象,漸暈現象會增加機器視覺系統的開發難度,因此應盡量避免,下圖中的(a) 、(b)分別顯示了在鏡頭可支持的最大傳感器尺寸等于或大于相機的傳感器尺寸時視覺系統的成像情況,這兩種情況下機器視覺系統均能正常作業,

?

景深也是一個與鏡頭和成像系統關系十分密切的引數,它是指在鏡頭前沿著光軸所測定的能夠清晰成像的范圍,如下圖所示:

?

在成像系統的焦點前后,物點光線呈錐狀開始聚集和擴散,點的影像沿光軸在焦點前后逐漸變得模糊,形成一個擴大的圓,這個圓稱為彌散圓(circle of confusion),若這個圓形影像的直徑足夠小(離焦點較近),成像會足夠清晰,如果圓形再大些(遠離焦點),成像就會顯得模糊,當在某個臨界位置所成的像不能被辨認時,則該圓就被稱為容許彌散圓(permissible circle of confusion),焦點前后兩個容許彌散圓之間的距離稱為焦深,在目標物一側,焦深對應的范圍就是景深,

?

  • \delta為容許彌散圓的直徑,
  • f為鏡頭焦距,
  • D為對焦距離,
  • F為鏡頭的拍攝光圈(aperture)值,光圈值F常用鏡頭焦距和鏡頭入瞳的有效直徑Din的比值來表示,它是鏡頭相對孔徑Dr的倒數,即:

從景深公式可以看出,后景深要大于前景深,而且景深一般隨著鏡頭的焦距、光圈值、對焦距離(可近似于拍攝距離)的變化而變化,在其他條件不變時:

  1. 光圈越大(光圈值F越小),景深越小;光圈越小(光圈值F越大),景深越大,
  2. 鏡頭焦距越長,景深越小;焦距越短,景深越大,
  3. 距離越遠,景深越大;距離越近,景深越小,

在檢測目標的高度在一定范圍內可能變化的情況下,選擇合適的景深,對于機器視覺系統的穩定性尤為重要,

5.1.3、普通鏡頭和遠心鏡頭

普通鏡頭與人眼一樣,觀測物體時都存在"近大遠小”的現象,如下圖 (a)所示,也就是說,雖然物體在景深范圍內可以清晰成像,但是其成像卻隨著物距增大而縮小,如果被測目標不在同一物面上(如有厚度的物體),則會導致影像中的物體變形,另一方面,相機傳感器的感光面通常并不容易被精確調整到與鏡頭的像平面重合(調焦不準),由此也會產生誤差,為此,人們設計了遠心鏡頭,

遠心鏡頭(telecentric lens)有較大的景深,且可以保證景深范圍內任何物距都有一致的影像放大率,如下圖 (b)所示,多數機器視覺在測量、缺陷檢測或者定位等應用上,對物體成像的放大倍率沒有嚴格要求,一般只要選用畸變較小的鏡頭,就可以滿足要求,但是,當機器視覺系統需要檢測三維目標(或檢測目標不完全在同一物面上)時,就需要使用遠心鏡頭,

例如,要檢測厚度大于視場直徑的1/10的物體,或需要檢測帶孔徑、三維的物體等,一般來說,如果被測目標物面變化范圍大于視場直徑的1/10時,就需要考慮使用遠心鏡頭,它可以確保測驗程序中物距在一定范圍內改變時,系統放大倍數保持不變,從而保證系統的測量精度,

5.2、相機的選型

5.2.1、CCD/CMOS

早期的相機多基于顯像管成像,隨著集成電子技術和固體成像器件的發展,以電荷耦合器件(Charge Coupled Device,CCD)為傳感器的相機,因其與真空管相比具有無灼傷、無滯后、作業電壓及功耗低等優點而大行其道,CCD于1969年由美國貝爾實驗室的Willard S.Boyle和George E.Smith發明,它能夠將光線變為電荷存盤起來,并隨后可在驅動脈沖的作用下將存盤的電荷轉移到與之耦合的區域,人們正是利用它的這一特點發明了各種各樣的CCD成像設備,

CCD實際上可以被看作由多個MOS (Metal Oxide Semiconductor)電容組成,在P型單晶硅的襯底上通過訊訓形成一層厚度約為100~150nm的SiOz絕緣層,再在SiO,表面按一定層次蒸鍍一層金屬或多晶硅層作為電極,最后在襯底和電極間加上一個偏置電壓(柵極電壓),即可形成一個MOS電容器,如下圖所示:

CMOS (Complementary Metal Oxide Semiconductor)影像傳感器的開發最早出現在20世紀70年代初,20世紀90年代初期,隨著超大規模集成電路(VLSI)制造工藝技術的發展,CMOS影像傳感器得到迅速發展,CMOS影像傳感器的光電轉換原理與CCD影像傳感器相同,二者的主要差異在于電荷的轉移方式上,CCD影像傳感器中的電荷會被逐行轉移到水平移位暫存器,經放大器放大后輸出,由于電荷是從暫存器中逐位連續輸出的,因此放大后輸出的信號為模擬信號,在CMOS傳感器中,每個光敏元的電荷都會立即被與之鄰接的一個放大器放大,再以類似記憶體尋址的方式輸出,如下圖所示:

因此CMOS芯片輸出的是離散的數字信號,之所以采用兩種不同的電荷傳遞方式,是因為CCD是在半導體單晶硅材料上集成的,而CMOS則是在金屬訊訓物半導體材料上集成的,工藝上的不同使得CCD能保證電荷在轉移時不會失真,而CMOS則會使電荷在傳送距離較長時產生噪聲,因此使用CMOS時,必須先對信號放大再整合輸出,

CCD和CMOS影像傳感器比較,如下表所示:

5.2.2、模擬相機和數字相機

CCD/CMOS芯片完成光電轉換后,其輸出為模擬或數字電信號,通常該信號還要被進一步放大、矯正,添加同步、調制或采樣編碼,生成符合各種標準的視頻信號后才正式輸出,理論上講,相機的輸出信號可以是任意自定義的形式,但是,由于電視系統先于機器視覺發展多年,若以電視系統中已廣泛使用的視頻方式輸出信號,不僅更便于信號的傳輸,還能最大限度地利用各種現有的成熟軟硬體技術,因此除了少數相機輸出非標準信號外,大多數相機的輸出都是模擬或數字視頻信號,機器視覺相機也因此根據其輸出信號的形式分為模擬相機和數字相機兩大類,

模擬相機的輸出信號通常被加工為可以支持隔行掃描(interlacing scan)顯示的視頻信號,以便其能與傳統電視或視頻監控等系統兼容,而多數數碼相機的輸出則直接按照支持逐行掃描(progressive scan)的方式進行編碼,我們知道,支持逐行掃描的視頻信號將每一幀影像按順序逐行連續編碼,傳送到顯示設備后,也會被逐行以掃描的方式顯示,支持逐行掃描的信號資料量很大,在電視技術發展的初期要通過天線傳輸的此類信號極其困難,為了能減少信號的資料量,同時不影響影像的視覺效果,人們提出了隔行掃描的方法,

與模擬相機不同,數字相機會通過其內部集成的A/D轉換器將影像轉換為數字信號,并編碼為數字視頻后,按照RS-422、LVDS (RS-644) 、 FireWire 1394、USB、Camera Link或千兆以太網GigE(Gigabit Ethernet)等標準傳輸,相機中的A/D轉換器位數決定了它能從暗到亮識別的灰度級數,常用位深度(bit depth)來表述,如8位、10位、12位或16位等,

對于彩色相機來說,相機的位深度決定了RGB各色彩分量中灰度資料的豐富程度,也就決定了相機能識別或表示的顏色數量,對黑白相機來說,位深度則直接決定了相機可以識別的灰度級數,

例如,一個8位的黑白數字相機最高能夠檢測0(暗)~256(亮)個灰度級,而一個12位相機則可以檢測0~4096個灰度級,如果要檢測的灰度級間隔比較細,則應盡量使用位數高的相機,例如,若要檢測213和214灰度級之間的灰度級,則應使用超過8位的相機,

數字視頻信號多采用逐行掃描方式代替隔行掃描,且用幀有效(frame enable)和行有效(line enable)信號代替了模擬視頻信號中的場同步和行同步信號,來精確控制每行和每幀影像,每行中的單個像素都以獨立數字信號的形式,在像素時鐘的控制下傳送,由于數字視頻信號的同步信號(幀有效、行有效和像素時鐘)與影像資料并沒有像模擬視頻信號那樣混合在一起傳輸,因此數字視頻信號不存在模擬視頻信號的像素抖動問題,此外,數字視頻相對于模擬視頻有較高的解析度和幀率、較多的灰度等級、高傳輸速度、較低的信號衰減和噪聲等優點,

6、總結

為機器視覺系統選擇相機,是一個綜合鏡頭和影像采集卡與相機的介面以及相機自身引數的逐步篩選的程序,按道理來說,第一步應該確定相機與鏡頭和影像采集卡的物理介面,以便所選的相機可以與鏡頭和采集卡正常連接,但是,由于目前相機與鏡頭和電腦/影像采集卡之間的介面都趨于標準化,這就使得我們可以直接從專案對機器視覺系統的精度要求入手來選擇相機,

相機選擇并無固定流程可循,根據經驗,應主要從以下幾個方面進行(暫不考慮預算)︰

  • 根據專案要求和機器視覺成像系統模型,確定相機的傳感器尺寸及解析度,
  • 確定相機的輸出方式及標準(模擬/數字,色彩,速率等),
  • 確定相機物理介面及電器介面,
  • 確定相機其他性能指標,

本文參考:影像處理、分析與機器視覺(基于LabVIEW),強烈推薦閱讀~

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274775.html

標籤:其他

上一篇:程式員應該如何才能買房?

下一篇:一起學Docker吧!Docker入門介紹篇 - 你還沒聽過虛擬容器化技術嗎?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more