當前位置:首頁 » 操作系統 » 漫水填充演算法

漫水填充演算法

發布時間: 2022-07-02 06:47:35

❶ 如何識別圖片撲克牌數字導入表格

您可以通過OpenCV識別圖片撲克牌數字導入表格。
完成一張撲克牌的識別主要步驟有:從攝像頭獲取撲克牌圖片,二值化後查找圖片最外層輪廓,並截取出輪廓內部的圖片,即拍攝的撲克牌。使用霍夫線檢測和旋轉來標定撲克牌位置並截取,比通過查找輪廓標定更准確,對背景環境要求也更低。使用漫水填充演算法把撲克牌四周的多餘的背景變成和撲克牌牌面背景一樣的白色像素。此時圖片只剩白色背景以及黑色的撲克牌數字、花色、頭像等,再查找最左上角輪廓並截取出,這就是撲克牌的數字。從餘下的圖片中再查找最左邊的輪廓並截取出,這就是撲克牌的花色。可以將數字和花色都預先保存下來,進行一些處理,放到 KNN 里進行訓練得到預測模型。得到模型後就可以從1開始一套走下來自動預測識別撲克牌了。
OpenCV是一個基於Apache2.0許可(開源)發行的跨平台計算機視覺和機器學習軟體庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的介面,實現了圖像處理和計算機視覺方面的很多通用演算法。

❷ 微軟操作系統:自帶的畫圖工具填充是用什麼演算法實現的

基於掃描線的洪水填充演算法
洪水填充演算法 慢在需要檢查周邊4個點,而如果帶上方向,則剛處理過的點是不需要再判斷的了
如果維持演算法的一致,那麼步長可以增加到 3

如果採用多線程處理,則每個線程只處理一根掃描線,且只檢查前進方向的一個點

❸ cvfitline用的什麼演算法

