ハフ円検出原理
平面は極座標への三つのパラメータから座標変換
円上の任意の点は、仮想平面座標、極座標への変換である:
最大、ハフ変換が円の検出のこの原理を用いて達成されています。
CV :: HoughCircles ハフ円検出は、ノイズに敏感であるので、我々は最初の画像メディアンフィルタリングを行う必要があるためです。 効率の考慮に基づいて、ハフ円検出変換OpenCVの画像勾配に基づく、2つのステップを達成するために実装されている: 1 。エッジを検出し、中心を求めることができる 2は中央に基づいて、第1ステップから最良の候補に基づいてカウントしました。半径の大きさ
HoughCircles( InputArrayイメージ、 // 入力画像は、単一チャネルの8ビットグレースケール画像である必要があり outputArray円社会、 // 出力結果、円形の情報 のInt方法、 // HOUGH_GRADIENT -方法 ダブルDP、 // 。; DP = 1 ダブルmindist、 // 10の最短距離は、 - src_gray.rows / 8 - 2つの同心円、又はその中に分解することができる ダブルPARAM1、 // キャニーエッジ検出閾値ロー ダブルPARAM2、 // 中心点アキュムレータ閾値-候補中心 minRadius INT、 // 最小半径 INT maxRadius // 最大半径 )
INTメイン(int型 ARGC、チャー ** ARGV){ マットSRC、DST。 SRC = 関数imread(STRPAHT3)。 もし(!src.data){ のprintf(" 画像... \ nを読み込むことができませんでした" ); 戻る - 1 。 } マットmoutput。 // 中值滤波medianBlur medianBlur(SRC、moutput、3 ); cvtColor(moutput、moutput、CV_BGR2GRAY)。 // 基于灰度空间 ベクトル<Vec3f> pcircles。 HoughCircles(moutput、pcircles、CV_HOUGH_GRADIENT、1、10、100、30、5、50 )。 src.copyTo(DST)。 // 重新传回RGB色彩空间 cvtColor(DST、DST、CV_BGR2GRAY)。 以下のための(iは= SIZE_T 0 ; iはpcircles.size()<; iは++ ){ Vec3fのCC = pcirclesを[I]。 円(DST、ポイント(CC [ 0 ]、CC [ 1 ])、CC [ 2 ]、スカラー(0、0、255)、2 、LINE_AA)。 円(DST、ポイント(CC [ 0 ]、CC [ 1 ])、2、スカラ(198、23、155)、2 、LINE_AA)。 } 関数imshow(" OUTPUT_TITLE " 、DST)。 waitKey(0 )。 }