問題タブ [raster]
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.
algorithm - ベクトル輪郭領域(境界線)をラスターマップ(ピクセルグリッド)に変換する
世界地図上の国のように、境界線(等高線)によっていくつかの地域に分割された地図があります。各領域には、特定の表面カバークラスSがあります(たとえば、水は0、草は0.03 ...)。境界線は次のように定義されます。
- Sのどの値がその両側にあるか(以下の例では、一方が0.03、もう一方が0.0)
- 境界線がいくつのポイントで構成されているか(以下の例ではn = 7)、および
- n個の座標ペア(x、y)。
これは一例です。
各ピクセルが、ピクセルの中心が位置する領域に対応するSの値を持つラスターマップを作成したいと思います。
境界線はSのステップ変化を表すことに注意してください。Sのさまざまな値は、離散クラス(たとえば、草や水)を表し、平均化できる値ではありません(つまり、濡れた草はありません!)。
また、上記の例のように、すべての境界線が閉ループであるとは限らないことにも注意してください。これは国境に少し似ています。たとえば、米国とカナダの国境は閉ループではなく、両端でカナダと海と米国と海の「国境」という2つの国境で結ばれている線です。(それでも、閉ループの境界線は存在します!)
誰かがこれを行うことができるアルゴリズムを私に指摘できますか?車輪の再発明はしたくない!
graphics - 回転移動ラスター マップの管理
私のアプリケーションは、(ラスター) 移動マップを表示します。任意の角度に基づいて回転したマップを表示できるようにする必要があります。プログラムは現在 VC++/MFC にありますが、問題は一般的なものです。ソース ビットマップ (CBitmap または HBITMAP) があり、StretchBlt を使用してデバイス コンテキスト (CDC) に描画します。angle=0 の場合、これは高速かつスムーズに機能しますが (ユーザーはマウスでマップをスムーズにつかむことができます)、ビットマップを回転させて表示しようとすると、これは当てはまりません (SetWorldTransform() を使用したビットマップの回転)。または数百ミリ秒かかり、これは遅すぎます)。
解決策は、現在画面上にあるピクセルのみに関連付けることができ、元のソース ビットマップを回転させないようにすることだと思います。これが鍵です。
誰かが同様の実装の経験があれば、多くの試行錯誤の努力を節約できるかもしれません. ありがとう!アビ。
image-processing - ビットマップ内の破線や形状を検出して修正する方法は?
ビットマップ内の破線や形状を見つけることができるアルゴリズムを見つけたいです。背面と白の 2 色 (塗り絵で使用される画像) のビットマップがある状況を考えてみましょう。相互に接続する必要がある曲線と線がいくつかありますが、スキャン エラーのために白いビットが代わりに配置されています。黒いものの。それらをどのように検出すればよいですか?(この作業の後、ビットマップをベクター ファイルに変換したい。potrace アルゴリズムを使用したい)。
何かアイデアがありましたら、お知らせください。
flash - as3での完璧なラインレンダリング
as3でアーケードゲームを作っているのですが、ピクセル状の(フラッシュで滑らかにされていない)線を描きたいです。ピクセルを「手作業で」(flashのlineToなどではなく)bitmapdataオブジェクトに描画しています。
ただし、ズームアウトすると、一部の部分で線が2ピクセルの太さにレンダリングされるため、線が正しく表示されません。ただし、ズームすると、アルゴリズムが正常で、ピクセルが2倍にならないことがわかります。品質を変えても何も変わらないようです。ピクセルパーフェクトラインを取得する方法はありますか?
ズームインから実際には2倍にならないことがわかっているため、アルゴリズムは関係ありません。また、ビットマップに描画するため、ピクセル単位で描画する必要があります。しかし、それはこのページにリストされている2番目のもののas3バージョンにすぎません
c++ - glRasterPos()を使用して、画面上でピクセルごとにオブジェクトを移動する
アプリでテキストをレンダリングするための次のコードがあります。最初にワールド内のマウス座標を取得し、次にそれらの座標を使用してテキストをワールド内に配置します。これにより、マウスの位置に従います。
編集:コード例にbuildfont()関数を追加しました:
しかし、複数行のテキスト、または「境界線」のあるテキスト(上記のコードのように)または背景のあるテキスト(背景と区別しやすいように)をレンダリングしたいのですが、どうすればよいですか?
ピクセル単位で移動する方法を知っておく必要があるので、3Dレンダリングプロジェクションの上に2Dプロジェクションビューを使用せずに、画面上の位置を正確に変更できます...できるだけシンプルにしたいだけです。
テキストの下にクワッドを描画しようとしましたが、もちろんワールド座標を使用しているため機能しません...カメラを回転させてもテキストがテキストの背景に沿って移動しません...解決策は、3Dプロジェクションの上に別のプロジェクションを作成することです。
apache-flex - Macでラスタースクロールのパフォーマンスを向上させる方法は?
大きなラスターマップを使ったゲームがあります
現在、jpeg(4900x4200)を使用しています
ゲーム中は、このマップをスクロールする必要があります。
以下を使用します。
クラスマップはmx.containers.Canvasを拡張します
およびその上のmx.controls.Image
コンストラクターには次のものがあります。
スクロールには次のものを使用します。
Windowsでは、非常に優れたパフォーマンスが得られます。LinuxとMacのflashplayerでも、パフォーマンスは良好です。
しかし、ブラウザのパフォーマンスはかなり遅いです!それを解決するために何ができるでしょうか?
java - Javaで画像ピクセルをボトムアップ順に保存するための最良の方法
Windows BMP 形式の画像を表すバイト配列があり、ピクセル データをコピーせずBufferedImage
に、ライブラリがそれを Java アプリケーションに として表示するようにしたいと考えています。
主な問題は、JDK の のすべての実装がRaster
イメージ ピクセルを上から下、左から右の順序で格納するのに対し、BMP ピクセル データは下から上、左から右の順序で格納されることです。これが補正されない場合、結果の画像は垂直方向に反転します。
最も明白な「解決策」は、SampleModel
のscanlineStride
プロパティを負の値に設定し、バンド オフセット (またはDataBuffer
の配列オフセット) を左上のピクセル、つまり配列の最後の行の最初のピクセルを指すように変更することです。 . SampleModel
残念ながら、負のscanlineStride
引数を指定するとすべてのコンストラクターが例外をスローするため、これは機能しません。
現在、リフレクションを使用してフィールドを負の値に強制することで回避していscanlineStride
ますが、可能であれば、よりクリーンで移植性の高い方法で実行したいと考えています。たとえば、カプセル化を壊さずに、ピクセルをボトムアップの順序で配置するRaster
またはをだます別の方法はありますか? または、ピクセル行を逆順に表示するandSampleModel
をラップするライブラリがどこかにありますか?Raster
SampleModel
次のアプローチは避けたいと思います。
- 画像全体をコピーする (パフォーマンス上の理由から。コードは 1 秒間に何百もの大きな (>= 1M ピクセル) 画像を処理する必要があり、アプリケーションは画像全体を利用できる必要がありますが、通常は小さな (しかし予測が難しい) 画像のみにアクセスします) ) 画像の一部です。)
- を変更し
DataBuffer
て座標変換を実行します (これは実際には機能しますが、バッファーはスキャンライン/ピクセル レイアウトについて知る必要がないため、別の「汚い」ソリューションです)。 Raster
および/またはインターフェースを最初から再実装するSampleModel
(互換性チェックが (少なくとも Sun JDK で) 実装されているため、特定のサブクラスが必要なSampleModel
ため、一般的なBottomUpSampleModel
ラッパー クラスは機能しません。)
image - ピクセルあたり 48 ビットまたは 64 ビットの非圧縮ラスター イメージを表すことができるファイル形式はどれですか?
Windows でスクリーンショットを作成しLockBits
、GDI+ の関数を使用してピクセル データを抽出し、ファイルに書き込みます。
パフォーマンスを最大化するために、私は次のことも行っています。
PixelFormat
フォーマット変換を避けるために、ソース ビットマップと同じものを使用する- フラグを使用し
ImageLockModeUserInputBuf
てピクセル データを事前に割り当てられたバッファに抽出する - この事前に割り当てられたバッファ ( が指す
BitmapData::Scan0
) は、メモリ マップト ファイルの一部です (ピクセル データの再コピーを避けるため)。
また、ファイルを読み取るコードを作成するので、任意の形式を使用 (または作成) できます。ただし、既存のプログラム (理想的には Web ブラウザー) が読み取ることができるよく知られた形式を使用することをお勧めします。これは、他のプログラム (画像を読み取るプログラム) のコードを記述する前に、画像が正しいことを視覚的に確認できるためです。 )
PixelFormat32bppRGB
32bpp BMP ファイルの形式に一致する形式でこれを正常に実装したので、ピクセル データを直接メモリ マップされた BMP ファイルに抽出し、プレフィックスとして BMP ヘッダーを付けると、有効な BMP イメージ ファイルを取得できます。ペイントおよびほとんどのブラウザで開くことができます。
残念ながら、私がテストしているマシンの 1 つは、PixelFormat64bppPARGB
フォーマットでピクセルを返します (おそらく、これはビデオ アダプター ドライバーの影響を受けます)。これに対応する BMP ピクセル フォーマットはありません。
16、24、または 32bpp の BMP 形式に変換すると、プログラムの速度が大幅に低下する (損失が大きくなる) ため、このピクセル形式を変換せずに使用できるファイル形式を探しているので、メモリマップ ファイルに直接抽出できます。私が 32bpp フォーマットで行ったように。
48bpp (BGR オーダー、リトル エンディアン) および/または 64bpp (BGRA オーダー、リトル エンディアン) をサポートするラスター イメージ ファイル形式は?
編集
これまでのところ、これらの形式を除外しました。
- BMP : 深度は <=32bpp に制限されます (それ以外の場合は完全に一致します)。
- PNG : サンプルの順序は RGBA のみです。
- TIFF : サンプルの順序は RGBA のみです。
考えられる部分的な解決策:
- OpenEXR : 48bpp のみ。サンプルの順序はチャンネル名のアルファベット順です。BGR は適合しますが、BGRA は適合しません。
python - ラスターからシェイプ内のポイントを抽出します
百万点近くのラスターファイル(基本的には2D配列)があります。ラスター(および円内にあるすべてのポイント)から円を抽出しようとしています。このため、ArcGISの使用は非常に遅くなります。誰もがこのようなもののために学ぶのが簡単で強力で十分に速い画像処理ライブラリを提案できますか?
ありがとう!
python - GISのハフモデル
領土および経済分析のためのハフモデルの最も単純なバージョンはどのようになりますか? ベクトルとラスターの両方のファイルを操作するための、私が推奨するアルゴリズムまたは無料のライブラリを使用する sig OGR