1、cvLoadImage:將圖像文件載入至內存;
2、cvNamedWindow:在屏幕上創建一個窗口;
3、cvShowImage:在一個已創建好的窗口中顯示圖像;
4、cvWaitKey:使程序暫停,等待用戶觸發一個按鍵操作;
5、cvReleaseImage:釋放圖像文件所分配的內存;
6、cvDestroyWindow:銷毀顯示圖像文件的窗口;
7、cvCreateFileCapture:通過參數設置確定要讀入的AVI文件;
8、cvQueryFrame:用來將下一幀文件載入內存;
9、cvReleaseCapture:釋放CvCapture結構開辟的內存空間;
10、cvCreateTrackbar:創建一個滾動條;
11、cvSetCaptureProperty:設置CvCapture對象的各種屬性;
12、cvGetCaptureProperty:查詢CvCapture對象的各種屬性;
13、cvGetSize:當前圖像結構的大小;
14、cvSmooth:對圖像進行平滑處理;
15、cvPyrDown:圖像金字塔,降采樣,圖像縮小為原來四分之一;
16、cvCanny:Canny邊緣檢測;
17、cvCreateCameraCapture:從攝像設備中讀入數據;
18、cvCreateVideoWriter:創建一個寫入設備以便逐幀將流寫入文件;
19、cvWriteFrame:逐幀將流寫入文件;
20、cvReleaseVideoWriter:釋放CvVideoWriter結構開辟的內存空間;
21、CV_MAT_ELEM:從矩陣中得到一個元素;
22、cvAbs:計算數組中所有元素的絕對值;
23、cvAbsDiff:計算兩個數組差值的絕對值;
24、cvAbsDiffS:計算數組和標量差值的絕對值;
25、cvAdd:兩個數組的元素級的加運算;
26、cvAddS:一個數組和一個標量的元素級的相加運算;
27、cvAddWeighted:兩個數組的元素級的加權相加運算(alpha運算);
28、cvAvg:計算數組中所有元素的平均值;
29、cvAvgSdv:計算數組中所有元素的絕對值和標准差;
30、cvCalcCovarMatrix:計算一組n維空間向量的協方差;
31、cvCmp:對兩個數組中的所有元素運用設置的比較操作;
32、cvCmpS:對數組和標量運用設置的比較操作;
33、cvConvertScale:用可選的縮放值轉換數組元素類型;
34、cvCopy:把數組中的值復制到另一個數組中;
35、cvCountNonZero:計算數組中非0值的個數;
36、cvCrossProct:計算兩個三維向量的向量積(叉積);
37、cvCvtColor:將數組的通道從一個顏色空間轉換另外一個顏色空間;
38、cvDet:計算方陣的行列式;
39、cvDiv:用另外一個數組對一個數組進行元素級的除法運算;
40、cvDotProct:計算兩個向量的點積;
41、cvEigenVV:計算方陣的特徵值和特徵向量;
42、cvFlip:圍繞選定軸翻轉;
43、cvGEMM:矩陣乘法;
44、cvGetCol:從一個數組的列中復制元素;
45、cvGetCols:從數據的相鄰的多列中復制元素;
46、cvGetDiag:復制數組中對角線上的所有元素;
47、cvGetDims:返回數組的維數;
48、cvGetDimSize:返回一個數組的所有維的大小;
49、cvGetRow:從一個數組的行中復制元素值;
50、cvGetRows:從一個數組的多個相鄰的行中復制元素值;
51、cvGetSize:得到二維的數組的尺寸,以CvSize返回;
52、cvGetSubRect:從一個數組的子區域復制元素值;
53、cvInRange:檢查一個數組的元素是否在另外兩個數組中的值的范圍內;
54、cvInRangeS:檢查一個數組的元素的值是否在另外兩個標量的范圍內;
55、cvInvert:求矩陣的逆;
56、cvMahalonobis:計算兩個向量間的馬氏距離;
57、cvMax:在兩個數組中進行元素級的取最大值操作;
58、cvMaxS:在一個數組和一個標量中進行元素級的取最大值操作;
59、cvMerge:把幾個單通道圖像合並為一個多通道圖像;
60、cvMin:在兩個數組中進行元素級的取最小值操作;
61、cvMinS:在一個數組和一個標量中進行元素級的取最小值操作;
62、cvMinMaxLoc:尋找數組中的最大最小值;
63、cvMul:計算兩個數組的元素級的乘積(點乘);
64、cvNot:按位對數組中的每一個元素求反;
65、cvNormalize:將數組中元素進行歸一化;
66、cvOr:對兩個數組進行按位或操作;
67、cvOrs:在數組與標量之間進行按位或操作;
68、cvRece:通過給定的操作符將二維數組簡為向量;
69、cvRepeat:以平鋪的方式進行數組復制;
70、cvSet:用給定值初始化數組;
71、cvSetZero:將數組中所有元素初始化為0;
72、cvSetIdentity:將數組中對角線上的元素設為1,其他置0;
73、cvSolve:求出線性方程組的解;
74、cvSplit:將多通道數組分割成多個單通道數組;
75、cvSub:兩個數組元素級的相減;
76、cvSubS:元素級的從數組中減去標量;
77、cvSubRS:元素級的從標量中減去數組;
78、cvSum:對數組中的所有元素求和;
79、cvSVD:二維矩陣的奇異值分解;
80、cvSVBkSb:奇異值回代計算;
81、cvTrace:計算矩陣跡;
82、cvTranspose:矩陣的轉置運算;
83、cvXor:對兩個數組進行按位異或操作;
84、cvXorS:在數組和標量之間進行按位異或操作;
85、cvZero:將所有數組中的元素置為0;
86、cvConvertScaleAbs:計算可選的縮放值的絕對值之後再轉換數組元素的類型;
87、cvNorm:計算數組的絕對范數, 絕對差分范數或者相對差分范數;
88、cvAnd:對兩個數組進行按位與操作;
89、cvAndS:在數組和標量之間進行按位與操作;
90、cvScale:是cvConvertScale的一個宏,可以用來重新調整數組的內容,並且可以將參數從一種數
據類型轉換為另一種;
91、cvT:是函數cvTranspose的縮寫;
92、cvLine:畫直線;
93、cvRectangle:畫矩形;
94、cvCircle:畫圓;
95、cvEllipse:畫橢圓;
96、cvEllipseBox:使用外接矩形描述橢圓;
97、cvFillPoly、cvFillConvexPoly、cvPolyLine:畫多邊形;
98、cvPutText:在圖像上輸出一些文本;
99、cvInitFont:採用一組參數配置一些用於屏幕輸出的基本個特定字體;
100、cvSave:矩陣保存;
101、cvLoad:矩陣讀取;
102、cvOpenFileStorage:為讀/寫打開存儲文件;
103、cvReleaseFileStorage:釋放存儲的數據;
104、cvStartWriteStruct:開始寫入新的數據結構;
105、cvEndWriteStruct:結束寫入數據結構;
106、cvWriteInt:寫入整數型;
107、cvWriteReal:寫入浮點型;
108、cvWriteString:寫入字元型;
109、cvWriteComment:寫一個XML或YAML的注釋字串;
110、cvWrite:寫一個對象;
111、cvWriteRawData:寫入多個數值;
112、cvWriteFileNode:將文件節點寫入另一個文件存儲器;
113、cvGetRootFileNode:獲取存儲器最頂層的節點;
114、cvGetFileNodeByName:在映圖或存儲器中找到相應節點;
115、cvGetHashedKey:為名稱返回一個惟一的指針;
116、cvGetFileNode:在映圖或文件存儲器中找到節點;
117、cvGetFileNodeName:返迴文件的節點名;
118、cvReadInt:讀取一個無名稱的整數型;
119、cvReadIntByName:讀取一個有名稱的整數型;
120、cvReadReal:讀取一個無名稱的浮點型;
121、cvReadRealByName:讀取一個有名稱的浮點型;
122、cvReadString:從文件節點中尋找字元串;
123、cvReadStringByName:找到一個有名稱的文件節點並返回它;
124、cvRead:將對象解碼並返回它的指針;
125、cvReadByName:找到對象並解碼;
126、cvReadRawData:讀取多個數值;
127、cvStartReadRawData:初始化文件節點序列的讀取;
128、cvReadRawDataSlice:讀取文件節點的內容;
129、cvGetMoleInfo:檢查IPP庫是否已經正常安裝並且檢驗運行是否正常;
130、cvResizeWindow:用來調整窗口的大小;
131、cvSaveImage:保存圖像;
132、cvMoveWindow:將窗口移動到其左上角為x,y的位置;
133、cvDestroyAllWindow:用來關閉所有窗口並釋放窗口相關的內存空間;
134、cvGetTrackbarPos:讀取滑動條的值;
135、cvSetTrackbarPos:設置滑動條的值;
136、cvGrabFrame:用於快速將幀讀入內存;
137、cvRetrieveFrame:對讀入幀做所有必須的處理;
138、cvConvertImage:用於在常用的不同圖像格式之間轉換;
139、cvErode:形態腐蝕;
140、cvDilate:形態學膨脹;
141、cvMorphologyEx:更通用的形態學函數;
142、cvFloodFill:漫水填充演算法,用來進一步控制哪些區域將被填充顏色;
143、cvResize:放大或縮小圖像;
144、cvPyrUp:圖像金字塔,將現有的圖像在每個維度上都放大兩倍;
145、cvPyrSegmentation:利用金字塔實現圖像分割;
146、cvThreshold:圖像閾值化;
147、cvAcc:可以將8位整數類型圖像累加為浮點圖像;
148、cvAdaptiveThreshold:圖像自適應閾值;
149、cvFilter2D:圖像卷積;
150、cvCopyMakeBorder:將特定的圖像輕微變大,然後以各種方式自動填充圖像邊界;
151、cvSobel:圖像邊緣檢測,Sobel運算元;
152、cvLaplace:拉普拉斯變換、圖像邊緣檢測;
153、cvHoughLines2:霍夫直線變換;
154、cvHoughCircles:霍夫圓變換;
155、cvRemap:圖像重映射,校正標定圖像,圖像插值;
156、cvWarpAffine:稠密仿射變換;
157、cvGetQuadrangleSubPix:仿射變換;
158、cvGetAffineTransform:仿射映射矩陣的計算;
159、cvCloneImage:將整個IplImage結構復制到新的IplImage中;
160、cv2DRotationMatrix:仿射映射矩陣的計算;
161、cvTransform:稀疏仿射變換;
162、cvWarpPerspective:密集透視變換(單應性);
163、cvGetPerspectiveTransform:計算透視映射矩陣;
164、cvPerspectiveTransform:稀疏透視變換;
165、cvCartToPolar:將數值從笛卡爾空間到極坐標(極性空間)進行映射;
166、cvPolarToCart:將數值從極性空間到笛卡爾空間進行映射;
167、cvLogPolar:對數極坐標變換;
168、cvDFT:離散傅里葉變換;
169、cvMulSpectrums:頻譜乘法;
170、cvDCT:離散餘弦變換;
171、cvIntegral:計算積分圖像;
172、cvDistTransform:圖像的距離變換;
173、cvEqualizeHist:直方圖均衡化;
174、cvCreateHist:創建一新直方圖;
175、cvMakeHistHeaderForArray:根據已給出的數據創建直方圖;
176、cvNormalizeHist:歸一化直方圖;
177、cvThreshHist:直方圖閾值函數;
178、cvCalcHist:從圖像中自動計算直方圖;
179、cvCompareHist:用於對比兩個直方圖的相似度;
180、cvCalcEMD2:陸地移動距離(EMD)演算法;
181、cvCalcBackProject:反向投影;
182、cvCalcBackProjectPatch:圖塊的方向投影;
183、cvMatchTemplate:模板匹配;
184、cvCreateMemStorage:用於創建一個內存存儲器;
185、cvCreateSeq:創建序列;
186、cvSeqInvert:將序列進行逆序操作;
187、cvCvtSeqToArray:復制序列的全部或部分到一個連續內存數組中;
188、cvFindContours:從二值圖像中尋找輪廓;
189、cvDrawContours:繪制輪廓;
190、cvApproxPoly:使用多邊形逼近一個輪廓;
191、cvContourPerimeter:輪廓長度;
192、cvContoursMoments:計算輪廓矩;
193、cvMoments:計算Hu不變矩;
194、cvMatchShapes:使用矩進行匹配;
195、cvInitLineIterator:對任意直線上的像素進行采樣;
196、cvSampleLine:對直線采樣;
197、cvAbsDiff:幀差;
198、cvWatershed:分水嶺演算法;
199、cvInpaint:修補圖像;
200、cvGoodFeaturesToTrack:尋找角點;
201、cvFindCornerSubPix:用於發現亞像素精度的角點位置;
202、cvCalcOpticalFlowLK:實現非金字塔的Lucas-Kanade稠密光流演算法;
203、cvMeanShift:mean-shift跟蹤演算法;
204、cvCamShift:camshift跟蹤演算法;
205、cvCreateKalman:創建Kalman濾波器;
206、cvCreateConDensation:創建condensation濾波器;
207、cvConvertPointsHomogenious:對齊次坐標進行轉換;
208、cvFindChessboardCorners:定位棋盤角點;
209、cvFindHomography:計算單應性矩陣;
210、cvRodrigues2:羅德里格斯變換;
211、cvFitLine:直線擬合演算法;
212、cvCalcCovarMatrix:計算協方差矩陣;
213、cvInvert:計算協方差矩陣的逆矩陣;
214、cvMahalanobis:計算Mahalanobis距離;
215、cvKMeans2:K均值;
216、cvCloneMat:根據一個已有的矩陣創建一個新矩陣;
217、cvPreCornerDetect:計算用於角點檢測的特徵圖;
218、cvGetImage:CvMat圖像數據格式轉換成IplImage圖像數據格式;
219、cvMatMul:兩矩陣相乘;

