問題タブ [affinetransform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1438 参照

javascript - マトリックスの回転を特定の点を中心としたラジアン単位の絶対値に設定するにはどうすればよいですか?

アフィン変換用の JavaScript Matrix クラスと、特定の中心を中心に回転をラジアンの絶対数に設定する関数があります。

オブジェクト自体の中心を中心に回転しようとしているので、オブジェクトの幅の半分、高さの半分の中心点を渡しているので、100 x 100 オブジェクトの場合は 50, 50 を渡しています。

私のオブジェクトがゼロの回転から始まる場合、これはうまくいきます:

前 後

...しかし、形状を再度回転させるか、ゼロ以外の回転から開始すると、tx と ty の値が間違ってしまいます。

位置が移動しました

上記の式の何が問題になっていますか? 回転の設定は正確に見えますが、tx と ty は正確ではありません。

この件に関する他のいくつかの質問、特にこの質問を見てきましたが、何も役に立ちませんでした。

更新これにいくつかの数字を追加するには:

100,100 に配置された 100x100 の長方形から始めると、最初の行列は次のようになります。{Matrix: [a:1, b:0, c:0, d:1, tx:100, ty:100]}

これを時計回りに 45 度回転させるには、上記の関数 0.7853981633974483 (ラジアンで 45 度) と中心をフィードします。{Point: [x:50, y: 50]}

これにより、次の行列が生成 されます。{Matrix: [a:0.7071067812, b:0.7071067812, c:-0.7071067812, d:0.7071067812, tx:150, ty:79.28932188]}これはまさに正しいものです。

{Point: [x:70.71067812000001, y: 70.71067812000001]}しかし、その行列から始めて、0 と(新しい回転した形状の中心) の関数引数を与えることによってそれをゼロに戻そうとすると、出力は{Matrix: [a:1, b:0, c:0, d:1, tx:150, ty:79.28932188]}になります。これは正しい回転ですが、正しい回転ではありません。翻訳。私は得ることを期待しています{Matrix: [a:1, b:0, c:0, d:1, tx:100, ty:100]}

50,50 のローカル センターの代わりに親座標空間 150,150 の長方形の中心を使用し、以下に提案するように += を = に置き換えるなど、関数の他のいくつかのバリエーションを試しましたが、何も役に立たないようです。tx 計算をコメントアウトすると、形状が原点を中心に美しく回転するため、問題は tx/ty 計算か、渡す中心点のいずれかにあるはずです。

他に何かアイデアはありますか?

0 投票する
2 に答える
3612 参照

java - マウスをドラッグして、Javaで回転および拡大縮小します

Javaで幾何学的オブジェクト用のIllustratorスタイル選択ボックスを作成しようとしています。

選択ボックス

オブジェクトを選択すると、境界線が描画され、小さな長方形をドラッグしてオブジェクトのサイズを変更できます。また、ドラッグしてボックスを回転できるようにしたいと思います。

これまでのところ、ボックスを拡大縮小したり、ボックスを回転させたりすることはできますが、2つを一緒に行うことはできません。ボックスが45度の角度にあると想像してください。角をドラッグしてボックスをx方向に拡大すると、角度が原因でボックスの幅と高さの両方が増加します。

私はそれを使用して動作させることができます:

ただし、これはピボットポイントが左上隅にある場合にのみ機能します。ピボットを動かしてから、拡大縮小して回転できるようにしたいと思います。この問題はこれまで何度も解決されていたに違いありません。アフィン変換を使用して、マウスの描画を回転したオブジェクトの座標空間に変換する方法はありますか?三角法を掘り下げる必要はありません!前もって感謝します。

0 投票する
1 に答える
547 参照

c++ - 楕円パッチ間のアフィン変換

私は OpenCV を初めて使用し、画像処理の方法を学んでいます。私のプロジェクトの一部として、楕円形の画像パッチを目的の楕円にワープするという問題があります。私が理解している限りでは、2 つのパッチ間のアフィン変換を計算し、この変換を目的のパッチにワープする必要があります。助けを求めてインターネットを閲覧したところ、2 つの楕円パッチ間のアフィン変換を計算する方法が見つかりませんでした。私は正しい軌道に乗っていますか?進め方や詳しい情報をどこで探すべきか、アドバイスをいただければ幸いです。

0 投票する
2 に答える
1206 参照

java - 条件に応じてJSliderの最小値と最大値を変更する

Netbeans で Swing GUI を作成しています。この GUI の目的は、(バッファリングされた) 画像 (アイコンとしての JLabel 内) を開き、それにアフィン変換を適用することです。現在、次のように実行している 4 つの変換があります。

ここに画像の説明を入力

現在、各変換では、X 値と Y 値を変更するために 2 つのスライダーが必要です。ただし、回転のスライダーは 1 つしか必要ありません。4種類の変換すべてに対して4つのタブを実行するよりもはるかに優れているため、このようにしました。また、たとえば、画像を回転させた場合、ドロップダウンリストからせん断を選択することで、回転した同じ画像をせん断できるようにしたいと考えています。

問題は次のとおりです: ラベル アイコンを再描画し、再描画された同じ画像に別の変換を適用するにはどうすればよいですか? また、選択した効果に応じて JSlider の最小値と最大値を変更するにはどうすればよいですか?

0 投票する
2 に答える
4636 参照

python - Python での画像登録とアフィン変換

Jan Erik Solem によるProgramming Computer Vision with Pythonを読んでいますが、これはかなり良い本ですが、画像登録に関する質問を明確にすることができませんでした。

基本的に、少し位置合わせする必要がある画像 (顔) がたくさんあるので、最初に必要なのは相似変換を介して厳密な変換を実行することです。

ここで、x はベクトル (この場合は座標のセット) であり、回転 R、平行移動 t、場合によってはスケーリング s によって x' に変換されます。

Solem は、回転行列 R と並進ベクトルを tx と ty として返す各画像のこの剛体変換を計算します。

ただし、彼は何らかの理由で R の要素を並べ替えます。

その後、アフィン変換を実行します。

この例では、このアフィン変換が各チャネルで実行されますが、それは関係ありません。im[:,:,i]は処理するイメージで、このプロシージャは別のイメージを返します。

Tアフィン変換でその行列を逆にするのは何ですか?なぜですか? そして、画像登録を達成するための通常の手順は何ですか?

アップデート

ここでは、Google ブックスでこのコードの関連部分を見つけることができます。67ページの下から始まります。

0 投票する
0 に答える
187 参照

java - Java で画像を読み取り、アフィン変換を実行する

Imageそのため、クラス プロジェクトの場合、ファイルを読み取って実行する必要がありますAffine TransformsPixelGrabberクラスを使用して完全なリファレンスブールにある情報を使用してフォーマットを行う方法を見つけました。ただし、多くの画像に対してこれを行う必要があります。

クラスではAffine Transforms、どのように画像を入力として与えますか。入力として 2 次元配列を受け入れません。この場合、入力はどのくらい正確に与えられますか? reflection画像とフォームを取得して保存する必要がありますrotationscaled up

0 投票する
1 に答える
875 参照

rotation - affinetransform 回転、バッファリングされた画像が切り取られる

私はゲームを作成していますが、最近、affinetransform を使用してバッファリングされた画像を回転させるときに発生する問題に遭遇しました。画像は、独自の中心を中心に回転します。たとえば、45 度回転すると、上向きと左向きの角が切り取られ、画像の元の x または y 位置より下にあるすべてのピクセルが表示されなくなります。

これは、バッファリングされた画像を回転させるために使用するコードです:

setRad() は x と y の速度に応じて角度を返します。 startImage は
ロードされた画像
です。 bImage はメイン クラスに返される画像です。

これを解決する方法は、画像ファイルを拡大し、その周りに空のスペースを追加することであると考えたので、角が切り取られないようにしました。しかし、これはパフォーマンスをいくらか低下させるので、可能であれば適切な解決策に固執したいと思います. それがすべて明確であることを願っています!

//スノーバード

0 投票する
1 に答える
2775 参照

java - affinetransformスイングでズームイン

私はJAVAスイングを使用して個人的なプロジェクトに取り組んでいます。

このプロジェクトは、窓に地図を描くことです。

ここに画像の説明を入力してください

マップはaffinetransformを使用してズーム可能です。私がここで抱えている問題は、画面の中央にあるマップのポイントをズームイン/ズームアウトする代わりに、マップをズームインまたはズームアウトするたびにシフトすることです。

0 投票する
1 に答える
1705 参照

opencv - アフィン変換の結果を表示する

OpenCV で画像にアフィン変換を適用すると、その結果がプレビュー ウィンドウに表示されず、ウィンドウ全体が黒くなる理由を見つけようとしています。適用された変換に関係なく、常にウィンドウに変換された画像 (アフィン変換の結果) を表示できますか?
更新:これは、すべての変換が座標系の原点(画像の左上隅)に対して計算されるために発生すると思います。回転の場合は回転の中心を指定でき、結果を表示できますが、スケーリングを実行すると、変換された画像の移動先を制御できません。画像がウィンドウに収まるように座標系を何らかの方法で移動することは可能ですか?

Update2: ある位置に ROI のみを含む画像 (画像の残りの部分は黒) があり、一連のアフィン変換を適用する必要があります。物事を単純化し、個々の変換の効果を確認するために、各変換を 1 つずつ適用しました。私が気づいたのは、ROI の中心が座標系の中心 (ビュー ウィンドウの左上隅) になるように画像を移動 (平行移動) するたびに、すべてのアフィン変換が移動せずに正しく実行されることです。ただし、ROI の中心を座標系の中心に移動すると、ROI の上部と左側の部分が現在のビュー ウィンドウから切り取られたままになります。ROI の中心点をビュー ウィンドウ内の別の点 (ウィンドウの中心など) に移動すると、次のタイプのアフィン変換が行われます: A=[a 0 0; 0 b 0] (A は 2x3 行列、warpAffine 関数のパラメーター) は、画像 (ROI) をビュー ウィンドウの外に移動します (ROI の中心が左上隅にある場合は移動しません)。画像がその場所から移動しないようにアフィン変換を変更するにはどうすればよいですか (ROI の中心が座標系の中心にある場合と同じように動作します)。

0 投票する
1 に答える
1187 参照

ios - 2 つの UIView のそれぞれの 3 つの点から CGAffineTransform の値を計算しますか?

2 つUIViewの があり、それぞれにオブジェクトの視覚的表現が含まれています。そのオブジェクトの同じ場所に対応する3 つの既知CGPointの があります。UIViewこれらのビューの 1 つに変換を適用して、これらの 3 つのポイントが他のビューの対応するポイントと完全に一致するようにする必要があります。

スケーリング、回転、平行移動、つまりアフィン変換を処理する必要があり、そのような平行移動のパラメーターを計算するための数学を知っています (この質問を参照してください)。私が理解していないのは、実際に Obj-C でこれらの計算を実行し、正しい数値を に差し込む方法CGAffineTrasnformMakeです。当然のことのように思えますが、何らかの理由で、ここで概念の一部が欠けているだけだと思います。

つまり、CGPointAに (X1a,Y1a), (X2a,Y2a), (X3a,Y3a) があり、 B にUIView(X1b,Y1b), (X2b,Y2b), (X3b,Y3b) がある場合、UIView私は自分自身を得るために私はBCGAffineTransformに適用することができますか?UIViewAとUIView並ぶ?

ちなみに、私の展開ターゲットは iOS 5 です。以前は何もサポートする必要はありません。

ありがとう!