正方形から台形への射影変換
이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
이전 댓글 표시
0 개 추천
正方形から台形への射影変換をしたいと考えています。
projective2d を使えばできると分かったのですが行列にどのような値を入れればいいのかがあるのかが分かりません。
もしわかる人がおりましたら教えていただきたいです。
채택된 답변
Hernia Baby
2021년 7월 7일
1 개 추천
回転というよりは四隅の投影をおこないました。
以下を参照しています。
-------------------------------
初期化
clc,clear,close;
画像の読み込み
使用している画像は愛犬チャチャです。
img = imread('chacha_sq.jpeg' );
imshow(img)

投影前と投影後の4隅の設定
各点の(x,y)座標を設定します。
movingPoints :投影前の [左上, 右上, 左下, 右下]
fixedPoints :投影後の [左上, 右上, 左下, 右下]
movingPoints = [1 1; size(img,2) 1; 1 size(img,1); size(img,2) size(img,1)];
fixedPoints = [500 700; 1500-500 700; 35 1500-500; 1500 1500-500];
画像の変換
投影を行います。具体的には四隅をフィットさせるイメージです。
tform = fitgeotrans(movingPoints, fixedPoints, 'Projective');
RA = imref2d([size(img,1) size(img,2)], [1 size(img,2)], [1 size(img,1)]);
[out,r] = imwarp(img, tform, 'OutputView', RA);
画像の表示
imshow(out, r);
axis off;

댓글 수: 7
Hernia Baby
2021년 7월 7일
拡大・縮小が上手くできればなんとかできるかもしれません。
clc,clear,close;
img = imread('chacha_sq.jpeg' );
t = 45;
% 回転する場合はこちら
% Rx = [1 0 0; 0 cosd(t) -sind(t); 0 sind(t) cosd(t)];
% Ry = [cosd(t) 0 sind(t); 0 1 0; -sind(t) 0 cosd(t)];
Rz = [cosd(t) -sind(t) 0; sind(t) cosd(t) 0; 0 0 1];
tform = projective2d(Rz);
outputImage = imwarp(img,tform);
imshow(outputImage);
Atsushi Ueno
2021년 7월 7일
- 立方体のオブジェクトが表示されたCG画像(動画)からオブジェクトの座標を認識したい
- 画像内における任意の4隅の座標に別画像を貼り付けたい⇒その為に射影変換をしたい
- 射影変換のパラメータを知りたい⇒変換前後の四隅の座標が分かれば回答の通り変換可能
- 更に4隅の座標から3次元空間におけるスクリーンの角度(3軸)を計算できる(リンク先参照)
- 多分将来は対象をCG画像⇒カメラ画像に変えてAR(拡張現実)を実現したい(間違いない!)
私は当初、立方体のオブジェクトを(OpenGLで)表示しているのだから「自分でそのプログラムにテクスチャを付け足せば良いではないか」と回答しましたが、目的が違う事にやっと気づきました。既に表示された2次元の画像内のオブジェクトを認識してそこに画像を貼り付けたいのです。それ即ちARじゃないですか。
Atsushi Ueno
2021년 7월 7일
MATLABで拡張現実の応用例を紹介している情報(Image Processing Toolbox)も沢山ありますね
akasa
2021년 7월 8일
お二方ご回答ありがとうございます。
添付画像の赤い部分に今回適用した変形をして貼り付けることは可能でしょうか?
OpenGLで作成しているので、赤い部分の四つ角の座標は分かっておらず、色も正確な赤ではないです。
matlabから呼び出せるOpenGLを用いたテクスチャマッピングの関数が調べても出てこないため、このような回りくどい方法を試しております。

Atsushi Ueno
2021년 7월 8일
2つのアプローチが考えられます
- その画像を作っているプログラムを改造して画像を貼り付ける(CG)
- その画像を別アプリに取り込み、別画像を貼り付けた画像を出力する(AR)
akasa
2021년 7월 8일
ご回答ありがとうございます。
間にある回答を見ておりませんでした。
私の目的としては、上の画像の赤い部分に他の画像を貼って掲示板のように見せたいと考えています。
別アプリで作るとなると手間が多くなるため、matlab上で完結させたいと考えています。
またこの画像を作っているプログラムを改造できるならそれが手っ取り早いと思うのでそうしたいです。
よろしくお願いいたします。
Atsushi Ueno
2021년 7월 8일
この質問は「射影変換を行う方法」であり既に完結しているので、コメントを別の質問に改めます。
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 グラフィックス パフォーマンス에 대해 자세히 알아보기
태그
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)