【halcon】學習記錄

 

圖像採集和二值化等處理

* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('USB3Vision', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '2E03187A8340_MachineVision_MVA5402MU90', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
* 不是以填充的形式顯示,而是以輪廓的形式顯示!
* dev_set_draw ('margin')
while (true) grab_image_async (Image, AcqHandle, -1) * Image Acquisition 01: Do something * rgb轉灰度 rgb1_to_gray (Image, GrayImage) * 灰度顯示 dev_display (GrayImage) * 二值化 打開灰度直方圖 threshold (GrayImage, Regions, 113, 255) * 鏈接 區域內的連通區域 connection (Regions, ConnectedRegions)
* 有時候部分連通區域有孔洞,用fill_up進行填充
* fill_up (ConnectedRegions, RegionFillUp)
* 選擇特定圖像 打開特徵直方圖 select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 195661, 430454) * 區域中心座標 area_center (SelectedRegions, Area, Row, Column) * 顯示以上信息 disp_message (WindowHandle, '面積:' + Area + '座標:' + Row + ',' + Column, 'window', 0, 0, 'blue', 'true') endwhile close_framegrabber (AcqHandle)

 PS:有時候一個區域select_shape不出來的時候,能夠用特徵直方圖的 多個區域  與 /  或 來實現數組

數組和文件操做

* ***************************************
* 思路決定出路,方向導論  方法論 
* ***************************************
tuple  := [1, 2, 3, 4, 5]
Number := |tuple|
SingleElement := tuple[3]
part := tuple[1:3]
copy := tuple[0:|tuple|-1]

* 讀圖
read_image (Image, 'fabrik')
* 區域分割
regiongrowing (Image, Regions, 3, 3, 6, 100)
* 區域數量
count_obj (Regions, Number)

open_file ('D:/text1.txt', 'output', FileHandle)
for i := 1 to Number by 1
    * 選擇第i塊區域
    select_obj (Regions, ObjectSelected, i) 
    * 計算第i塊的面積
    area_center (ObjectSelected, Area, Row, Column)
    * 寫文件
    fwrite_string (FileHandle, i + ' ' + Area)
    * 建立換行符  清除輸出緩衝區
    fnew_line (FileHandle) 
endfor
close_file (FileHandle)

open_file ('D:/text2.txt', 'output', FileHandle)
* select_obj (Regions, ObjectSelected, 1)
* 計算全部塊的面積
area_center (Regions, Area, Row, Column)
fwrite_string (FileHandle, Area + ' ')
fnew_line (FileHandle)
close_file (FileHandle)

 

 圖片加載和保存的方法

* ****************************
*     圖片加載和保存的方法
* 1.儘可能用.jpg,不要有.png的文件
* ****************************

* 1 Ctrl+R
read_image (Image01, 'E:/Halcon/Halcon_Study/MyImage/瓶蓋.jpg')
* 單步調試/從不 的時候,須要顯示調用dev_display
dev_display (Image01)



* 2 手動讀圖
* 但兩幅圖的格式彷佛不能同樣
read_image (Image02, ['E:/Halcon/Halcon_Study/MyImage/瓶蓋.jpg','E:/Halcon/Halcon_Study/MyImage/棋盤標定.bmp'])



* 3 相機助手/選擇文件 讀圖
* Image Acquisition 01: Code generated by Image Acquisition 01
read_image (Image03, 'E:/Halcon/Halcon_Study/MyImage/硬幣.jpg')  




