2018opencvのHOGDescriptorとSVM(getDaimlerPeopleDetector)で人検出getDaimlerPeopleDetectorを使っての人検出。getDefaultPeopleDetectorを使った人検出はこちら。あるが、getDefaultPeopleDetectorでの検出に比べると漏れは少なくなる印象。8などのピクセルを移動させてHOG特徴量の抽出を行う。HOG特徴量は領域内の勾配方向ごとの勾配強度を計算してそれをヒストグラムにしたものらしい。画像中の輝度変化を抽出していることになる。SVMは入力が正解か不正解を分類する分類器。大量のデータとラベルの組から正解ラベルのデータ、不正解ラベルのデータを学習し正解と不正解の境界線を引く。opencvにはすでに学習済みの人識別器が同梱されており、これを使って人の検出を行ってみる。あるが、とりあえず機能はしている様子。opencvの人認識器には今回試したgetDefaultPeopleDetector以外にgetDaimlerPeopleDetectorという認識器が同梱されている。これについては次回以降で実験してみる。2018opencvを使いHarrisコーナー検出で画像からコーナー部を抽出するコーナー部の特徴量抽出をする方法としてMoravecの方法や、Harrisの方法というものがある。検出のためのアルゴリズムは難解で自分には理解できず。実行テストした結果とコードを乗せる。コーナー部分を抽出できていることがわかる。2018opencvを使い確率的ハフ変換で画像から直線を探すハフ変換は与えられたパラメータから全条件を計算し直線を求めるのに対し、確率的ハフ変換はある程度の当たりをつけて計算し、負荷を軽くする。2018opencvを使いハフ変換で画像から直線を探すハフ変換は画像の中にある直線形状や円形状を検出する際に用いられる手法の一つ。opencvではHoughLinesという関数が用意されており、これを使うことで検出が容易となる(計算付加は指定するパラメータの精度により異なる)。2018opencvの機能を使いモルフォロジー演算を行う画像からのノイズ除去、テクスチャ解析等に使用される演算手法。背景の画素と隣接する物体の画素の関係を膨張(dilate)、収縮(erosion)させることで画像の2値化、グレースケール化を行うことができる。openCVではmorphologyExのメソッドによりさらに以下の処理が可能。縦軸を1ピクセルあたりの画素強度、横軸を座標として、ピクセル間の強度値変化を周波数分布に変換する画像に対するフーリエ変換のピクセルあたりの画素強度の例として、1×7サイズのグレースケール画像を考える。下記のようなもの(ここでは視認性のため、拡大した画像で表示)。画素強度値は明るいほど値が大きい。グレースケールの255階調で考えれば、白い箇所は255、黒い箇所は0の値となる。先ほどの画像にピクセル毎に強度値を重ねて表示すると下記のような値を持つ。上記画像の強度値を、縦軸を1ピクセルあたりの画素強度、横軸を座標として表しなおしたグラフが下記。画像に対するフーリエ変換はこのグラフに対して行っていることになるただし通常画像はもっと大きなサイズであり、1ピクセル高ということはない。そのため、実際には各ピクセル行に対してフーリエ変換を行う。各行へのフーリエ変換の実施後はデータを転置し、転置後のデータに対して再度各行に対してフーリエ変換を実施する。その後再度転置を行いデータの向きを元に戻す作業を行う。これで画像に対する2次元フーリエ変換となる。ここまでの内容をpythonコードにしたものが下記。2018numpyとopenCVを使った画像のフーリエ変換と逆変換openCVを使い画像読み込み、fftで周波数データに変換。その後逆変換で元の画像に戻すテスト。入力に使用する画像は↓。サイズは360×240。画像入力、グレースケールで取り込む。cv2.IMREAD_GRAYSCALE)cv2.imshow("original",image)cv2.waitKey(0)cv2.destroyWindow()実行すると元の画像がグレースケールで表示される。imreadは引数2つ、1つ目は読み込みファイル、2つ目は読み込みオプションで以下3つ(1,0,-1でも指定可)。fimage.shapenp.fft.fft2()は2次元FFT。arrayで返ってくる。360)変換結果をパワースペクトルで確認してみる。確認に使用したコードが下記。逆変換で元の画像に戻すコード。注意として変換後の結果には複素数成分が含まれているので、実部を取り出す処理が必要。グレースケールで表示するために0-255階調への値調整が必要になる。ifft",ifimage)cv2.waitKey(0)cv2.destroyWindow()実行結果が下記グレースケールでもとの画像に戻ってきた。最近の投稿ある点(x,y)が多角形の内部にあるかどうかを判定するアルゴリズムボロノイ図を使いポリゴン図形の中に中心線を引くpolygonを形成する頂点列からボロノイ図を作成する頂点列で表すPolygonを構成する長いエッジに対しエッジ分割し、頂点を追加する。