halcon-regiongrowing區域增長法分割圖像為區域


 

 

在HDevelop中

dev_update_off()
read_image (Image, 'D:/bb/tu/8.jpg')
get_image_size (Image, Width, Height)
regiongrowing (Image, Regions, 1, 1, 3, 1000)
*區域增長法分割圖像為區域
*此方法分割的區域可能有重疊
*參數1:輸入圖像 *參數2:分割后的輸出區域 *參數3Row和參數4Col :定義了在圖像內相鄰移動的模板的長和寬度大小 *參數5:兩個相鄰模板中心灰度值差,如果小於這個值就合並為同一區域 *參數6:作為一個限制,限定了用上面方法分割出的區域面積最終不能小於MinSize給定的值,否則不作為區域輸出 gen_empty_region (NoPixel) *創建一個空區域 *count_obj返回1 這個區域的面積是0。 expand_region (Regions, NoPixel, RegionExpanded1, 'maximal', 'image') *填充區域之間的間隙或分割重疊區域 *參數1:Regions要膨脹的區域 * 如果是區域:不執行膨脹,而是只分割重疊區域,將重疊區域均勻地分布到各個區域里。 * 因為與原區域的交集是在收縮操作后計算出來的,因此可能會導致輸出區域出現間隙。 * 這可以通過第二次調用expand_region來防止,並將原始區域的補集作為ForbiddenArea *參數2:ForbiddenArea禁止膨脹的區域 *參數3:RegionExpanded1膨脹后結果區域 *參數4:迭代次數 * 默認值: 'maximal' 函數一直執行直到不可膨脹 * 建議值: 'maximal'012357101520305070100200 * 傳遞0的話,返回未重疊的全部區域 * 典型值范圍:0≤ Iterations≤ 1000 *參數5:擴展模式 * 'image' 目的是填充區域之間的間隙,輸入區域將迭代地膨脹,直到它們觸及另一個區域或圖像邊緣 * 'region' 目的是分割重疊區域 dev_set_colored (10) *設置輸出顏色的數量 dev_open_window (10, 10, Width, Height, 'black', WindowHandle) dev_display (RegionExpanded1)

 

 

 

在QtCreator中

  HObject  ho_Image, ho_Regions, ho_NoPixel, ho_RegionExpanded1;
  HTuple  hv_Width, hv_Height, hv_WindowHandle;
  ReadImage(&ho_Image, "D:/bb/tu/8.jpg");
  GetImageSize(ho_Image, &hv_Width, &hv_Height);
  Regiongrowing(ho_Image, &ho_Regions, 1, 1, 3, 1000);
  //區域增長法分割圖像為區域
//此方法分割的區域可能有重疊
//參數1:輸入圖像 //參數2:分割后的輸出區域 //參數3Row和參數4Col :定義了在圖像內相鄰移動的模板的長和寬度大小 //參數5:兩個相鄰模板中心灰度值差,如果小於這個值就合並為同一區域 //參數6:作為一個限制,限定了用上面方法分割出的區域面積最終不能小於MinSize給定的值,否則不作為區域輸出 GenEmptyRegion(&ho_NoPixel); //創建一個空區域 //count_obj返回1 這個區域的面積是0。 ExpandRegion(ho_Regions, ho_NoPixel, &ho_RegionExpanded1, "maximal", "image"); //填充區域之間的間隙或分割重疊區域 //參數1:Regions要膨脹的區域 // 如果是區域:不執行膨脹,而是只分割重疊區域,將重疊區域均勻地分布到各個區域里。 // 因為與原區域的交集是在收縮操作后計算出來的,因此可能會導致輸出區域出現間隙。 // 這可以通過第二次調用expand_region來防止,並將原始區域的補集作為ForbiddenArea //參數2:ForbiddenArea禁止膨脹的區域 //參數3:RegionExpanded1膨脹后結果區域 //參數4:迭代次數 // 默認值: 'maximal' 函數一直執行直到不可膨脹 // 建議值: 'maximal',0,1,2,3,5,7,10,15,20,30,50,70,100,200 // 傳遞0的話,返回未重疊的全部區域 // 典型值范圍:0≤ Iterations≤ 1000 //參數5:擴展模式 // 'image' 目的是填充區域之間的間隙,輸入區域將迭代地膨脹,直到它們觸及另一個區域或圖像邊緣 // 'region' 目的是分割重疊區域 if (HDevWindowStack::IsOpen()) SetColored(HDevWindowStack::GetActive(),10); //設置輸出顏色的數量 SetWindowAttr("background_color","black"); OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle); HDevWindowStack::Push(hv_WindowHandle); if (HDevWindowStack::IsOpen()) DispObj(ho_RegionExpanded1, HDevWindowStack::GetActive());

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM