如何转换
Gaussian High Pass kernel
为了显示的目的?
我尝试了以下功能:
-
双精度到整数
public static Bitmap ToBitmap(Array2d<double> image, PixelFormat pixelFormat)
{
Array2d<double> imageCopy = image.Copy();
int Width = imageCopy.Width;
int Height = imageCopy.Height;
Bitmap bitmap = new Bitmap(Width, Height, pixelFormat);
for (int y = 0; y < Height; y++)
{
for (int x = 0; x < Width; x++)
{
double d = imageCopy[x, y];
int iii = Convert.ToInt32(d*255.0);
Color clr = Color.FromArgb(iii, iii, iii);
bitmap.SetPixel(x, y, clr);
}
}
return bitmap;
}
-
原木伸展
:
public static Array2d<double> Stretch(Array2d<double> data)
{
int Width = data.Width;
int Height = data.Height;
Array2d<double> array2d = new Array2d<double>(Width, Height);
for (int i = 0; i < Width; i++)
{
for (int j = 0; j < Height; j++)
{
array2d[i, j] = Math.Log(data[i, j] + 1);
}
}
return array2d;
}
他们两个似乎都没有工作,因为他们给出了以下例外:
系统.Drawing.dll
附加信息:“133028503”的值对“red”无效。
“red”应大于或等于0且小于或等于
高斯核的样本数据如下:
有些值太低,有些值太高,无法转换为0-255范围内的整数。