1. 程式人生 > >Halcon基礎(4)霍夫變換

Halcon基礎(4)霍夫變換

定義:

       霍夫變換是影象處理中從影象中識別幾何形狀的基本方法之一幾何形狀包括圓,橢圓和直線等等.

霍夫變換原理:

       設影象上的直線是y=x, 我們先取上面的三個點:A(0,0), B(1,1), C(2,2)。可以求出,過A點的直線的引數要滿足方程b=0, 過B點的直線的引數要滿足方程1=k+b, 過C點的直線的引數要滿足方程2=2k+b, 這三個方程就對應著引數平面上的三條直線,而這三條直線會相交於一點(k=1,b=0)。 同理,原影象上直線y=x上的其它點(如(3,3),(4,4)等) 對應引數平面上的直線也會通過點(k=1,b=0)。

       當直線與x軸垂直,直角的正切值無窮大,故此直線不存在斜率

,所以實際應用中,是採用引數方程p=x*cos(θ)+y*sin(θ)。這樣,影象平面上的一個點就對應到引數p---θ平面上的一條曲線上。

* 利用HOUGH變換進行直線的檢測,並將檢測結果返回到HNF中
*

read_image (Image, 'fabrik')
get_image_size (Image,Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
*將影象轉化成一個區域
rectangle1_domain (Image, ImageReduced, 230, 180, 330, 280)
* 使用sobel運算元檢測影象邊緣
sobel_amp (ImageReduced, EdgeAmplitude, 'thin_sum_abs', 3)
dev_set_color ('red')
threshold (EdgeAmplitude, Region, 10, 255)
hough_lines (Region, 4, 50, 5, 5, Angle, Dist)
dev_set_color ('blue')
* 將直線轉換成區域
gen_region_hline (Regions, Angle, Dist)