❹ kinect能不能測量長方體體積

可以。

---------------
基於Kinect 2.0深度圖像的快速體積測量
作者:李玲玲1,王正勇1,卿粼波1,何海波2
2017/5/2 18:00:00
關鍵詞: Kinect2.0深度圖像 點雲數據矩陣 目標提取 體積計算

摘要:為了滿足現實生活中對物體體積實時測量的需求,提出了一套基於Kinect 2.0深度圖像處理的快速體積測量方案。首先,使用Kinect 2.0 深度感測器獲得深度圖像及對應的點雲數據矩陣,並對深度圖像進行增強、二值化、目標提取等預處理,定位出目標物體。然後,通過像素點的統計和點雲數據的處理得到目標物體的面積、高度。最後由面積和高度完成目標物體的體積計算。經驗證這種方法的體積測量誤差控制在3%以內,完全滿足實時性的誤差要求,又由於深度圖像較彩色圖像不易受光線、背景的干擾,使得該方法具有很強的魯棒性。
關鍵詞:Kinect 2.0深度圖像;點雲數據矩陣;目標提取;體積計算
中圖分類號:TP274文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.07.011
引用格式:李玲玲,王正勇,卿粼波,等.基於Kinect 2.0深度圖像的快速體積測量[J].微型機與應用,2017,36(7):35-38,42.
0引言
體積測量在現實生活中應用廣泛,例如在航空運輸行業中,貨物入艙前需對運輸貨物體積有快速明確的估計,以滿足飛機腹艙空間的充分利用,提高運輸效率。目前機場主要是通過目測確定需運入飛機腹艙的貨物體積,其精確度不夠高,因此研發一套自動化體積測量系統尤為必要。現體積測量系統主要是基於激光感測器[13],但實際操作中為了獲得被測物體某個面上的三維坐標信息,激光感測器需要電機等配套設備的驅動才能獲取由線陣數據組成的整個物體表面的信息[1],又由於對激光感測器的掃描解析度和靈敏度的要求,使得整個系統操作復雜,速度慢且成本高[1]。不同於傳統的激光感測器得到的線陣數據,Kinect 2.0深度感測器得到的不僅是面陣數據,而且可獲取物體深度信息,為此,本文主要研究基於Kinect 2.0深度圖像預處理方法實現入艙前貨物體積的快速實時測量。該方案優點主要體現在實現速度快,系統組成和操作簡單,只需一台Kinect和一台電腦,成本低,更具有經濟使用價值。
1實現方案

