1

キャプチャした画像のグレースケール オブジェクトを、オブジェクト ピクセルのブロック (またはオブジェクト スタイルのスケーリングのようなもの) を表す 0 1 のマトリックスとしてスクリプト化しようとしています。色のグレードに応じて、ただし、インテリジェントなツールまたはオープンソースのツールを探しています。

.NET が優先されます。

[更新、より詳細に説明する]

元の画像は色付きですが、256グレースケールに変換しています。次に、黒または白のみにスケーリングしたいので、最終的には白黒の画像になり、ゼロに変換したいです- 1 つのマトリックス、

次の URL には、imagemagick というソフトウェアを使用して白黒画像をゼロ 1 マトリックスに変換する方法の説明が含まれています。

http://studio.imagemagick.org/discourse-server/viewtopic.php?f=1&t=18433

ドラゴンの顔の画像を示すゼロ ワン マトリックスに注目してください。それを達成するのに役立つテクニックやオープン ソース ツールはありますか?

4

1 に答える 1

3

Emgu OpenCVfor.NETを使用すると次のようなものが機能します。

using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using System;
using System.Drawing;
using System.IO;

using (Image<Bgr, Byte> img = new Image<Bgr, Byte>("MyImage.jpg")) 
{
    Matrix<Int32> matrix = new Matrix<Int32>(img.Width, img.Height);

    for (int i = 0; i<img.Height;i++)
    {
       for (int j = 0; j<img.Width;j++)
       {
           if (img.Data[i,j,2] == 255 && 
               img.Data[i,j,1] == 255 && 
               img.Data[i,j,0] == 255)
           {
               matrix.Data[i,j] = 0;
           }
           else 
           {
               matrix.Data[i,j] = 1;
           }
       }
    }

    TextWriter tw = new StreamWriter("output.txt");
    for (int i = 0; i<img.Height;i++)
    {
       for (int j = 0; j<img.Width;j++)
       {
           tw.Write(matrix.Data[i,j]);
       }
       tw.Write(tw.NewLine); 
    }


}

上記のスニペットはカラー画像をロードし、それ以外の場合は白を0、1としてマトリックスを作成することに注意してください。

グレースケール画像をロードして操作するために、はImage<Bgr, Byte>になりImage<Gray, Byte>、比較は単純化されて if (img.Data[i,j,0] == 255)

また、しきい値処理(カラーからグレースケール、白黒への変換)を行うには、次のcvThresholdような方法を使用して、大津のしきい値処理を使用できます。

int threshold = 150;
Image<Bgr, Byte> img = new Image<Bgr, Byte>("MyImage.jpg");
Image<Gray, Single> img2 = img1.Convert<Gray, Single>();
Image<Gray, Single> img3 = new Image<Gray, Single>(img2.Width, img2.Height);
CvInvoke.cvThreshold(img2, img3, threshold, 255, THRESH.CV_THRESH_OTSU);    

その他の可能なツールには次のものがあります

  • convertリンクしたURLに記載されているように、 ImageMagickおよびpnmorawnetpbmから、例のスニペットを使用し convert lib/dragon_face.xbm pbm: | pnmnorawます。
  • PIL(Python Image Library)を使用して画像データを反復処理し、PythonIO関数を使用して出力データを書き込みます
  • System.Drawing.Bitmapを使用して、具体的にはGetPixelメソッドを使用して画像データを反復処理し、C#IO関数を使用して出力データを書き込みます。
于 2012-03-25T19:51:26.437 に答える