ちょくせんけんしゅつ


Huff変換


ちょくせんけんしゅつ


2 Dイメージ座標の直線方程式をパラメータ空間に変換し、直線を検索します.

シナリオの蓄積


直線成分と相関元素値をそれぞれ1ずつ増加
私たちは写真で変化の過程を表現します.



直線方程式(y=ax+b)問題


y軸に平行な垂直線をうまく表現できないので,極座標系直線の方程式を用いる.
*aは3ダース
xcosa+ysina=pをパラメータ空間に変換

セグメント検出



  • image:エッジビデオの入力

  • rho:蓄積アレイでrho値で1.0->1ピクセル間隔

  • theta:蓄積配列において、theta値の間隔でnp.pi/180->1度間隔

  • threshold:蓄積アレイ内の直線を判断するためのしきい値

  • lines:直線パラメータ(rho,theta)情報を含むnumpy.ndarray.shape=(N,1,2).dtype=numpy.float32.

  • srn,stn:マルチスケールhuff変換でrho解像度とtheta解像度の値をデフォルト値で0で割った場合、従来のhuff変換が実行されます

  • min theta,max theta:検出する線分の最大最小theta値
  • 検出確率Huff変換線分



  • image:エッジビデオの入力

  • rho:アレイ内のrho値の間隔を蓄積します.(e.g.)1.01画素間隔.

  • theta:配列内のtheta値の間隔を蓄積します.(e.g.) np.pi/1801°間隔.

  • threshold:蓄積配列から直線と判断されるしきい値

  • lines:線分の始点座標と終点座標(x 1、y 1、x 2、y 2)情報を含むnumpy.ndarray.shape=(N, 1, 4). dtype=numpy.int32.

  • minLineLength:検出する線分の最小長さ

  • maxLineGap:直線とみなされる最大エッジポイント間隔
  • src = cv2.imread('building.jpg', cv2.IMREAD_GRAYSCALE)
    edges = cv2.Canny(src, 50, 150)
    lines = cv2.HoughLinesP(edges, 1.0, np.pi / 180., 160,
    minLineLength=50, maxLineGap=5)
    dst = cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
    if lines is not None:
    for i in range(lines.shape[0]):
    pt1 = (lines[i][0][0], lines[i][0][1]) # 시작점 좌표
    pt2 = (lines[i][0][2], lines[i][0][3]) # 끝점 좌표
    cv2.line(dst, pt1, pt2, (0, 0, 255), 2, cv2.LINE_AA)