OpenCVのHomographyは、2つの画像間の画像編集、画像合成、動きの計算、回転、シフトなどを簡単に行う計算方法です。
この記事ではそんなホモグラフィの基本的な計算方法や、実際にOpenCVでどのように書いていけばいいのかなどを紹介しています。
これらに当てはまる方におすすめの記事となっています。これを読めばホモグラフィの活用方法が分かりますよ。
ホモグラフィはオブジェクトプレーンをイメージプレーンにマッピングすることを指します。
ホモグラフィマトリックスは2つの画像間の処理タスクに関連することが多く、2つの画像間の画像編集、画像合成、動きの計算、回転、またはシフトに非常に幅広い用途があります。
計算式は以下の通りです。
HX = sX’
s: 投影の比例定数と0以外
X’: マッピングの結果
X: マッピングされた画像オブジェクト
H:ホモグラフィ行列であり、可逆行列
X ‘からX画像を作成する場合は、ホモグラフィ行列を定義するだけです。
上の本の写真を例に具体的に説明します。
この本2冊で、赤、黄、青、オレンジの4組の点を考慮します。
ホモグラフィは3X3というマトリックスです。
上記の2冊の絵本の対応する点のペアを考えます。たとえば、左が(x1、y1)で右が(x2、y2)の場合、次のようになります。
上記の方程式は、2冊の本のすべての対応する点に当てはまります。
したがって、行列Hを取得すると、最初の本の画像を2番目の画像の本の角度に回転できます。
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年ほど前から、ベトナムオフショア開発を行っています。
ベトナムでオフショア開発を行う際の費用や、エンジニアの質を知りたい方は、無料で見積もりいたしますので、お気軽にお問い合わせください。
生成AIの急速な普及を背景に、世界各国で企業のAI活用が加速しています。 その中でもベトナムは、政府による積極的なAI政策やデジタル化の推進、海外企業による投資拡大を追い風に、東南アジア有数の成長市場として注目を集めています。 この記事では、最新の市場規模や市場シェア、成長を支える要因、主要企業の動向をもとに、2034年に向けたベトナム企業AI市場の将来性と日本企業に広がるビジネスチャンスについて詳しく解説します。 AI市場に興味がある方 ベトナムのIT市場に興味がある方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばベトナム企業のAI市場規模がわかるのはもちろん将来の予測もわかりますよ。 (more…)
近年、システム開発で代表的な手法として長年利用されてきたのが「ウォーターフォール開発」と「アジャイル開発」を組み合わせた「ハイブリッド開発」が新たな選択肢として注目されています。 この記事ではそんな「ハイブリッド開発」について、どう言った特徴があるのかや、企業価値を最大化するためにはどのような視点で開発戦略を選択すべきかについて見ていきます。 アジャイル開発に興味がある方 DX化を進めたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば「ウォーターフォール開発」と「アジャイル開発」のそれぞれの特徴と、それを掛け合わせた「ハイブリッド開発」の特徴が丸わかりですよ。 アジャイル開発の特徴とメリット アジャイル開発とは、「素早い」「俊敏な」という意味を持つ言葉の通り、変化に柔軟に対応しながらシステムを開発する手法です。 従来のウォーターフォール開発では、要件定義、設計、開発、テスト、リリースという工程を順番に進め、最後に完成したシステムを利用者へ提供します。 一方、アジャイル開発では短期間の開発サイクル(スプリント)を繰り返します。一般的には1〜4週間程度の期間で、優先度の高い機能を開発し、動作する状態で提供します。 その後、利用者から意見をもらい、次の開発に反映します。 この流れを繰り返すことで、利用者の本当のニーズに近いシステムを作りやすくなります。 例えばECサイトの決済機能を開発する場合、最初からすべての決済方法を実装するのではなく、まずクレジットカード決済だけを提供し、その後電子マネーやQR決済などを追加していくことが可能です。 この方法では、早い段階でサービスを市場へ投入でき、利用状況を確認しながら改善できます。 アジャイル開発の主なメリットは以下の通りです。…
企業の基幹システムの多くは、10年、20年、あるいは30年以上にわたって運用され続けています。 しかし近年、こうしたレガシーシステムを取り巻く環境は大きく変化しています。 近年、注目されているのが「7Rフレームワーク」です。 7Rフレームワークは既存システムをクラウド環境へ移行する際に採用される代表的な意思決定モデルであり、システムごとに最適な移行戦略を選択するための考え方です。 この記事ではそんな7Rフレームワークについて、特徴を紹介していきます。 7Rフレームワークに興味がある方 生成AIを活用したい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば7Rフレームワークの特徴がわかるのはもちろん、AI時代での7Rフレームワークについて丸わかりですよ。 (more…)
オフショア開発は従来の「量」の補完から、しかし、生成AIの急速な進化によってその前提が大きく変わろうとしています。 今後は「どれだけ高い生産性を実現できるか」が重要です。 この記事ではそのようなオフショア開発のあり方の変化について見ていきます。 オフショア開発に興味がある方 社内のIT人材が不足している方 AIを使った開発に興味がある方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発の変化についてわかるのはもちろん、AI Nativeについても丸わかりですよ。 (more…)
近年、日本のIT業界では「2030年に最大79万人のIT人材が不足する」という予測が繰り返し語られています。 この数字は、日本社会のDX推進や企業のシステム開発を支える人材の不足を警告する象徴的な指標として広く認知されています。 しかし、2022年末以降の生成AIの急速な発展により、この予測の前提条件は大きく変化しています。 かつては人間が手作業で行っていたプログラミング、設計書作成、テストケース生成、ドキュメント作成、データ分析などの業務が、AIによって大幅に自動化され始めているためです。 その結果、「79万人不足」という予測を単純に受け入れるのではなく、「どのような人材が不足し、どのような人材の需要が減少するのか」という質的な観点から再検討する必要が生じています。 この記事では、生成AI時代におけるIT人材不足の構造変化を分析し、2030年に向けて求められる人材像について考察をしていきます。 生成AI時代が気になる方 IT業界の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば「2030年79万人IT人材不足」問題について、新しい見解とその対策がわかりますよ。 (more…)
長年運用されてきた基幹システムは、企業活動を支える重要な存在である一方で、技術的負債の蓄積、保守人材不足、クラウド対応の遅れ、ブラックボックス化など、さまざまな問題を引き起こしています。 従来のマイグレーションでは、既存システムの解析からコード変換、データ移行、テスト、カットオーバーまで、多くの工程を人手に依存していました。 こうした背景の中、注目を集めているのが「AIレガシーマイグレーション」です。 この記事ではAIレガシーマイグレーションについて、どんな特徴があるのかやその強みに着目をしていきたいと思います。 AIレガシーマイグレーションが気になる方 製造業の方 DXをすすめたい企業の方 これらに当てはまる方におすすめの記事となっています。これを読めばAIレガシーマイグレーションがどう言ったものかがわかるのはもちろん、DEHAのAIレガシーマイグレーションについてもわかりますよ。 (more…)