システム開発

OpenCVのHomographyについての説明

OpenCVのHomographyは、2つの画像間の画像編集、画像合成、動きの計算、回転、シフトなどを簡単に行う計算方法です。

この記事ではそんなホモグラフィの基本的な計算方法や、実際にOpenCVでどのように書いていけばいいのかなどを紹介しています。

  • OpenCVが気になる方
  • ホモグラフィについて知りたい方

これらに当てはまる方におすすめの記事となっています。これを読めばホモグラフィの活用方法が分かりますよ。

ホモグラフィとは?

ホモグラフィはオブジェクトプレーンをイメージプレーンにマッピングすることを指します。

ホモグラフィマトリックスは2つの画像間の処理タスクに関連することが多く、2つの画像間の画像編集、画像合成、動きの計算、回転、またはシフトに非常に幅広い用途があります。

計算式は以下の通りです。

HX = sX’
s:
投影の比例定数と0以外
X’: マッピングの結果
X: マッピングされた画像オブジェクト
H:ホモグラフィ行列であり、可逆行列

X ‘からX画像を作成する場合は、ホモグラフィ行列を定義するだけです。

上の本の写真を例に具体的に説明します。

この本2冊で、赤、黄、青、オレンジの4組の点を考慮します。

ホモグラフィは3X3というマトリックスです。

上記の2冊の絵本の対応する点のペアを考えます。たとえば、左が(x1、y1)で右が(x2、y2)の場合、次のようになります。

上記の方程式は、2冊の本のすべての対応する点に当てはまります。

したがって、行列Hを取得すると、最初の本の画像を2番目の画像の本の角度に回転できます。

Opencvでホモグラフィ行列を世計算する

2つの画像間のホモグラフィを計算するには、2つの画像間に対応する点の4つが必要です。

Opencvは、すべての点に適合するホモグラフィを推定します。

C++をコードする時、右の本の画像を左の本の画像のように回転する必要があります。

#include “opencv2/opencv.hpp”

using namespace cv;

using namespace std;

int main( int argc, char** argv)

{

//回転が必要な写真を読む

Mat im_src = imread(“book2.jpg”);

// 回転する必要がある本で適当な点の4つ

vector<Point2f> pts_src;

pts_src.push_back(Point2f(141, 131));

pts_src.push_back(Point2f(480, 159));

pts_src.push_back(Point2f(493, 630));

pts_src.push_back(Point2f(64, 601));

// book1の画像を読む

Mat im_dst = imread(“book1.jpg”);

// 回転する必要がある画像で点の4つに該当する点の4つ

vector<Point2f> pts_dst;

pts_dst.push_back(Point2f(318, 256));

pts_dst.push_back(Point2f(534, 372));

pts_dst.push_back(Point2f(316, 670));

pts_dst.push_back(Point2f(73, 473));

//画像の2つのホモグラフィのマトリックスを探す。

Mat h = findHomography(pts_src, pts_dst);

Mat im_out;

//ホモグラフィの通り回転の必要な画像を回転する

warpPerspective(im_src, im_out, h, im_out.size());

// im_src: は回転の必要の画像

// im_out: は結果の画像です。

// h: は以上の計算したホモグラフィです。

// im_out: は結果の画像です。

// im_out.size: 結果画像のサイズです。

    //画像の表示

imshow(“Source Image”, im_src);

imshow(“Destination Image”, im_dst);

imshow(“Warped Source Image”, im_out);

waitKey(0);

}

アフィン変換

アフィン変換では、オブジェクトの特徴点を対応する新しい点のセットに変換して、オブジェクト全体に効果を作成します。

たとえば、線の端点のみを使用した座標変換では2つの新しい点が作成され、結合すると新しい線が作成されます。

複雑な変換は、次のような基本的な変換で構成できます。

– 翻訳 (Translation)

– 比率(Scaling)

– 回転 (Rotation)

– 変化 (Shearing)

アフィン変換は2X3 というマトリックスです。

 点(x, y) を指定すると、アフィンにより、点 (xt, yt)に変換します。

まとめ

いかがでしたか。本日はホモグラフィ行列をOpencvで行う方法をまとめていきました。

ホモグラフティ行列なら、他のアルゴリズムよりも簡単に画像などを変換することができました。

ぜひこの記事を参考にOpencvでホモグラフィ変換を行ってみて下さい。

dehaでは、5年ほど前から、ベトナムオフショア開発を行っています。

ベトナムでオフショア開発を行う際の費用や、エンジニアの質を知りたい方は、無料で見積もりいたしますので、お気軽にお問い合わせください。

お問い合わせはこちらから

Van Nguyen

Recent Posts

【2026年版】ベトナム デジタル状況、最新動向

