システム開発

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

情報をデータ化すべき理由は?メリット、方法と注意点

情報のデータ化は、現代のビジネス環境で競争力を維持するための重要なステップです。 特に、人手不足や物価上昇、脱炭素への対応が喫緊の課題となる中、効率化と柔軟性を可能にするデータ化は、企業にとって大きな武器となります。 この記事では、データ化の理由やメリット、具体的な実施方法、そして注意すべきポイントを解説します。 DX化をすすめている企業の方 人材不足にお悩みの方 業務効率化を図りたい方 これらに当てはまる方におすすめの記事となっています。これを読めば情報のデータ化についてはもちろん、OCRについても分かりますよ。 (more…)

2 days ago

2030年のAI人材は12万人まで不足する見込み〜解決法は?

AI(人工知能)は第4次産業革命の中核を担う技術として、社会のさまざまな分野でその存在感を増しています。 生産効率の向上、ビッグデータの分析、サービスの高度化など、AIの活用は経済成長と社会問題の解決に直結しています。 その担い手となるAI人材は、日本経済の持続的な発展に不可欠な存在です。 一方で、日本では少子高齢化が進む中、AI人材の需要が急増し、2030年には約12万人の不足が見込まれています​。 この問題を放置すれば、AIを活用したイノベーションや競争力の低下が懸念されます。この記事では、そんなAI人材不足の現状、背景、そして解決策を解説します。 AI人材に興味がある方 人材不足にお悩みの方 これらに当てはまる方におすすめの記事となっています。これを読めばAI人材不足について、具体的な解決策が丸わかりですよ。 (more…)

1 week ago

Power Platformとは?PowerAppsとの違いを徹底解説

Microsoftが提供するPower Platformは、業務効率化やデータ活用、そしてビジネスプロセスの自動化を実現するための包括的な仕組みです。 本記事では、その特徴や構成要素に加え、特に「PowerApps」との違いについて詳しく解説します。 営業活動の生産性を向上させたい方 社内リソースに制約があり、自動化を進めたい方 ノーコード開発ツールに興味がある方 これらに当てはまる方におすすめの記事となっています。この記事を読めば、特徴や利用方法が明確になるだけでなく、実践的な活用例も理解できます。 (more…)

2 weeks ago

Microsoft PowerAppsを活用してローコードで業務アプリを簡単に開発

現代のビジネス環境では、迅速な意思決定と効率的な業務運営が求められます。その中で、企業の業務プロセスをデジタル化するために、カスタムアプリの開発が重要な役割を果たしています。 しかし、従来のアプリ開発は多くの時間とリソースを必要とし、専門的なプログラミングスキルを持つエンジニアが必要です。 この課題を解決する手段として注目されているのが、「ローコード」開発です。 この記事ではそんなローコード開発に関して、代表的なツールMicrosoft PowerAppsについて解説していきたいと思います。 Microsoft PowerAppsが気になっている方 ローコード開発を行いたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばローコード開発で人気のMicrosoft PowerAppsについてその特徴が丸わかりですよ。 (more…)

2 weeks ago

オフショア開発におけるAI開発の実績まとめ

近年、AI技術の進展とともに、企業のデジタルトランスフォーメーション(DX)推進が急務とされ、多くの企業がAIソリューションの開発を進めています。 オフショア開発におけるAIプロジェクトは、技術的な知見と効率的な体制が求められます。 この記事では、DEHAソリューションズでのAI開発事例について紹介し、それぞれのプロジェクトで実現されたユニークな機能や開発体制についてまとめます。 オフショア開発に興味がある方 AI開発を行いたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばAI開発での具体的な事例が丸わかりですよ。 (more…)

2 weeks ago

ベトナム進出の日系製造業がDX化の今と今後|自動化による生産性向上

2024年現在、米中摩擦や新型コロナウイルスによるサプライチェーン混乱の影響を受け、製造業の生産拠点としてASEAN地域の需要が急速に増加しています。 その中でも特に注目されるのが、安価な労働力と豊富な人材を持つベトナムです。日系企業はこうした環境を活用し、積極的にベトナムへの進出を進めています。 しかし同時に、ASEAN域内では人件費上昇や人材確保の難しさといった課題も浮上しており、それに対応するために製造現場の自動化やDX化への関心が高まっています。 そこでここではそんなベトナムのDX化について、現状をお伝えしていきたいと思います。 ベトナム進出をお考えの方 ベトナムのDX化に興味がある方 これらに当てはまる方におすすめの記事となっています。これを読めばベトナム進出の日系企業のDX化の現状がわかるのはもちろん、今後の予測も分かりますよ。 (more…)

3 weeks ago