0
変換の仕方ビットマップ〜複合番号?ことを考えるとどのようにしてビットマップオブジェクトを複素数に変換できますか?
public static COMPLEX [,] BitmapToComplex2D(Bitmap bmp)
{
COMPLEX[,] comp = new COMPLEX[bmp.Width, bmp.Height];
int [,] array2D = BitmapToArray2D(bmp);
for (int i = 0; i <= bmp.Width - 1; i++)
{
for (int j = 0; j <= bmp.Height - 1; j++)
{
comp[i,j].RealPart = ???;
comp[i,j].ImaginaryPart = ???;
}
}
return comp;
}
...をビットマップに
ビットマップコンバータに2次元配列
public static Bitmap Array2DToBitmap(int[,] image)
{
int i, j;
Bitmap output = new Bitmap(image.GetLength(0), image.GetLength(1));
BitmapData bitmapData1 = output.LockBits(new Rectangle(0, 0, image.GetLength(0), image.GetLength(1)),
ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
unsafe
{
byte* imagePointer1 = (byte*)bitmapData1.Scan0;
for (i = 0; i < bitmapData1.Height; i++)
{
for (j = 0; j < bitmapData1.Width; j++)
{
imagePointer1[0] = (byte)image[j, i];
imagePointer1[1] = (byte)image[j, i];
imagePointer1[2] = (byte)image[j, i];
imagePointer1[3] = 255;
//4 bytes per pixel
imagePointer1 += 4;
}//end for j
//4 bytes per pixel
imagePointer1 += (bitmapData1.Stride - (bitmapData1.Width * 4));
}//end for i
}//end unsafe
output.UnlockBits(bitmapData1);
return output;// col;
}
2D複素数は(それは正しいですか?)
public static Bitmap Complex2DToBitmap(COMPLEX[,] comp)
{
Bitmap output = new Bitmap(comp.GetLength(0), comp.GetLength(1));
int[,] GreyscaleImage2DArray = new int[output.Width, output.Height];
for (int i = 0; i <= output.Width - 1; i++)
{
for (int j = 0; j <= output.Height - 1; j++)
{
GreyscaleImage2DArray[i, j] = (int)comp[i, j].Magnitude();
}
}
output = ImageConverter.Array2DToBitmap(GreyscaleImage2DArray);
return output;
}
'Array2DToBitmap'では' int'を 'byte'にキャストしますが、' image'のすべての値は0と255の間にあるのでしょうか? – Shago
私はグレースケールでしか作業していません。 – anonymous