圖1體積測量方案流程圖1為體積測量方案流程。本文首先用Kinect 2.0採集深度圖像及其對應的點雲數據矩陣,然後採用漫水填充的方法增強圖像初步去噪突出目標物體,並經過圖像二值化、Canny邊緣檢測提取物體輪廓,圖像填充提取目標物體。最後,根據Kinect 2.0視場與像素個數的比值關系得到面積,由目標物體在整個圖像中的具體位置將其配准到點雲數據矩陣中計算物體高度,進而求出物體體積。

2深度圖像和點雲數據矩陣獲取
2.1深度圖像獲取
深度圖像又叫做距離圖像,類似於彩色圖像矩陣中的顏色值、灰度圖像矩陣中的灰度值,深度圖像信息即深度值存儲在深度圖像矩陣中。深度圖像較灰度圖像的優勢是,深度值只與距離相關,與光照強度和方向無關[4]。
本方案採用Kinect 2.0攝像頭獲取深度圖像。Kinect 2.0是微軟公司於2014年7月推出的高性價比攝像頭。相比於傳統的激光感測器,Kinect 2.0是一款功能強大、性價比高、方便使用的三維數據採集設備,圖2Kinect深度圖像其解析度為512×424;水平視場可增大至70°,垂直視場增大至60°;其深度圖像拍攝范圍為0.8~4.0 m,圖2為獲取的一張深度圖像。
2.2點雲數據矩陣獲取

點雲是指以各種方式獲得的點數據,是測量目標表面上各點信息的集合。坐標數據是點雲數據必須包括的信息,另外法向量、顏色值或其他數據信息也可能被包括在點雲數據中[5]。本方案中Kinect 2.0獲取的點雲數據是與其深度圖像的每個像素點對應的距離信息矩陣,其大小為512行、424列,其值表示的是Kinect 2.0深度攝像頭到被拍攝物體表面的垂直距離,單位為mm。經實驗驗證Kinect 2.0在其所能達到的距離范圍0.8~4 m內的距離誤差均在2 cm以內,Kinect 2.0測得距離與實際距離的比較如表1所示,由此獲得的Kinect 2.0測試距離和實際距離的精度曲線如圖3所示。

3深度圖像預處理
由於Kinect採集的深度圖像並不完美,含有與距離平方成正比的雜訊及無效像素構成的空洞[6]。本文中的深度圖像還有周圍物體的干擾,因此對採集到的原始深度圖像進行預處理對後續進一步研究尤為重要。本方案經過對深度圖像的漫水填充[7]處理、基於Otsu[8]演算法的圖像二值化、Canny運算元[9]邊緣檢測、圖像填充等預處理方法檢測定位提取出目標物體。
3.1基於漫水填充的圖像增強
圖像增強可弱化或消除一些不必要信息,經過增強處理的圖像比原始圖像更適合特定場景的需求[10]。本文首先對帶目標物體的深度圖像通過漫水填充,強化突出目標區域。實驗證明該方法效果比較理想,基本上消除了周圍雜訊並突出了目標物體,為後續圖像處理做准備。漫水填充法是一種常用的區域填充法,它的實質是種子填充法,經常被用來標記或分離圖像的感興趣區域。
圖4漫水填充處理後的圖像漫水填充法的具體操作即在具有同一顏色或亮度值的像素區域內選取種子點,通過判斷種子與種子點的鄰域像素顏色或亮度值的差別是否滿足預先設定的閾值,來決定是否對鄰域的像素用新的顏色或亮度值代替,直到遍歷完區域內所有像素或達到輪廓線的邊界[11]。由此可知,初始種子點、替代顏色和目標顏色判定閾值是漫水填充的3個重要參數。本文並沒有填充目標區域,而是通過填充目標區域以外的區域為白色即像素值為(255,255,255)來突出黑色的目標區域,這樣就簡化了參數的選擇。漫水填充可通過opencv中的cvFlood Fill函數來實現,選取種子點為(20,20),將下標記和上標記都選取為30,對種子的8鄰域逐點進行判斷,經實驗驗證這種參數的選取值可取得很好的效果,如圖4所示。

