コンピュータビジョンプロジェクト

プロジェクトのGitHubリポジトリ

About

このリポジトリは、Colorado School of MinesCSCI437に2020年秋学期に在籍していた間に、MehmetJeanが取り組んだすべてのコーディングプロジェクト(ラボ)を紹介します。期間は2020年8月28日から2020年12月14日までです。これらのラボは、Python、OpenCV、基本的なコンピュータビジョンの概念を学ぶための包括的なプラットフォームを提供しました。

About The Class

私はコンピュータビジョン入門 (CSCI437) を2020年秋学期に受講しました。この期間、Dr. William Hoff と Dr. Tom Williams がクラスを教えていました。CSCI437。以下はCSCI437の公式クラス説明です:

(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).

Credits

CSCI437の講義、スライド、またはCanvasを通じて提供されたPythonスクリプトやコードの一部があります。CSCI437クラスはColorado School of Minesで提供されています。これらのラボは以下のパートナーと共に実施されました:

  • Jean Duong
  • Mehmet Yilmaz

Lab Descriptions

ラボ 1

ラボ1は、PythonでOpenCVを使用する基本に焦点を当てています。参加者はビデオファイルを読み込み、ビデオの各フレームに正方形を形成する4点を投影し、各点のZ座標を段階的に調整して正方形が遠ざかる様子をシミュレートするPythonプログラムを書くことが期待されています。さらに、各フレームにフレーム番号を表示し、グラフィックオーバーレイ付きの最終ビデオを評価のためにアップロードする必要があります。

ラボ 2

ラボ2は画像変換を扱い、特に「XYZ固定角」規約を用いたX、Y、Z軸周りの回転に焦点を当てています。学生は回転行列を計算し、カメラ姿勢の同次変換行列を求め、キャリブレーション行列を作成し、OpenCVのline関数を使用して既知のオブジェクトを形成するように点を画像に投影します。このラボは、コンピュータビジョンにおけるカメラ幾何学と変換行列の理解を強調します。

ラボ 3

ラボ3はテンプレートマッチングに関するもので、学生は正規化相互相関を使用して映画ファイルの各フレームでテンプレートサブ画像を追跡する課題に取り組みます。課題では、ユーザーが映画の最初の画像からテンプレートを選択し、そのテンプレートを後続の画像で追跡し、各画像にテンプレートの位置を示す矩形を描画し、これらの位置を示す出力映画ファイルを作成します。学生は異なるテンプレートを試して、どのテンプレートが最適な追跡を可能にするか、そして一致が正しく識別されたときの相関スコアについて議論することが奨励されます。

ラボ 4

ラボ4はHSV色空間を使用したカラーセグメンテーションに焦点を当てており、講義でその有効性が取り上げられました。学生は提供された画像から停止標識のピクセルをセグメント化するためにしきい値操作を適用するPython/OpenCVプログラムを作成します。課題では、停止標識ピクセルを最もよく検出するしきい値を見つけ、形態学的操作で結果をクリーンアップし、セグメント化された画像とPythonプログラム、使用したしきい値と形態学的操作のパラメータを提出する必要があります。

ラボ 5

ラボ5は、既存画像の特定領域に新しい画像テクスチャを挿入し、投影が正しく見えるようにする課題です。このプロセスは平面置換と呼ばれ、学生は射影変換(ホモグラフィ)技術を使用して新しい画像を既存画像の平面領域にマッピングします。ラボは、透視正確性を保ちつつ画像内容を変更するためのホモグラフィの実用的な応用を強調します。学生は元画像、置換テクスチャを適用した画像、合成画像、およびPythonプログラムをラボ提出物として提出することが期待されています。

ラボ 6

ラボ6は、画像内にある5つの対照的な同心円(CCC)で構成されたターゲットを検出し、その姿勢を計算する課題です。OpenCVを使用してCCCターゲットを検出し、正しく順序付けし、OpenCVのsolvePnP()関数で姿勢を計算し、座標軸と姿勢を画像に描画します。このラボは、ターゲット検出、姿勢推定、視覚的出力フォーマットといった概念の応用を強調します。

ラボ 7

ラボ7は、画像間のSIFT特徴の検出とマッチングに焦点を当てています。目的は、ある画像から別の画像へのSIFT特徴の正しいマッチを特定し、これらのマッチの精度を分析することです。学生は提供されたPythonコードとデータセットの画像を使用し、アルゴリズムパラメータを調整してマッチ検出を最適化し、異なるパラメータ設定に対する適合率と再現率を計算して特徴マッチングプロセスの性能を評価します。学生はPythonプログラムと各パラメータ設定に対する適合率・再現率の値を提出する必要があります。

ラボ 8

ラボ8は、特徴マッチングとアフィン変換フィッティングを用いたオブジェクト検出に焦点を当て、トレーニング画像からオブジェクトを検出し、クエリ画像にオーバーレイします。学生は異なるシナリオでオブジェクトを検出し、誤検出を減らすためにインライアマッチ数の閾値を調整し、精度、再現率、正確度の指標を計算してオブジェクト検出システムの性能を評価します。学生は提供されたPythonコードを修正・実行し、さまざまな条件下でのシステム性能を分析し、結果と修正コードを提出することが期待されています。

ラボ 9

ラボ9は、トレーニング画像内のオブジェクトに注釈点を配置し、後続のクエリ画像でもその点が正しく表示されるように自動的に示す課題です。このラボは、特徴抽出、曖昧なマッチを排除するための比率テストによるマッチング、RANSACを用いた2Dアフィン変換のフィッティングによる外れ値除去、そしてトレーニング画像からクエリ画像への注釈点の変換適用を強調します。重要な課題は、偽陽性と偽陰性のバランスを取るためにインライアマッチ数の閾値を調整し、画像を正しく分類する最高の精度を目指すことです。

ラボ 10

ラボ10は、ハフ変換を使用して画像内の線分を検出し、平行線のセットを特定することに専念しています。OpenCVのcv2.HoughLinesP()関数による確率的ハフ変換を利用して、端点で表される線分を検出します。また、これらの線分の方向ベクトルを分析して消失点を特定し、2D画像平面上に現れる3D空間での平行線の向きを理解することを目指します。学生はテスト画像を処理して平行線分を見つけ、パラメータを調整して検出を最適化し、結果とPythonプログラムを提出します。

Notes

  • これらのスクリプト/ラボを実行するには、次のサードパーティPythonパッケージが必要です: cv2 と numpy。
  • これらのラボの一部は特定のバージョンのcv2を使用する必要があるかもしれません。残念ながら要件は文書化されていないため、自己解決が必要です。解決できた場合や行き詰まった場合は、issues form に報告してください。