ステレオはただ

こんにちは、%ユーザー名%。



この記事では、グラフィカルエディターと小さなプログラムを使用して、ステレオイメージを独立して作成する方法について説明します。

マスク画像

ステレオ画像



はじめに



最初に、ステレオ画像の仕組みとその見方を見てみましょう。 まず、繰り返しのフラグメントで構成されています。

図1。

図1。



繰り返しの断片の幅が目の間の距離よりも小さいことが非常に重要です。 ステレオ画像を快適に表示するには、幅をこの値の1/3から2/3に変更する必要があります。 幅が広いほど、より深い(体積)画像を取得できます。 幅が小さいほど、ステレオ画像を表示するときに目が疲れにくくなります。



3次元画像を表示するには、左目と右目の画像が一致するように、画像の平面の背後でビューの焦点を合わせる必要があります。 完全に繰り返しのフラグメントで構成される画像の場合、まったく同じ虚像(平面)を観察します。 唯一の違いは、図面がさらに落ち着き始めたように見えることです。

図2。

図2。



3次元画像はどのように取得されますか?



画像が大きくなるためには、画像の一部をより近くに、他の部分をより遠くに知覚する必要があります。 この効果は、画像要素をシフトすることで実現できます。



図3は、実画像の2つの要素(赤と紫)を左に1ポジションシフトした後の仮想画像の変化を示しています。

図3。

図3。



想像上の画像では、同じサイズの2つのアーチファクトが、シフトされた要素のサイズに等しく形成されました。 シフトの左側に配置されたアーティファクトは、観察者により近い位置にあると認識されます(仮想イメージの平面の前)。 反対に、右側のアーティファクトは、仮想イメージの平面の背後にあると認識されます。 想像上のイメージの要素の位置で、それは片方の目だけに同時に見えます(破線でマークされています)、脳はそれ自身で「考えます」。



シフトは、繰り返し部分の幅の半分を超えてはならないことに注意してください。 シフトのサイズがこの境界に近い場合、観察された領域が凸面か凹面かを目で判断することは困難です。



仮想イメージの平面のすぐ前にあるオブジェクトを描画する場合、不要なアーティファクトに対処できる必要があります。 そのためには、シフトの最初の場所の右側にある各期間で要素のシフトを実行するだけで十分です(図4)。

図4。

図4。



さまざまな程度の遠隔性を持つオブジェクトが仮想イメージ上でどのように形成されるかを示すことは残っています。 明確な例として、今回は3つの要素を左にシフトしますが、1つの位置ではなく、2つの位置にシフトします。 図4と図5を比較すると、最後の図では、より多くの位置によるシフトにより、1つの位置だけシフトした場合よりも近くにオブジェクトが配置されていることがわかります。

図5。

図5。



実際に実装



C#で記述された次の関数を使用して、ステレオ画像が作成されました。



private Bitmap GenerateStereoPicture(Bitmap bitmapMask) {   //        int w = bitmapMask.Width;   int h = bitmapMask.Height;   int[][] mask = new int[w][];   for (int x = 0; x < w; x++)   {     mask[x] = new int[h];     for (int y = 0; y < h; y++)       mask[x][y] = bitmapMask.GetPixel(x, y).R / 32;   }   // C    int s = 100;   Bitmap stereoImg = GetNewStereoPicture(w + s, h, s);   //      for (int y = 0; y < h; y++)     for (int x = 0; x < w; x++)       if (mask[x][y] > 0)       {         Color pixel = stereoImg.GetPixel(x + mask[x][y], y);         for (int i = x + s; i < w + s; i += s)           stereoImg.SetPixel(i, y, pixel);       }   return stereoImg; }
      
      





入力では、関数はグラフィックエディターで作成されたイメージマスクを受け入れます。 最初にテキストラベルが作成され、それにグラデーションフィルが適用されました(記事の最初の図)。



ブラックポイントは、関数によってゼロシフトのポイントとして扱われます。 それらは想像上のイメージの平面を形成します。 ポイントの色が明るいほど、そのシフトが大きくなり、観察者に近づくように見えます。 画像はグレーで作成されているため、32で除算した赤のRGB成分の輝度を使用してポイントの輝度を決定したため、可能な最大シフトは255/32 = 7です。



シフトの配列を形成した後、関数は幅がw + sピクセル、高さがhピクセル、繰り返し部分の幅がs = 100ピクセルの画像を作成します。 繰り返し部分として、ランダムなサイズと色のランダムな数のランダムな形状(楕円、長方形、円弧、曲線)で構成されるランダムな画像を生成します。 この段階に創造的に来て、事前にいくつかの美しい背景を準備することができます。



最後の、最も重要な段階で、画像の各ピクセルはシフトの配列に従ってシフトされます。



PSこの記事がステレオ画像の見方を学ぶのに役立つとしたら、私自身はすぐに学ぶことができなかったのでとてもうれしいです。



All Articles