3.2基於Otsu的圖像二值化
圖像增強雖然突出了目標物體但周圍仍有雜訊,故需對圖像進行進一步的處理。接下來對漫水填充後的圖像進行二值化操作以適應下一步圖像處理的要求。針對目標物體與背景有較大差別的圖像,為了得到理想的二值化效果,閾值分割是備受青睞的方法。因此,區分目標物體和背景的閾值對二值化效果是否理想起到關鍵的作用。設原始灰度圖像為f(x,y),經二值化處理的圖像為g(x,y),可用式(1)描述二值化過程。
g(x,y)=1,f(x,y)t
x,f(x,y)<t(1)
全局閾值法和局部閾值法是二值化的主流方法,本文採用基於Otsu演算法的全局閾值法,該方法針對直方圖呈明顯雙峰分布的圖像實現效果優越,適合本文中的圖像。Otsu演算法可自動獲取圖像二值化所需要的閾值。其具體實現是以一個初始閾值t分割圖像,這樣就把原圖像分割成C1和C2兩部分,C1和C2分別為像素灰度值大於等於t和小於t的集合,之後分別求得這兩部分的類間方差σ2B和類內方差σ2A,最終找出分割圖像的最佳閾值t,也就是滿足兩個方差比σ2B/σ2A最大的閾值。分別將C1類和C2類的像素點總數設為W1和W2,其像素點灰度均值為M1和M2,方差分別為σ21和σ22。則有:
σ2B=W1W2(M1-M2)2(2)
σ2A=W1σ21+W2σ22(3)
將灰度值大於等於t的像素灰度值規定為255,小於t的像素灰度值規定為0。通過圖像二值化將24 bit的深度圖像轉化為8 bit深度圖像,以便後續對目標圖像的提取。
3.3基於Canny運算元邊緣檢測的目標提取
目標提取即把感興趣的部分從單幅圖像或序列圖像中提取出來。為了從背景中提取出目標物體,採用Canny運算元對二值化圖像進行邊緣檢測。相比於其他邊緣檢測運算元,依據圖像邊緣檢測最優准則設計的Canny邊緣檢測演算法具有良好的邊緣檢測性能,且具備信噪比大和檢測精度高的優點,因此文中使用Canny運算元進行邊緣檢測,效果如圖5所示。

然後對提出的邊緣進行內輪廓填充,將輪廓內的像素值填充為1,效果如圖6所示,圖中黑色的區域為背景,白色區域即提取出的目標物體。

4體積測量
利用統計匹配像素點及視場比值不變性的方法計算物體的體積, Kinect 2.0的視場圖如圖7所示。其中h是Kinect 2.0到物體表面的距離,N是圖像中目標物體區域內像素個數測量值,S是物體實際面積大小;M是Kinect 2.0整個視場范圍內像素的個數,S1是Kinect 2.0整個視場的面積;α和β分別是Kinect 2.0的水平視場和垂直視場。

4.1面積計算
由於Kinect 2.0採集的深度圖像中保存的是深度信息,要進行體積測量還需得到面積相關的信息。當Kinect 2.0與所測物體的距離固定時,可以根據Kinect 2.0在該距離的視場范圍和該視場范圍內像素個數的比例關系來求取面積。即圖像中目標物體區域內像素個數測量值N與實際物體的面積大小S的比值和在該距離下Kinect 2.0整個視場范圍內像素的個數M與整個視場面積S1的比值是相等的,如式(4)所示:

其中N是根據圖像統計出的目標物體所在區域的像素個數,即二值圖像中像素值等於1的像素個數,S1可根據圖7中Kinect 2.0的視場范圍由幾何關系求出,如式(5)所示:

又由於視場S1中總的像素個數M=512×424,利用這個原理,對於搭建好的圖像採集系統,由式(4),在S1、M、N已知的情況下即可以求出目標物體區域的面積S:

4.2高度計算
統計目標物體區域即圖6中的白色區域在整幅圖像中的具體位置,即白色區域的起始行m1和終止行m2以及起始列n1和終止列n2,然後求出白色區域的中間行m和中間列n,並將其配准對應到點雲矩陣A1和A,即在A1和A中提取出白色區域對應的距離信息。由於得到的Kinect 2.0攝像頭到背景表面和到目標物體表面的兩個點雲矩陣A1和A邊緣有雜訊,因此選取A1和A中20×20的中間區域的小矩陣,即行m-10至m+9和列n-10至n+9的區域分別求平均值得到h1和h。通過背景距離減去前景距離計算被測物的高度信息h2,計算公式為:
h2=h1-h(7)
4.3體積計算及實驗測試
由體積計算公式V=Sh2,即可計算出被測物的體積。
分別對不同的物體和0.8~4 m不同的距離(Kinect 2.0到被測物的距離)進行了實驗,盡管被測對象的體積很小,但誤差均有良好的可控性,結果顯示控制在3%以內,這充分說明了該方案的潛力和可行性。具體測量結果及誤差分析如表2所示。