* 4 相機助手/選擇文件路徑 讀圖 
* 遍歷整個文件夾的圖片
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('E:/Halcon/Halcon_Study/MyImage', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    * Image Acquisition 01: Do something
endfor


* 5 相機助手的自動採集圖像
* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('USB3Vision', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '2E03187A8340_MachineVision_MVA5402MU90', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
    grab_image_async (Image, AcqHandle, -1)
    * Image Acquisition 01: Do something
endwhile
close_framegrabber (AcqHandle)


* 保存圖像
write_image (Image, 'tiff', 0, 'E:/Halcon/Halcon_Study/MyImage')

 

圖像預處理

濾波

5.1 Arithmetic 1. abs_image
功能:計算一個圖像的絕對值(模數)。
2. add_image
功能:使兩個圖像相加。
3. div_image
功能:使兩個圖像相除。
4. invert_image
功能:使一個圖像反像。
5. max_image
功能:按像素計算兩個圖像的最大值。
6. min_image
功能:按像素計算兩個圖像的最大小值。
7. mult_image
功能:使兩個圖像相乘。
8. scale_image
功能:爲一個圖像的灰度值分級。
9. sqrt_image
功能:計算一個圖像的平方根。
10. sub_image
功能:使兩個圖像相減。

5.2 Bit 1. bit_and 功能:輸入圖像的全部像素的逐位與。 2. bit_lshift 功能:圖像的全部像素的左移。 3. bit_mask 功能:使用位掩碼的每一個像素的邏輯與。 4. bit_not 功能:對像素的全部位求補。 5. bit_or 功能:輸入圖像的全部像素的逐位或。 6. bit_rshift 功能:圖像的全部像素的右移。 7. bit_slice 功能:從像素中提取一位。 8. bit_xor 功能:輸入圖像的全部像素的逐位異或。

5.3 Color 1. cfa_to_rgb 功能:把一個單通道顏色濾波陣列圖像變成RGB圖像。 2. gen_principal_comp_trans 功能:計算多通道圖像的主要部分分析的轉換矩陣。 3. linear_trans_color 功能:計算多通道圖像的顏色值的一個仿射轉換。 4. principal_comp 功能:計算多通道圖像的主要部分。 5. rgb1_to_gray 功能:把一個RGB圖像轉變成一個灰度圖像。 6. rgb3_to_gray 功能:把一個RGB圖像轉變成一個灰度圖像。 7. trans_from_rgb 功能:把一個圖像從RGB顏色空間轉變成任意顏色空間。 8. trans_to_rgb 功能:把一個圖像從任意顏色空間轉變成RGB顏色空間。

5.4 Edges 1.close_edges 功能:使用邊緣幅值圖像消除邊緣缺陷。 2. close_edges_length 功能:使用邊緣幅值圖像消除邊緣缺陷。 3. derivate_gauss 功能:用高斯派生物對一個圖像卷積。 4. diff_of_gauss 功能:近似高斯的拉普拉斯算子。 5. edges_color 功能:使用Canny、Deriche或者_Shen_濾波器提取顏色邊緣。 6. edges_color_sub_pix 功能:使用Canny、Deriche或者_Shen_濾波器提取子像素精確顏色邊 緣。 7. edges_image 功能:使用Deriche、_Lanser、Shen或者_Canny濾波器提取邊緣。 8. edges_sub_pix 功能:使用Deriche、_Lanser、Shen或者_Canny濾波器提取子像素精 確邊緣。 9. frei_amp 功能:使用Frei-Chen算子檢測邊緣(幅值)。 10. frei_dir 功能:使用Frei-Chen算子檢測邊緣(幅值和相位)。 11. highpass_image 功能:從一個圖像提取高頻成分。 12. info_edges 功能:在edges_image估計濾波器的寬度。 13. kirsch_amp 功能:使用Kirsch算子檢測邊緣(幅值)。 14. kirsch_dir 功能:使用Kirsch算子檢測邊緣(幅值和相位)。 15. laplace 功能:使用有限差計算拉普拉斯算子。 16. laplace_of_gauss 功能:高斯的拉普拉斯算子。 17. prewitt_amp 功能:使用Prewitt算子檢測邊緣(幅值)。 18. prewitt_dir 功能:使用Prewitt算子檢測邊緣(幅值和相位)。 19. Roberts 功能:使用Roberts濾波器檢測邊緣。 20. robinson_amp 功能:使用Robinson算子檢測邊緣(幅值)。 21. robinson_dir 功能:使用Robinson算子檢測邊緣(幅值和相位)。 22. sobel_amp 功能:使用Sobel算子檢測邊緣(幅值)。 23. sobel_dir 功能:使用Sobel算子檢測邊緣(幅值和相位)。

5.5 Enhancement 1. adjust_mosaic_images 功能:全景圖像的自動顏色更改。 2. coherence_enhancing_diff 功能:執行一個圖像的一個一致性加強擴散。 3. emphasize 功能:加強圖像對比度。 4. equ_histo_image 功能:圖像的柱狀圖線性化。 5. illuminate 功能:加強圖像對比度。 6. mean_curvature_flow 功能:把平均曲率應用在一個圖像中。 7. scale_image_max_ 功能:最大灰度值在0到255範圍內。 8. shock_filter 功能:把一個衝擊濾波器應用到一個圖像中。

5.6 FFT 1. convol_fft 功能:用在頻域內的濾波器使一個圖像卷積。 2. convol_gabor 功能:用在頻域內的一個Gabor濾波器使一個圖像卷積。 3. correlation_fft 功能:計算在頻域內的兩個圖像的相互關係。 4. energy_gabor 功能:計算一個兩通道圖像的能量。 5. fft_generic 功能:計算一個圖像的快速傅里葉變換。 6. fft_image 功能:計算一個圖像的快速傅里葉變換。 7. fft_image_inv 功能:計算一個圖像的快速傅里葉逆變換。 8. gen_bandfilter 功能:生成一個理想帶通濾波器。 9. gen_bandpass 功能:生成一個理想帶通濾波器。 10. gen_derivative_filter 功能:在頻域內生成一個倒數濾波器。 11. gen_filter_mask 功能:在空域內存儲一個濾波器掩碼做爲實時圖像。 12. gen_gabor 功能:生成一個Gabor濾波器。 13. gen_gauss_filter 功能:在頻域內生成一個高斯濾波器。 14. gen_highpass 功能:生成一個理想高通濾波器。 15. gen_lowpass 功能:生成一個理想低通濾波器。 16. gen_sin_bandpass 功能:用正弦形狀生成一個帶通濾波器。 17. gen_std_bandpass 功能:用高斯或者正弦形狀生成一個帶通濾波器。 18. optimize_fft_speed 功能:使FFT的運行時間最優化。 19. optimize_rft_speed 功能:使實值的FFT的運行時間最優化。 20. phase_deg 功能:返回用角度表示的一個複雜圖像的相位。 21. phase_rad 功能:返回用弧度表示的一個複雜圖像的相位。 22. power_byte 功能:返回一個複雜圖像的功率譜。 23. power_ln_ 功能:返回一個複雜圖像的功率譜。 24. power_real 功能:返回一個複雜圖像的功率譜。 25. read_fft_optimization_data 功能:從一個文件中下載FFT速度最優數據。 26. rft_generic 功能:計算一個圖像的實值快速傅里葉變換。 27. write_fft_optimization_data 功能:把FFT速度最優數據存儲在一個文件中。

5.7 Geometric-Transformations 1. affine_trans_image 功能:把任意仿射2D變換應用在圖像中。 2. affine_trans_image_size 功能:把任意仿射2D變換應用在圖像中而且指定輸出圖像大小。 3. gen_bundle_adjusted_mosaic 功能:把多重圖像合成一個馬賽克圖像。 4. gen_cube_map_mosaic 功能:建立球形馬賽克的6方位圖像。 5. gen_projective_mosaic 功能:把多重圖像合成一個馬賽克圖像。 6. gen_spherical_mosaic 功能:建立一個球形馬賽克圖像。 7. map_image 功能:把一個通常變換應用於一個圖像中。 8. mirror_image 功能:鏡像一個圖像。 9. polar_trans_image 功能:把一個圖像轉換成極座標。 10. polar_trans_image_ext 功能:把一個圖像中的環形弧轉變成極座標。 11. polar_trans_image_inv 功能:把極座標中的圖像轉變成直角座標。 12. projective_trans_image 功能:把投影變換應用於一個圖像中。 13. projective_trans_image_size 功能:把投影變換應用於一個圖像中而且指定輸出圖像的大小。 14. rotate_image 功能:以一個圖像的中心爲圓心旋轉。 15. zoom_image_factor 功能:把一個圖像縮放規定因子倍。 16. zoom_image_size 功能:把一個圖像縮放到規定大小。

5.8 Inpainting 1. harmonic_interpolation 功能:對一個圖像區域執行諧波插值。 2. inpainting_aniso 功能:經過各向異性擴散執行圖像修復。 3. inpainting_ced 功能:經過一致性加強擴散執行圖像修復。 4. inpainting_ct 功能:經過連貫傳送執行圖像修復。 5. inpainting_mcf 功能:經過水平線平滑執行圖像修復。 6. inpainting_texture 功能:經過結構傳導執行圖像修復。

5.9 Lines 1. bandpass_image 功能:使用帶通濾波器提取邊緣。 2. lines_color 功能:檢測色線和它們的寬度。 3. lines_facet 功能:使用面模型檢測線。 4. lines_gauss 功能:檢測線和它們的寬度。

5.10 Match 1. exhaustive_match 功能:模板和圖像的匹配。 2. exhaustive_match_mg 功能:在一個分辨率塔式結構中匹配模板和圖像。 3. gen_gauss_pyramid 功能:計算一個高斯金字塔。 4. monotony 功能:計算單一操做。

5.11 Misc 1. convol_image 功能:用一個任意濾波掩碼對一個圖像卷積。 2. expand_domain_gray 功能:擴大圖像區域而且在擴大的區域中設置灰度值。 3. gray_inside 功能:對圖像中的每一點在圖像邊界的任意路徑計算儘量低的灰度 值。 4. gray_skeleton 功能:灰度值圖像的細化。 5. lut_trans 功能:使用灰度值查詢錶轉換一個圖像。 6. symmetry 功能:沿一行的灰度值的對稱性。 7. topographic_sketch 功能:計算一個圖像的地理原始草圖。

5.12 Noise 1. add_noise_distribution 功能:向一個圖像添加噪聲。 2. add_noise_white 功能:向一個圖像添加噪聲。 3. gauss_distribution 功能:產生一個高斯噪聲分佈。 4. noise_distribution_mean 功能:測定一個圖像的噪聲分佈。 5. sp_distribution 功能:產生一個椒鹽噪聲分佈。

5.13 Optical-Flow 1. optical_flow_mg 功能:計算兩個圖像之間的光流。 2. unwarp_image_vector_field 功能:使用一個矢量場來展開一個圖像。 3. vector_field_length 功能:計算一個矢量場的矢量長度。

5.14 Points 1. corner_response 功能:在圖像中尋找角點。 2. dots_image 功能:在一個圖像中加強圓形點。 3. points_foerstner 功能:使用Förstner算子檢測關注點。 4. points_harris 功能:使用Harris算子檢測關注點。 5. points_sojka 功能:使用Sojka算子找出角點。
5.15 Smoothing 1. anisotrope_diff 功能:經過保邊各向異性擴散平滑一個圖像。 2. anisotropic_diffusion 功能:對一個圖像執行各向異性擴散。 3. binomial_filter 功能:使用binomial濾波器平滑一個圖像。 4. eliminate_min_max 功能:在空域內平滑一個圖像來抑制噪聲。 5. eliminate_sp 功能:用中值替代閥值外的值。 6. fill_interlace 功能:插補兩個半個視頻圖像。 9. gauss_image 功能:使用離散高斯函數平滑圖像。 10. info_smooth 功能:平滑濾波器smooth_image的信息。 11. isotropic_diffusion 功能:對一個圖像執行各向同性擴散。 12. mean_image 功能:經過平均平滑一個圖像。 13. mean_n 功能:幾個通道的平均灰度值。 14. mean_sp 功能:抑制椒鹽噪聲。 15. median_image 功能:使用不一樣級別掩碼的中值濾波16. median_separate_ 功能:使用矩形掩碼的離散中值濾波。 17. median_weighted 功能:使用不一樣級別掩碼的加權中值濾波。 18. midrange_image 功能:計算掩碼內最大和最小值的平均。 19. rank_image 功能:經過一個任意等級掩碼平滑一個圖像。 20. sigma_image 功能:使用sigma濾波器的非線性平滑。 21. smooth_image 功能:使用遞歸濾波器平滑一個圖像。 22. trimmed_mean 功能:使用任意等級掩碼平滑一個圖像。 5.16 Texture 1. deviation_image 功能:計算矩形窗口內的灰度值的標準誤差。 2. entropy_image 功能:計算矩形窗口內的灰度值的熵。 3. texture_laws 功能:使用一個Laws文本濾波器過濾一個圖像。
5.17 Wiener-Filter 1. gen_psf_defocus 功能:產生一個均勻散焦模糊的脈衝相應。 2. gen_psf_motion 功能:產生一個(線性)運動模糊的脈衝相應。 3. simulate_defocus 功能:對一個圖像的均勻散焦模糊進行仿真。 4. simulate_motion 功能:(線性)運動模糊的仿真。 5. wiener_filter 功能:經過Wiener濾波進行圖像恢復。 6. wiener_filter_ni 功能:經過Wiener 濾波進行圖像恢復。
相關文章
相關標籤/搜索