2026年のベトナムは、東南アジアの中でも特に「デジタル化が成熟段階に入りつつある国」として注目を集めています。 スマートフォンの普及、ソーシャルメディアの浸透、高速通信インフラの整備、そして若く人口ボーナス期にある社会構造が相まって、デジタル技術はすでに人々の日常生活、経済活動、情報収集の中核となっています。 この記事では、DataReportal「Digital 2026 Vietnam」レポートをもとに、2026年のベトナムにおけるデジタルデバイス、インターネット、ソーシャルメディア、主要プラットフォームの利用状況とその背景、そして今後の方向性について総合的に解説していきます。 ベトナムのデジタルの最新情報が気になる方 社内のIT人材が不足している方 ベトナムのIT人材が気になる方 これらに当てはまる方におすすめの記事となっています。これを読めばベトナムのデジタルの最新情報や動向が丸わかりですよ。 関連記事: 【2024年版】ベトナムのDX市場の状況と動向 2025年のベトナム デジタル状況、最新動向 (more…)

6 days ago

コードを書く時代から「制約」を設計する時代へ

ソフトウェア開発の歴史において、エンジニアの核心的な能力は「コードを書く力」で測られてきました。しかし、AI技術が飛躍的に進歩し、人間よりも速く一貫性のあるコードを生成できるようになった今、その価値の軸が大きくシフトしています。 これからのエンジニアに求められるのは、単なるプログラミングスキルではなく、いかに高度なAI活用を行い、システムに何を許し、何を許さないかという「制約」を正しく設計できるかという点にあります。 (more…)

1 week ago

2026年のクラウド市場シェアと動向【世界及び日本国内】

クラウドコンピューティングは、企業や政府のデジタルトランスフォーメーション(DX)を支える基盤です。 データ保存、アプリケーション実行、AI・データ分析など、あらゆるITインフラがクラウドを通じて提供されるようになった現代において、クラウド市場の動向は企業戦略の要です。 2026年は世界的に5G、AI、IoT(モノのインターネット)、機械学習などがクラウド活用を加速させ、市場全体が大きく成長すると予測されています。 この記事では、2026年のクラウド市場について世界市場の最新シェアや日本国内のクラウド市場シェアとその特徴などを紹介していきます。 企業の IT戦略・DX推進担当者の方 クラウド関連ビジネスに関わる方 これらに当てはまる方におすすめの記事となっています。これを読めば2026年のクラウド市場のシェアやトレンドが丸わかりですよ。 (more…)

1 week ago

2030年までに日本のIT市場はどう変わるのか?

2030年に向けて、日本のIT市場は単なる成長産業ではなく、社会全体を支える基盤(インフラ)としての性格を一層強めていくと考えられます。 背景には、世界規模で進行するデジタル化、AI技術の急速な発展、クラウドサービスの定着、そして日本固有の人口減少・地方分散という社会構造の変化があります。 この記事では、世界のICT市場動向を起点に、日本のソーシャルメディア、メタバース、クラウド、データセンター、情報セキュリティといった分野が、2030年に向けてどのように変化していくのかを多角的に整理していきます。 IT市場の未来が気になる方 AI技術がどのように発展していくか気になる方 これらに当てはまる方におすすめの記事となっています。これを読めば日本のIT市場の未来が丸わかりですよ。 (more…)

1 week ago

【経産省公表】2040年にAI人材326万人不足。デジタル時代を生き抜く「グローバル開発」のおすすめ

日本は2030年代に入ると急激に人口が減少し、労働力全体の供給が縮小するとの構造的な課題を抱えています。 特にデジタル技術の中心となるAI(人工知能)やロボットの開発・利活用を担う人材の不足が深刻になるとの推計が経済産業省の将来試算で示されています。 現在の教育・採用のままでは、2040年にAI・ロボット関連の人材が約326万人不足する可能性があるとされています。 この数字の背景には、生成AIの急速な普及やデジタル技術の社会インフラ化がある一方で、既存の人材供給は追いつかず、求められるスキルとのミスマッチが拡大している実態があります。 この記事では、こうした人材リスクの本質を整理しつつ、デジタル人材減少時代を生き抜く方策として、オフショア(海外)によるグローバル開発チームの構築戦略をご紹介します。 人材不足にお悩みの方 オフショア開発に興味がある方 これらに当てはまる方におすすめの記事となっています。これを読めばデジタル人材減少時代をどう生き抜くかその方法がわかりますよ。 (more…)

3 weeks ago

【製造業におけるIFS活用】統合プロセスによる生産管理自動化の方式とプロセスモデル

近年、製造業はかつてないほどの環境変化に直面しています。 需要変動の激化、多品種少量生産への対応、グローバルサプライチェーンの複雑化、人手不足、原材料価格の高騰など、経営・現場の両面で不確実性が増大しているのです。 このような状況下において、多くの企業が課題として挙げるのが生産管理の属人化・分断化です。 販売計画と生産計画が連動していない 在庫情報がリアルタイムに把握できない 工程進捗が見えず、計画変更が後手に回る システムは導入しているが、Excelや紙運用が残っている これらの問題は、部分最適なシステム導入や、部門ごとに分断された業務プロセスによって引き起こされることが多いです。 こうした背景の中で注目されているのが、IFS(Industrial and Financial Systems)を活用した統合型生産管理の自動化。 この記事では、IFSの特長を踏まえながら、製造業における生産管理自動化の方式と、それを支えるプロセスモデルについて詳しく解説していきます。 (more…)

1 month ago