問題タブ [subpixel]

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 投票する
1 に答える
589 参照

java - サブピクセル レンダリング

サブピクセル ポジショニングを使用して Java で 2D シェイプをレンダリングしようとしていますが、失敗しています。失敗した試行を以下に示します ( と は今のところ無視してscaleくださいAffineTransform) :

これにより、次の出力が生成されます。

レンダリング

行は等間隔である必要がありますが、ご覧のとおり、そうではありません。私の推測では、始点と終点が最も近いピクセルに丸められています。

SOの提案された解決策は、Line2D.Double(私はすでに行っており、明らかに機能していません)を使用するか、AffineTransformスケールダウンするために使用します。コード サンプルの変数を 100 に変更するscaleと、はるかに高いスケールで線がプロットされ、変換を使用して提案に従って縮小されます。これも結果のイメージには影響しません。

私は何を間違っていますか?

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

c++ - openCVを使用してC ++で小さなステップとサブピクセル精度で画像の変換、回転、スケーリングを行う

openCV でサブピクセル精度で変換、回転、およびスケーリングを実行しようとしています。

これは、サブピクセル精度で翻訳を行うためのリンクです。

C ++でOpenCVを使用して非常に小さなステップで画像を変換します

したがって、スケーリングと回転についても同じことを行う必要があります。たとえば、画像を2度回転すると機能しますが、1度または1度未満回転すると機能せず、2度回転した結果2.1度回転と同じ!

提供されたリンクでは、 imgproc.hpp 内の次のコードを変更することで精度を上げることができると述べられています

回転の例を次に示します。ソース イメージは次のとおりです。

画像中心を基準に回転しています。

1 度回転すると、結果はソース イメージと同じになります。

また、2 度回転すると、結果は 2.1 度回転した場合と同じになります (そうあるべきではありません)。

コードは次のとおりです。

提供された翻訳コードを確認すると、1e-7 の精度で動作しますが、列を 1e-8 で翻訳すると、翻訳する代わりにソース画像が表示されます (これは正しくありません)。 matlab 次の正しい結果が得られます (C++ で同じ結果を高い精度で取得したい)。

また、画像を 1 度回転したときの回転の場合、結果は次のようになります (これは私が matlab で取得したものであり、c++ でも同じ結果が必要です) (いくつかの数値を削除 (精度を下げる) する必要がありました。行列はここに収まる可能性があります)

私の質問は、openCV でサブピクセルの精度を上げるにはどうすればよいですか? または、サブピクセル精度で画像のスケーリングと回転を行うためのアイデアやコードはありますか (前述のリンクで画像変換用に提供されているコードなど)。

アイデアをいただければ幸いです。