溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Halcon案例--提取道路

發(fā)布時(shí)間:2020-07-10 22:59:57 來(lái)源:網(wǎng)絡(luò) 閱讀:3038 作者:小格林 欄目:編程語(yǔ)言

***********************************************Halcon案例***********************************************************

*這個(gè)例子演示了如何從空中提取道路。

*對(duì)于道路提取,假定道路由具有均勻灰度值和直線(xiàn)的兩個(gè)平行邊組成,首先提取空中圖像中的道路中心,然后顯示第一航空影像的放大部分的第二圖像;

*讀取和連續(xù)的道路邊緣的輪廓,第二幅圖像中的平行道路邊緣和道路中心確定。最后把這些道路假設(shè)結(jié)合起來(lái)。

read_image (Image, 'mreut4_3')

threshold (Image, Region, 160, 255)

reduce_domain (Image, Region, ImageReduced) 

* 輸入要提取的線(xiàn)寬,直線(xiàn)的對(duì)比度,計(jì)算參數(shù)并提取線(xiàn)

MaxLineWidth := 5

Contrast := 70

calculate_lines_gauss_parameters (MaxLineWidth, Contrast, Sigma, Low, High)

lines_gauss (ImageReduced, RoadCenters, Sigma, Low, High, 'light', 'true', 'bar-shaped', 'true')


* 讀取第二個(gè)圖像,顯示第一個(gè)圖像的放大圖像部分

read_image (ImagePart, 'mreut_y')

get_image_size (ImagePart, PartWidth, PartHeight)

* 提取、分割輪廓

edges_image (ImagePart, PartAmp, PartDir, 'mderiche2', 0.3, 'nms', 20, 40)

threshold (PartAmp, EdgeRegion, 1, 255)

* 裁剪輪廓區(qū)域

clip_region (EdgeRegion, ClippedEdges, 2, 2, PartWidth - 3, PartHeight - 3)

*提取骨架

skeleton (ClippedEdges, EdgeSkeleton)

*轉(zhuǎn)化為XLD輪廓

gen_contours_skeleton_xld (EdgeSkeleton, EdgeContours, 1, 'filter') 

* 輪廓-多邊形(輪廓-直線(xiàn)段)

gen_polygons_xld (EdgeContours, EdgePolygons, 'ramer', 2)

* 通過(guò)提取平行的XLD多邊形來(lái)確定道路的邊緣。為了消除錯(cuò)選,提取的并行多邊形被進(jìn)一步修改和擴(kuò)展。

* 提取所有平行XLD多邊形

gen_parallels_xld (EdgePolygons, ParallelEdges, 10, 30, 0.15, 'true')

* 提取平行的XLD多邊形包圍一個(gè)均勻區(qū)域

mod_parallels_xld (ParallelEdges, ImagePart, ModParallelEdges, ExtParallelEdges, 0.3, 160, 220, 10)

* 通過(guò)應(yīng)用仿射變換從第一張圖像的提取的道路中心提取道路中心

* 生成一個(gè)齊次變換矩陣

hom_mat2d_identity (HomMat2DIdentity)

*縮放,x、y方向的縮放因子

hom_mat2d_scale (HomMat2DIdentity, 8, 8, 0, 0, HomMat2DScale)

*平移,x、y方向的平移

hom_mat2d_translate (HomMat2DScale, -250, -600, HomMat2DTranslate)

*將仿射變換應(yīng)用到道路中心輪廓

affine_trans_contour_xld (RoadCenters, ScaledRoadCenters, HomMat2DTranslate)

* 修剪縮放的道路中心的輪廓然后用多邊形來(lái)近似

clip_contours_xld (ScaledRoadCenters, ClippedRoadCenters, 0, 0, 512, 512)

gen_polygons_xld (ClippedRoadCenters, RoadCenterPolygons, 'ramer', 2)

*提取道路邊

combine_roads_xld (EdgePolygons, ModParallelEdges, ExtParallelEdges, RoadCenterPolygons, RoadSides, rad(40), rad(20), 40, 40)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI