問題タブ [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.
language-agnostic - ポリゴンとラスターイメージの交点かどうかを計算します
バイナリイメージと不規則な凸多角形がある場合、それらが互いに交差するかどうかをどのように計算できますか?ポリゴンの座標は、画像の観点から記述されています。
衝突検出または塗りつぶしアルゴリズムの観点から、これについていくつかのアイデアがありますが、どちらも最適ではないと思います。これには、試行錯誤された方法があると思いますが、キーワードについて考えることはできません。
これが私が意味することの例です:
この場合、trueを返す必要があります。
java - バッファリングされた 2 つの画像のラスターを合計する関数はありますか?
私は2Dフィルタリングを行っており、グレースケールのBufferedImagesで要素ごとに追加したいと考えています。私のためにこれを完了する既存の関数はありますか、それとも最初から作成する必要がありますか?
この問題を単純化するためにラスターをマトリックスに変換するある種のマトリックスクラスはありますか?
編集:ここにそれの一般的な要点があります
グレースケール変換:
c - ラスター スキャン - 生ファイルを C の画像に変換
次の構造のファイルがあります。
基本的に、ラスタースキャン画像のこの生データを画像に変換する必要があります。
また、使用されるグレー レベルの量に応じて、各グレー レベルの特性が異なります。私の問題は、どこから始めればいいのかわからないことです。グレー レベルの異なる文字の整数値を入力する 2D 配列がある方がよいことはわかっています。つまり、0 = # (そして # の ASCII 値を入力します)
この行は、後で処理するために画像の寸法を読み取りますが、フォレストを作成せずに使用する方法がわかりません。つまり、相互に 10 個のループがあります。主な問題は、たとえば最初のピクセルの長さが 300 のときに、配列の次の行に移動するようにプログラムする方法だと思います。
また、malloc についてはまだ説明していないため、使用しないでください。実行時に配列のサイズを作成する必要があるため、最大サイズが 80*100 の配列を作成しました。
r - R の SDMTools から PatchStat 値を使用してラスターを作成する
私は土地被覆のラスター ファイルを持っており、樹木被覆セルだけを含むように縮小しました。私はclump
ラスター パッケージで使用して、隣接する森林の領域をまとめて clump() しました。これにより、互いに接触しているすべてのセルが同じパッチの一部であるため、同じ ID が与えられます。
次に、クランプ ラスターを as.matrix に変換して、各クランプの PatchStat() を計算します。PatchStat() を取得してラスターに対してこれを実行しようとしましたが、マトリックス内にある場合にのみ機能します。
ここで、パッチ統計出力、つまり「perim.area.ratio」を使用してラスターを作成したいと考えています。したがって、クランプ 1 に対応する各セルは、クランプ 1 に対応する perim.area.ratio 値を取得します。これを行うために、クランプ ラスターから data.frame() を作成しましたlon, lat, layer(clumpID), cellID
。layerとpatchID
を使用して、クランプ ラスター data.frame を PatchStat 出力とマージしようとしました。ただし、エラーが発生します。
fix.by(by.x, x) のエラー:「by」は有効な列を指定する必要があります。
これを別の方法で行う方法、またはこれらの列が有効でない理由はありますか? 以下のコード。
actionscript-3 - アンチエイリアス処理されたベジェ曲線をラスターで描画するにはどうすればよいですか?
アンチエイリアス処理された(滑らかな)2次ベジェ曲線をラスターに描画するための適切なアルゴリズムを知っている人はいますか?それらをベクトルとして描画し、画像をラスターにコピーするだけです。
曲線をピクセルに直接描画するための巧妙でありながら自由に利用できるアルゴリズムはありますか?現在、ここに実装されているアルゴリズムを使用しています 。http: //www.bytearray.org/?p= 67 quadBezier()アンチエイリアス処理されたベジェをレンダリングするように変更する方法があるかどうか疑問に思っています。前もって感謝します。
私はこれを学習目的で行っており、Shapeオプションからピクセルをコピーするよりも高速になることを望んでいます。滑らかでないベジェが通常のベジェよりも高速であることを示す例を次に示します。http: //lab.generalrelativity.org/raster/
performance - パフォーマンス/速度の向上
1303 個のラスター (各ラスターには 1 か月分のデータがあります) からデータを取得し、ラスター内の各グリッド セルの時系列を作成する必要があります。最後に、すべての時系列を 1 つの大規模な (動物園) ファイルに結合します。
私はそれを実行できるコードを持っています(データセットのごく一部を試してみましたが、うまくいきました)が、ラスターをスタックするだけで永遠にかかるようです(現在2時間以上、まだカウント中です)。より遅い部分で、時系列を実行します。だからここに私のコードがあります.誰かがラスターを積み重ねたり、時系列を作成したりするためのより速い方法を知っているなら(おそらく二重ループなしで?)助けてください...
私は他のプログラミング言語を知りませんが、これはRに尋ねるには多すぎますか?
r - ggplotを使用してラスター係数値をプロットする
ggplot2を使用してファクター値でラスターをプロットするのに問題があります。
まず、ラスターデータを読み込みます
座標と値を抽出する
geom_raster()を使用してグリッドをプロットします。すべてが正常に動作します。
連続ラスターはありませんが、分類されています。ラスターを再分類します。
分類されたラスターをプロットします。またOKですが、伝説は継続的です
値を因子としてプロットすると、マップが正しくなくなります
r - ggplotの「annotation_raster」を使用してRの「メモリ上限」に到達
私はRを使用して、下のレイヤーから始めて、以下のようないくつかのレイヤーを持つ家の間取り図を作成しています。
basemap
:読みやすくするために最下層に配置したフロアプランのスキャンバージョンbed
:家には数十のベッドがあり、家のさまざまな部屋に散らばっていて、居住者の特性に基づいてさまざまな色がありますpiechart
:各ベッドには上部に円グラフがあります。ここでも、円グラフは居住者の他の特性に基づいて作成されます。一部のベッドには円グラフがあり、一部にはありません。
およびはbed
、piechart
ベースマップに基づいて作成されたshpファイルに基づいて作成されました(つまり、Mapwindowを使用してベクターレイヤーを作成し、ベースマップをラスターレイヤーとしてインポートして下部に配置し、ベッドを1つずつ描画します。bedshpファイル次に、がRにインポートされ、ベッドポリゴンのセントロイドが計算され、そのセントロイドがピエチャートの配置に役立ちます)
以前はtoオブジェクトread.jpeg
をインポートしてから、新しい関数inを使用して、を最下部のマップレイヤーに配置しました。これは、レイヤーもに基づいて作成されるため、レイヤーはでレイヤーに完全にスーパーインポーズされます。basemap
imagematrix
annotation_raster
ggplot2 0.9
basemap
bed
basemap
bed
basemap
ggplot2
私は問題なくマップを作成できます-basemap
が十分に小さい場合(3000 x 3000
ピクセル)、今basemap
は8000+ x 3000+
ピクセル(object.size
241823624バイト)があります、shpファイルを作成しているときにRメモリの問題に気づいていませんでした、ggplot
オブジェクトをコンパイルできます無効にしているが、オブジェクトannotation_raster
にを含めようとすると、RはxxxMBでメモリを割り当てることができると言い続けます。basemap
ggplot
jpgファイルをさらに圧縮しても寸法は変わらないので、これはjpgファイルの圧縮とは関係ないと思います。ただしbed
、元のjpgファイルのサイズに基づいてレイヤーが作成されているため、jpgファイルのサイズを変更できません。
basemap
誰かがjpegの次元を変更せずに、またはRのメモリ制限に対処するための他のトリックを使用せずに、のimagematrixのサイズを縮小するのを手伝うことができますか?ありがとう。
r - R で大量のデータと多数のラスターを操作しますか?
今日は、種の存在/不在記録のために、日付付きの 125,000 の経度/緯度の場所を持つ大規模なデータセットを使用しています。各場所について、日付と日付の 3 か月前の各場所の天気を調べたいと思います。これを行うために、データが取得された 5 年間の特定の気象変数 (最高気温など) の毎日の気象データをダウンロードしました。合計 1,826 個のラスター ファイルがあり、すべて 2 ~ 3 MB です。
すべてのラスター ファイルをスタックし、各ポイントのすべてのラスター (1,826) から値を抽出することを計画していました。これにより、必要な日付を検索するために使用できる巨大なファイルが生成されます。ただし、それほど多くのラスターをスタックできないため、これは不可能です。ラスターを 500 のスタックに分割しようとしましたが、これは機能しますが、生成されるファイルは約 1Gb で、非常に低速です (行数 125,000、列数 500)。また、これらのファイルをすべて R に取り込んで大きなデータ フレームを作成しようとすると、うまくいきません。
R でこの量のデータを処理する方法があるかどうか、または支援に使用できるパッケージがあるかどうかを知りたいです。ff のようなパッケージを使用できますか? 私がやりたいことを行うための電力集約型の少ない方法について誰か提案がありますか? ラップリー関数のようなものを考えたことがありますが、これまで使用したことがなく、どこから始めればよいかわかりません。
お時間をいただきありがとうございます。私が現在成功せずに使用しているコードは以下のとおりです。
敬具、アダム
java - Javaでピクセルバイト配列からbmp画像を作成する方法
.bmpファイルのピクセル値を含むバイト配列があります。これを行うことによって生成されました:
次に、.bmpイメージを再作成する必要があります。このメソッドを呼び出して、BufferedImageを作成し、WritableRasterのピクセルを設定しようとしましたsetPixels
。ただし、int []、float []、またはdouble[]配列を指定する必要があります。たぶん私はバイト配列をこれらの1つに変換する必要があります。しかし、私はそれを行う方法がわかりません。私もその方法を試しましたsetDataElements
。しかし、この方法の使い方もわかりません。
バイト配列からbmpイメージを作成する方法を誰かが説明できますか?
編集: @Perception
これは私がこれまでに行ったことです:
private byte [] getPixelArrayToBmpByteArray(byte [] pixelData、int width、int height、int depth)throws Exception {int [] pixel = byteToInt(pixelData); BufferedImage image = null; if(depth == 8){image = new BufferedImage(width、height、BufferedImage.TYPE_BYTE_GRAY); } else if(depth == 24){image = new BufferedImage(width、height、BufferedImage.TYPE_INT_RGB); } WritableRasterラスター=(WritableRaster)image.getData(); ラスター.setPixels(0、0、幅、高さ、ピクセル); image.setData(raster); getBufferedImageToBmpByteArray(image);を返します。} private byte [] getBufferedImageToBmpByteArray(BufferedImage image){byte [] imageData = null; {ByteArrayOutputStream bas = new ByteArrayOutputStream();を試してください。ImageIO.write(image、 "bmp"、bas); imageData = bas.toByteArray(); bas.close(); } catch(例外e){e.printStackTrace(); } return imageData; } private int [] byteToInt(byte [] data){int [] ints = new int [data.length]; for(int i = 0; i