あなたがJMPに参加した場合ディスカバリーサミット2011 コロラド州デンバーで、9月に戻って、あなたは私のプレゼンテーションに座ったかもしれません、画像はすべてではありませんが、JMP 9のものであることは確かです 。私はに追加された画像機能について話しました JMP 私は、JMPユーザーが自分の画像に含まれているデータを抽出するために画像機能をどのように利用しているかについて、実際の例をいくつか示しました。私はそれがイメージ機能を使用するための(駄目な)努力を飛躍させるかもしれないことを期待していくつかのJMPスクリプト言語(JSL)スクリプトを共有しました。同じ理由で、私は画像の機能性も示すコードスニペットのJSLファイルをまとめることにしました。 というファイル ImageExamples.jsl 、JMPで見つけることができますファイル交換 。そのファイルからいくつかの例を取り出して、それらについてもう少し話をしましょう。
あなたがしたいと思うかもしれない最初の事はJMPに既存のイメージを取得することです。これを行うには、単にNew Imageコマンドを使います。
img = 新しいイメージ ( "C:\ Users \ sasjvp \ Pictures \ Yellowstone08 \ IMG_0262.JPG" ) ;
新しい窓 ( 「原画」 、 img ) ;

この例では、JPEG画像を読み込み、それをimgという画像オブジェクトとしてJSLに格納します。NewImage()はJPG、PNG、BMP、GIFおよびTIFファイルを読むことができます。
私が最初にこれをしたとき、結果として得られるウィンドウは、画像がとても大きいという事実のために非常に大きくなりました。画像の大きさは実際どのようなものなのだろうかと思ったので、こうしました。
{ w 、時間 } = img << getSize () ;
このコマンドを実行すると、画像の幅と高さが3264 x 2448とかなり大きくなりました。そのため、より合理的なサイズで表示するために、画像の新しい幅と高さを指定して縮小しました。
img << setSize ( { w / 4 、時間 / 4 } ) ;
これで画像は816 x 612、つまり各寸法の元のサイズの4分の1になります。幅と高さがリストとして渡されることに注意してください。それらを中括弧で囲みます。
今、私は画像を操作したいのですが、私は元のバージョンを保存したいです。だから私はNewImage()を使用して私のイメージのコピーを作成します。
img2 = 新しいイメージ ( img ) ;
これにより、私の元の画像のコピーが、img2という2番目の画像として作成されます。
次にやりたいことは、画像のピクセル値を取得することです。私の画像はカラー画像なので、各ピクセルは赤、緑、青の3つの色成分で定義されます。ピクセルデータは、要求した各色成分のマトリックスとして返されます。
{ r 、 g 、 b } = img2 << getPixels ( "RGB" ) ;
この場合、3つの行列が得られます。私の画像に透明性がある場合、"rgba"を指定することで4つの行列を要求できます。緑の成分には "g"のように、必要な成分を指定するだけで、色成分を1つだけ指定することもできます。各行列は、正規化された色空間のピクセルカラー値を表します。つまり、値は0.0から1.0の間です。
ピクセル値をマトリックスとして取得することに関する素晴らしい点は、ピクセルに対してマトリックス演算を実行できるようになったことです。私が自分のイメージのグレースケールバージョンを作りたいならば、私は非常に簡単に以下の公式でこれをすることができました。
私 = .30 * r + .59 * g + .11 * b ;
これは、テレビがカラー番組を白黒に変換するのに使用するのと同じ式です。あなたが私と同じくらい古いならば、あなたは白黒テレビを覚えているかもしれません、それは白黒だけではなく、むしろ白と黒の間の灰色の範囲を含みました。この式は、私の赤の成分の30%と私の緑の成分の59%および私の青の成分の11%を組み合わせたものです。これは私のグレースケールの強度値を計算します。これで、赤、緑、青の元の色成分をグレースケールの強度値に置き換えて、グレースケールの画像を作成できます。
img2 << setPixels ( "RGB" 、 { 私 、私 、私 } ) ;
これが結果です。

JMPはJSLで行列演算をサポートしているので、画像をトラバースして各ピクセルを個別に操作する必要はありません。この式を一度に画像全体に適用できます。これは便利で効率的です。

もちろん、JMPの真の強みは、統計分析とデータ発見ができることです。これを行うには、データをデータテーブルの形式にする必要があります。それでは、画像を読み込み、ピクセルデータを抽出して、そこからデータテーブルを作成しましょう。
MRIから撮影した画像を見てみましょう。以前と同様にNewImage()コマンドを使用して、画像をJMPに読み込むことができます。この画像がすでにグレースケール画像であることを除けば、以前と同じようにgetPixels()コマンドを使用することもできます。そのため、1つの色成分を要求するだけで済みます。第一成分はなお「r」成分と呼ばれる。ピクセル値を取得したら、データテーブルを作成できます。
img = 新しいイメージ ( "C:\ JMP \ mri.jpg" ) ;
{ 写真 } = img << getPixels ( "r" ) ;
dt = 新しいテーブル ( 「ピクセルデータ」 、
newColumn ( 「値」 、設定値 ( 写真 ))) ;
分布 ( 連続配布 ( カラム ( : 値 ) 、異常値ボックス
プロット ( 0 ) ) ) ;
新しい窓 ( 「画像データの解析」 、 img ) ;
ピクセル値は、JMPに読み込まれる他のデータとまったく同じようにデータテーブルに格納されています。つまり、JMPの統計分析機能を使用してデータを分析できるようになりました。この時点で何を使うべきかはあなたのデータとは何か、そしてあなたが答えようとしている質問によって異なります。この例では、私は自分のデータの範囲と頻度が何であるかを示すために単純なDistributionを行いました。

この時点までに、JMPで画像を使い始めるのに十分な例を示したことを願っています。サンプルスクリプトをダウンロードすることを忘れないでください。 ImageExamples.jsl 、JMPからファイル交換 。それは私がここで述べたよりも多くの例を示しています。回転、透明度、フィルタなどのコマンドが含まれています。どう考えているか教えてください。
JSLを使用したJMPでの画像操作書きました:
[...]コマンドgetPixels( "rgb")は、各画像を3つの行列(赤、緑、青の各色成分に対して1つ)のコレクションとして返します。画像をブレンドするには、Image2にパーセントを掛けてから、Image1に1を引いたパーセントを引いたものに加算します。それを結果画像Image3とします。それだけです。getPixels()やその他の画像機能の詳細については、私のブログ記事、JMP 9で画像を改善するをご覧ください。[...]