問題タブ [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 投票する
3 に答える
2185 参照

java - 16 ビット データの双一次補間での Java エラー

16 ビット データの双一次補間を使用すると問題が発生します。origImage と displayImage の 2 つの画像があります。AffineTransformOp を使用して、AffineTransform を介して origImage を表示領域のサイズである displayImage にフィルター処理したいと考えています。origImage は BufferedImage.TYPE_USHORT_GRAY タイプで、sun.awt.image.ShortInterleavedRaster タイプのラスターを持っています。ここに私が今持っているコードがあります

エラーを表示するために、2 つのグラデーション イメージを作成しました。1 つは 15 ビット範囲 (最大 32767) の値を持ち、もう 1 つは 16 ビット範囲 (最大 65535) の値を持ちます。以下は2つの画像です

15 ビット イメージ 代替テキスト

16 ビット イメージ 代替テキスト

これらの 2 つのイメージは同じ方法で作成されており、同じように見えるはずですが、16 ビット イメージの中央を横切る線に注目してください。最初はこれはオーバーフローの問題だと思っていましたが、ピクセル値が高い端ではなく、グラデーションの中心に現れているのは奇妙です。また、オーバーフローの問題であった場合、15 ビット イメージも同様に影響を受けたと思われます。

これに関するヘルプは大歓迎です。

なぜ誰も答えないのだろうと思っていたのですが、十分な情報を提供しましたか? さらに情報が必要ですか?

以下は、AffineTransform を生成するために使用するコードです。参照されるすべての変数は、ユーザー入力 (マウスの動き) に基づいて計算され、正しいはずです (私を含む多くの人々によってテストされています)。これがエラーの解決に役立つことを願っています。

ここで何が起こっているのかまだわかりません。提供できるヘルプがあれば、本当に感謝しています。また、参照用に実際の画像で発生したバグの例を添付しました。

これは、手のX線で発生しているバグです 代替テキスト

これは、親指と人差し指の間の領域に焦点を当てた拡大バージョンです。 代替テキスト

極端に白い領域ではバグが発生せず、グラデーション イメージのようにダイナミック レンジの中間の値で発生することに注意してください。

より多くの情報を発見しました。いくつかの変換を調整していたところ、恒等行列をフィルター処理するだけではバグが発生しないことがわかりました。また、整数で換算しても発生しません。整数以外の量で翻訳すると発生します。1 以外の量 (整数かどうか) でズームした場合にも発生します。うまくいけば、これが役に立ちます。

さらに実験を重ねた結果、バグは最大強度の半分 (65535/2 = 32767.5) の間の境界ピクセルで明らかに現れました。また、この値でのみ発生します。これが診断に役立つことを願っています!!

AlBlue の要請により、バグを生成する可能性がある私のアプリケーションとは完全に独立したコードがここにあります。元の投稿では、以下のコードで生成された画像グラデーションを含めましたが、効果をよりよく示すためにグラデーションの 1 つにズームインしたことに注意してください。0.5 変換された画像で効果が 4 回表示され、他の 2 つの画像では表示されません。また、このバグは、1 以外の量でスケーリングしているときに発生することにも注意してください。AffineTransform.getTranslateInstance() を AffineTransform.getScaleInstance(0.9, 0.9) に置き換えるだけで、バグも確認できます。

別の更新として、Fedora 10 でこれを試したところ、バグがまだ存在することがわかりました。

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

java - Java: AffineTransform を使用して画像をスケーリングすると線が表示される

画像のスケーリングに問題があります。次のコードを使用して画像を拡大縮小すると、画像の下部または右側に線が表示されます。

元の画像

ここに画像の説明を入力

スケーリングされた画像

ここに画像の説明を入力

線が表示される理由を知っている人はいますか?

ありがとう!

編集:

完全なメソッド コードを追加しました。

メソッド呼び出しの maxWidth および maxHeight パラメーターは、SPINNER_MAX_* 定数に設定されます。

ありがとう!

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

java - 座標に別の象限を使用してJPanelを描画するにはどうすればよいですか?

をオーバーライドして、JPanelにいくつかの形状を描画したいと思いますpaintComponent。パンとズームができるようにしたいと思います。パンとズームは、オブジェクトAffineTransformsetTransformメソッドで簡単に実行できます。Graphics2Dその後、簡単に図形を描画できますg2.draw(myShape)。図形は「ワールド座標」で定義されているため、パンするときに正常に機能し、描画する前にキャンバス/JPanel座標に変換する必要があります。

次に、座標の象限を変更したいと思います。JPanelとコンピューターがよく使用する第4象限から、ユーザーが最もよく知っている第1象限まで。Xは同じですが、Y軸は下向きではなく上向きに増加する必要があります。によってオリゴを再定義するのは簡単ですnew Point(origo.x, -origo.y);

しかし、どうすればこの象限に図形を描くことができますか?キャンバスの座標ではなく、シェイプの座標(ワールド座標で定義)を保持したいと思います。ですから、何らかの方法でそれらを変換するか、オブジェクトを変換する必要があり、それを効率的Graphics2Dに実行したいと思います。私もこれを行うことができますか?AffineTransform

描画するための私のコード:

0 投票する
3 に答える
1703 参照

cocoa-touch - CGAffineTransformMakeScale を取得してビューの中心を縮小するにはどうすればよいですか?

これは簡単なはずです - と を on で使用するとCGAffineTransformMakeScaleUIView左上に縮小します。中心部で縮小する必要があります。width = 0.5height = 0.5

どうすればそれを達成できますか?

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

java - せん断ではなく回転するように AffineTransform を設定するには?

Graphics2D で描画するときは、AffineTransform を使用します。描画する前に Shape を変換するために使用します。rx と ry は回転であると想定されていますが、描画するとき、形状は回転ではなく剪断されます。ローテーションを強制するにはどうすればよいですか? デフォルトのコンストラクターを使用してから、回転、スケーリング、および変換を呼び出してみましたが、形状は本来のようには見えませんでした。

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

image-processing - アフィン変換の反転-中心座標を更新するにはどうすればよいですか?

つまり、アフィン変換によって空間に変換される3D画像があります。この変換は、従来の4x4マトリックスと、変換が実行される中心座標で構成されます。元の空間に戻すために、どうすればその中心点を反転できますか?私は座標を持っていますが、その1x3ベクトル(または行/列の順序によっては3x1)です。逆の適切な中心を取得するには、ベクトルを1x4にする必要があると思いますが、その場合は、4番目の位置に何を配置する必要がありますか?明らかな候補は0と1ですが、それが正しいことかどうかはわかりません。

画像を空間に変換してから変換を反転すると、結果の画像は同じになるはずです(丸め誤差/リサンプリングによるエイリアシング効果の範囲内)。ただし、現時点では、同じ中心座標を使用しているため、まったく同じ画像を生成するのではなく、ある程度シフトした画像を生成しています。では、どうすればその中心点を変換できますか?

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

java - JPanelに任意の幾何学的変換を適用する

JPanelにいくつかのSwingコントロールがあります。このパネルを任意のアフィン変換によって変換された画面に表示し、すべてのコントロールをインタラクティブなままにしておく必要があります。たとえば、20度回転し、通常のサイズの75%まで縮小するとします。

これを行う方法について私が見た中で最も近いものはここにあります:http: //www.coderanch.com/t/343261/GUI/java/Applying-affine-transform-JPanel (ただし、残念ながら、このソリューションではコントロールが相互の作用)

また、この投稿があります:http: //coding.derkeiler.com/Archive/Java/comp.lang.java.gui/2004-02/0719.html (これについては、きちんとした解決策はなかったようですが、おそらく今(6年後)物事が変わった)

0 投票する
5 に答える
665 参照

math - 2D 正方形を別の正方形に回転

S1 = (x1,y1,x2,y2) と S2 = (a1,b1,a2,b2) の 2 つの正方形があります。

A * S1 = S2 となる A 変換行列を探しています

私が見る限り、A はアフィン 3x3 行列なので、9 つの未知の値があります。

これらの値はどのように計算できますか?

ありがとう、そして最高、ヴィクトル

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

java - Javaで、アフィン変換された長方形に特定の点が含まれているかどうかを確認するにはどうすればよいですか?

インタラクティブなGUIを作成しようとしていますが、その長方形がクリック+ドラッグされるたびに、特定のオブジェクトを移動する必要があります。基本的に、アフィン変換された長方形に特定の点(x、y)が含まれているかどうかを知りたいです。これを行う方法はありますか?メソッドを使用してみcontains()ましたが、アフィン変換された長方形では機能しません。Javaチュートリアルを確認しましたが、ユーザーインタラクティブGUIはアフィン変換を使用していません。誰かが私に、ユーザーが特定の形状をアフィン変換したり、形状自体がクリック+ドラッグされたときにのみ形状を移動したりできるチュートリアルを教えてもらえますか?そうでない場合、どうすればこれにアプローチできますか?

ありがとう。

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

java - AffineTransformを使用して形状を特定の長方形にスケーリング/変換する

java.awtをスケーリング/変換しようとしています。定義された境界長方形に描画するために、 AffineTransformを使用してシェイプします。

さらに、「ズーム」パラメータを持つ描画領域にペイントしたいと思います。

AffineTransformのさまざまな連結を試しましたが、正しいシーケンスが見つかりませんでした。たとえば、次の解決策は間違っていました。

正しいAffineTransformについて何か考えはありますか?

どうもありがとう

ピエール