5結論
本文基於VS2013環境和Kinect SDK 2.0提出一套體積測量方案,實驗證明本文提出的測量方案測量結果准確可靠,3%以內的體積測量誤差可滿足實時的需求。
(1)本文應用Kinect 2.0深度圖像的處理來求體積,充分利用了深度圖像較彩色圖像不易受光照強度和方向影響的優勢,增強了本文提出演算法的魯棒性。
(2)本文設計的體積測量方案成本低,經濟實惠,不需要配套的硬體驅動,所需設備僅為一台電腦和一台Kinect 2.0,性價比高,操作簡單便捷,並且可實現快速准確實時的體積測量,經濟價值可觀。
(3)本文將Kinect 2.0的應用由尺寸測量進一步深入到體積測量領域,增強了Kinect 2.0的實用性,拓展了Kinect 2.0的應用領域,對計算視覺技術在體積測量領域的應用具有積極意義。
參考文獻
[1] 路達, 滕奇志, 卿粼波,等. 基於激光測距的中小型貨物三維體積掃描[J]. 微型機與應用, 2015,34(23):83-86.
[2] 周峰. 基於三維激光掃描技術的倉儲散糧堆體積測量系統研究[D].長春:吉林大學,2015.
[3] 雷文. 基於激光掃描的物料堆三維測量系統研究[D].長沙:湖南大學,2014.
[4] Yue Haosong, Chen Weihai, Wu Xingming, et al. Fast 3D modeling in complex environments using a single Kinect sensor[J]. Optics and Lasers in Engineering, 2014, 53(2): 104-111.
[5] 韋羽棉. 基於 Kinect 深度圖像的三維重建研究[D].重慶:重慶大學, 2014.
[6] 陳理. Kinect 深度圖像增強演算法研究[D]. 長沙:湖南大學, 2013.
[7] BRADSKI G, KAEBLER A.Learning OpenCV[M].California:0』Reilly Media,Inc,2008.
[8] OTSU N. A threshold selection method from graylevel histogram [J]. IEEE Transactions on Systems, Man, and Cybernetics, 1979, 9(1): 62-66.
[9] CANNY J. A computational approach to edge detection[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986, 8(6):679-698.
[10] Li Bai, Li Ya, Cao Hongxin, Fet al. Image enhancement via lateral inhibition: an analysis under illumination changes[J]. OptikInternational Journal for Light and Electron Optics, 2016, 127(12): 5078-5083.

❺ 視頻分析裡面的漫水線演算法怎麼用

flood fill演算法?
這個演算法主要用於填充圖像的區域,要先指定一個種子點,可以把鄰近區域的類似點填充上同樣的顏色

❻ 計算機圖形學問題:請高手幫忙看一下

程序沒錯的話有兩個原因:1.是你用VC編譯的,但是VC不支持graphics.h,也沒有graphics.h這個文件,因為它不是標准頭文件,所以建義用tuoboC編譯器,或者用WinTC編譯器也可以。2.因為initgraph(&gd, &gm, ""); 這里表示在和可執行文件里包含一個.bgi文件(這個文件在tuoboC或WinTC里都有,你可以找一下)但是你沒包含進去,所以沒有畫出來,而且執行時會報錯。

那就是你沒有先畫出邊界,所以在函數里判斷出錯,沒有遞歸。
boundary_fill_4(x1, y1, boundary_color, fill_color);
boundary_fill_4(x2, y2, boundary_color, fill_color);
boundary_fill_4(x3, y3, boundary_color, fill_color);
boundary_fill_4(x4, y4, boundary_color, fill_color);
boundary_fill_4(x5, y5, boundary_color, fill_color);
boundary_fill_4(x6, y6, boundary_color, fill_color);
上面這里是沒用的,你應該先畫出邊界,然後再調用boundary_fill_4函數,而且在main()函數里只調用boundary_fill_4一次就夠了,其中x,y是多邊形內的一個點坐標。

OK?

❼ 行至漫水路段時,應當怎樣做

行至漫水路段時,應當低速通過涉水路段。

《中華人民共和國道路交通安全法實施條例》第四章道路通行規定,第一節一般規定,第六十四條:機動車行經漫水路或者漫水橋時,應當停車察明水情,確認安全後,低速通過。機動車行經渡口,應當服從渡口管理人員指揮,按照指定地點依次待渡。機動車上下渡船時,應當低速慢行。

(7)漫水填充演算法擴展閱讀:

國務院根據《中華人民共和國道路交通安全法》制定《中華人民共和國道路交通安全法實施條例》,於2004年4月28日國務院第49次常務會議通過的國家法規,2004年4月30日公布,自2004年5月1日起施行。共計8章115條。

2017年10月7日,國務院總理李克強簽署第687號國務院令,對《中華人民共和國道路交通安全法實施條例》進行了修改。

參考資料來源:網路——中華人民共和國道路交通安全法實施條例

❽ 學習OpenCV(中文版)的作品目錄

出版前言譯者序寫在前面的話前言第1章 概述什麼是OpenCVOpenCV的應用領域什麼是計算機視覺OpenCV的起源下載和安裝OpenCV通過SVN獲取最新的OpenCV代碼更多OpenCV文檔OpenCV的結構和內容移植性練習第2章 OpenCV入門開始准備初試牛刀—— 顯示圖像第二個程序—— 播放AVI視頻視頻播放控制一個簡單的變換一個復雜一點的變換從攝像機讀入數據寫入AVI視頻文件小結練習第3章 初探OpenCVOpenCV的基本數據類型CvMat矩陣結構IplImage數據結構矩陣和圖像操作繪圖數據存儲集成性能基元小結練習第4章 細說HighGUI一個可移植的圖形工具包創建窗口載入圖像顯示圖像視頻的處理ConvertImage函數練習第5章 圖像處理綜述平滑處理圖像形態學漫水填充演算法尺寸調整圖像金字塔閾值化練習第6章 圖像變換概述卷積梯度和Sobel導數拉普拉斯變換Canny運算元霍夫變換重映射拉伸、收縮、扭曲和旋轉CartToPolar與PolarToCartLogPolar離散傅里葉變換(DFT)離散餘弦變換(DCT)積分圖像距離變換直方圖均衡化練習第7章 直方圖與匹配直方圖的基本數據結構訪問直方圖直方圖的基本操作一些更復雜的策略練習第8章 輪廓內存序列查找輪廓Freeman鏈碼輪廓例子另一個輪廓例子深入分析輪廓輪廓的匹配練習第9章 圖像局部與分割局部與分割背景減除分水嶺演算法用Inpainting修補圖像均值漂移分割Delaunay三角剖分和Voronoi 劃分練習第10章 跟蹤與運動跟蹤基礎尋找角點亞像素級角點不變特徵光流mean-shift和camshift跟蹤運動模板預估器condensation演算法練習第11章 攝像機模型與標定攝像機模型標定矯正一次完成標定羅德里格斯變換練習第12章 投影與三維視覺投影仿射變換和透視變換POSIT:3D姿態估計立體成像來自運動的結構二維和三維下的直線擬合練習第13章 機器學習什麼是機器學習OpenCV機器學習演算法Mahalanobis距離K均值樸素貝葉斯分類二叉決策樹boosting隨機森林人臉識別和Haar分類器其他機器學習演算法練習第14章 OpenCV的未來過去與未來發展方向OpenCV與藝術家後記參考文獻索引關於作者和譯者封面圖片

❾ 漫灌的方式

漫灌是一種粗放的灌溉方式,其法為不平整土地,也不築畦,讓水順著坡地往裡流。 漫灌的方式 1、本意上,可以說粗放的農業灌溉,而澆灌、滴灌、噴灌、微灌的方式都比漫灌節水。高科技水肥一體化模式則是目前現代農業最為節水的一種方式了。 根據網路的科學定義是: 中文名稱:漫灌英文名稱:flooding irrigation定義:田間不修溝、畦,水流在地面以漫流方式進行的灌溉,多用於牧草灌溉。應用學科:水利科技(一級學科);灌溉與排水(二級學科);灌溉(水利)(二級學科) flood irrigation漫灌是在田間不做任何溝埂,灌水時任其在地面漫流,借重力作用浸潤土壤,是一種比較粗放的灌水方法。灌水的均勻性差,水量浪費較大。漫灌 mànguàn[basin irrigation] 圍繞著農田築堤,使其形成一個坑塘,並且引水漫流地上以灌溉農田◎ 漫灌 mànguàn[flow;flood irrigation] 任水順坡漫流的一種粗放灌溉方式漫灌田地當今水是一種資源,人們採取了網路噴灌作業方式,改變了傳統的澆灌方法。水送到田間以後,如何澆灌是大有學問的。不少地方的農民仍然固守著舊的觀念,認為澆地就是澆灌「地」,要澆足澆夠水,於是沿襲幾千年來的傳統辦法,採取大水漫灌,澆地時,把整個田塊都放滿水。如果田間土地不平整,高高低低,要使地塊都漫上水,所用水量就要更大。其實澆地的目的是讓莊稼根部獲得和保持必需的水量,澆其餘地方完全沒的必要,澆很深的水更是巨大的浪費。 現代農業節水灌溉得到逐步推廣,灌溉三塊同樣大的試驗田,第一塊用漫灌方式,第二塊用灌溉方式,第三塊用滴灌方式,後兩種方式用水量分別是漫灌的25%和15%,三塊地共用水420噸。設漫灌為X噸,則灌溉為0.25X,滴灌為0.15X X+0.25X+0.15X=420,解X=300,則漫灌為300噸,灌溉為75噸,滴灌為45噸。如果應用水肥一體化微灌節水農業技術,則只需用15-30噸。所以現代農業必須改變大水漫灌的方式。 漫灌的方式 澆灌、滴灌、噴灌的方式比漫灌的方式節水抗旱,節約水資源 結合測土配方施肥的水肥一體化模式比澆灌滴灌噴灌高節能環保優質高產 中國高效灌溉及水肥一體化技術,是完全取代大水漫灌的傳統粗放的灌溉方式的新技術成果 2、引申義什麼是漫灌效應 漫灌效應:漫灌是一種粗放的灌溉方式,其法為不平整土地,也不築畦,讓水順著坡地往裡流。 點評:只想自然而然,必會聽之任之。 漫灌效應概述 漫灌效應作為一種特殊的思想灌輸方式,常常成為企業員工教育的首選。「漫灌是一種粗放的灌溉方式,其法為不平整土地,也不築畦,讓水順著坡地往裡流。」,漫灌效應原引自生物學常識,把對植物的灌溉方式借鑒到員工的教育上來,的確是一種睿智、高明之舉。 任何一個企業的員工,如果缺少適時的企業文化灌輸,精神勢必荒蕪,就像沒有雨露滋潤的作物將逐漸枯萎。眾多的企業中,員工因缺少教育而產生的無知、頹廢、落後的情況十分普遍,他們的素質很成問題,充其量只是體力型的打工仔,難以與現代科技水準保持同步,直接影響到公司的業績和進步。當然,這與一些老闆缺乏企業文化理念,忽視員工的教育也不無關系,更重要的還是找不到一種適合的員工教育方式。 老闆之所以抓不好員工的教育,肯定與企業員工教育的難度有關,畢竟,企業本身不是學校、政府部門,也不是父母呵護的家庭。在繁忙的產生經營壓力下,企業公司幾乎不具備時間和條件來做好員工的教育工作,所以很多企業管理者難免忽視這項員工教育工作,只有有遠見的老闆才會重視、兼顧對員工的思想和知識灌輸。 企業員工教育,缺少時間和條件,不等於沒有時間和條件。重視教育和忽視教育又是兩個完全不同的態度,而能夠從企業自身的特點出發,找到一種適合員工的教育方式——漫灌效應更為難能可貴。 漫灌效應是一種順其自然的原始灌輸方式,農夫只在田地的一端打開一道供水流入的口子,把山溪的或者河流的水引入田野即可,基本不需要什麼復雜的操作,省略了平整土地、築畦、均勻噴灑等工序,節約了大量的時間,讓水流進去就完事,剩下的事情就是自然而然,聽之任之。這種灌溉方式可以追溯到遠古時代自給自足的小農經濟。農民每逢需要給作物灌溉的時候,就在田頭用鋤頭挖開一道入水口,盡管放任自流。別看這種笨拙的漫灌方式落後,因了農民不忘在田頭隨便那麼挖一道入水口,雨水、山水、河水就順勢汩汩而流,田裡的奇花異草都神奇的爭艷,青蛙聲也此起彼伏,莊稼自然長勢喜人。 同樣,我們對難度較大的企業員工教育工作,也不必把它看得太難,只要像農民伯伯那樣在田頭用鋤頭挖一道入水口就行啦。企業公司的老闆不妨嘗試這樣做:在單位的空坪、走廊多開設幾個報刊欄,做得漂亮一點,有頂棚,要考慮晴雨天都可以方便員工瀏覽,內容要有娛樂性、可讀性;騰出幾間房子做閱覽室,可供員工休閑的任意時間來室內看報讀書,甚至「按需分配」免費提供一些與生產經營、專業知識相關的書籍;也騰出幾間房子做電腦室,配置像網吧那樣的大眾化電腦,員工要查個資料,看個網頁,寫個博客,發個電子郵件,或者放鬆一下自己,聽聽音樂看看網路電影什麼的,都隨時可以做到;再定期的展開一些企業文化活動,比如象棋比賽、籃球比賽、書法比賽、舞蹈比賽、歌詠比賽、武術比賽等等,只要員工愛好的喜聞樂見的都盡可能利用大家的休閑時間來充實,把它當作一件隨意的但又當真的事情去做。我想:一家公司能夠注重這些細微的「田頭放水」工作,把企業文化之水引進公司,不強迫員工要學習什麼,沒有任務,只有漫灌,所產生的效應卻是十分強大的。員工能夠得到這樣的漫灌,效果甚至不亞於刻意、嚴謹的專業教育。 有心栽花花不活,無意插柳柳成蔭。這應該是漫灌效應的一個顯著特徵。漫灌,看似沒有怎麼強求,有時收到的教育效果卻比那種嚴厲的用心教育還要好。尤其員工完全在一種放鬆自然的自己選擇和做主的狀態下去吸收思想知識的養料,其和諧與愉快可以使這樣的教育方式持久不衰。 這種粗放的漫灌方式,管理者省時還省力,企業要支付的只是一些書報費、設施費用和相關活動經費,錢肯定要花一點的,這個錢千萬不能省,更不能吝嗇。要知道花在這上面的錢特別有潛在的收益,而且是無法估量的收益。一個個員工不僅在公司里也能夠給自己充電,而且綜合素質的在潛移默化地改善和提高,還排除了閑暇無事可做、無處消遣所帶來的種種不利因素。 最原始的漫灌方式也許正是最佳的員工教育方案,員工因得到廣博的知識文化的陽光雨露滋潤而生機勃勃,他們的才華、技能、潛質、智慧、精神都會得以開發,產生強大的漫灌效應,最後帶動整個企業公司的飛躍。而對於每一個個案,則科學地採取澆灌、滴灌、噴灌和微灌方式,更為節能環保,更有效,能夠創造更大的輝煌。 參考資料 網路 網路知道 中新科技 現代農業 可喜可賀

記得採納啊

❿ 學習OpenCV的作品目錄

出版前言
譯者序
寫在前面的話
前言
第1章 概述
什麼是OpenCV
OpenCV的應用領域
什麼是計算機視覺
OpenCV的起源
下載和安裝OpenCV
通過SVN獲取最新的OpenCV代碼
更多OpenCV文檔
OpenCV的結構和內容
移植性
練習
第2章 OpenCV入門
開始准備
初試牛刀—— 顯示圖像
第二個程序—— 播放AVI視頻
視頻播放控制
一個簡單的變換
一個復雜一點的變換
從攝像機讀入數據
寫入AVI視頻文件
小結
練習
第3章 初探OpenCV
OpenCV的基本數據類型
CvMat矩陣結構
IplImage數據結構
矩陣和圖像操作
繪圖
數據存儲
集成性能基元
小結
練習
第4章 細說HighGUI
一個可移植的圖形工具包
創建窗口
載入圖像
顯示圖像
視頻的處理
ConvertImage函數
練習
第5章 圖像處理
綜述
平滑處理
圖像形態學
漫水填充演算法
尺寸調整
圖像金字塔
閾值化
練習
第6章 圖像變換
概述
卷積
梯度和Sobel導數
拉普拉斯變換
Canny運算元
霍夫變換
重映射
拉伸、收縮、扭曲和旋轉
CartToPolar與PolarToCart
LogPolar
離散傅里葉變換(DFT)
離散餘弦變換(DCT)
積分圖像
距離變換
直方圖均衡化
練習
第7章 直方圖與匹配
直方圖的基本數據結構
訪問直方圖
直方圖的基本操作
一些更復雜的策略
練習
第8章 輪廓
內存
序列
查找輪廓
Freeman鏈碼
輪廓例子
另一個輪廓例子
深入分析輪廓
輪廓的匹配
練習
第9章 圖像局部與分割
局部與分割
背景減除
分水嶺演算法
用Inpainting修補圖像
均值漂移分割
Delaunay三角剖分和Voronoi 劃分
練習
第10章 跟蹤與運動
跟蹤基礎
尋找角點
亞像素級角點
不變特徵
光流
mean-shift和camshift跟蹤
運動模板
預估器
condensation演算法
練習
第11章 攝像機模型與標定
攝像機模型
標定
矯正
一次完成標定
羅德里格斯變換
練習
第12章 投影與三維視覺
投影
仿射變換和透視變換
POSIT:3D姿態估計
立體成像
來自運動的結構
二維和三維下的直線擬合
練習
第13章 機器學習
什麼是機器學習
OpenCV機器學習演算法
Mahalanobis距離
K均值
樸素貝葉斯分類
二叉決策樹
boosting
隨機森林
人臉識別和Haar分類器
其他機器學習演算法
練習
第14章 OpenCV的未來
過去與未來
發展方向
OpenCV與藝術家
後記
參考文獻
索引
關於作者和譯者
封面圖片

熱點內容
無共享存儲如何實現vm高可用 發布:2024-11-17 09:11:55 瀏覽:407
一個小壓縮 發布:2024-11-17 09:10:10 瀏覽:159
安卓透視掛在哪裡買 發布:2024-11-17 09:09:36 瀏覽:713
破解加密的apk 發布:2024-11-17 09:09:23 瀏覽:367
如何拷貝文件夾 發布:2024-11-17 09:08:07 瀏覽:651
安卓系統怎麼使用油管 發布:2024-11-17 09:05:10 瀏覽:808
跨境電商需要什麼電腦伺服器 發布:2024-11-17 08:58:41 瀏覽:905
linux查看mysql表 發布:2024-11-17 08:48:50 瀏覽:76
java日期星期幾 發布:2024-11-17 08:48:39 瀏覽:925
java抽象實例化 發布:2024-11-17 08:43:16 瀏覽:385