我正在尝试使用AForge在C#中实现Butterworth低通滤波器。我创建了以下函数:
public static ComplexImage ButterworthLP(double freq, double power, ComplexImage inImage)
{
int ydim = inImage.Height;
int xdim = inImage.Width;
Complex[,] imgData = inImage.Data;
for(int v = 0; v<ydim; ++v)
{
for(int u = 0; u<xdim; ++u)
{
int dv = (v < ydim / 2) ? v : v - ydim;
int du = (u < xdim / 2) ? u : u - xdim;
double dist = (double)(dv * dv + du * du);
// Apply filter
double filter = 1 / (1 + Math.Pow(dist / (freq * freq), power));
imgData[v, u].Re *= filter;
imgData[v, u].Im *= filter;
}
}
ComplexImage cImg = new ComplexImage(xdim,ydim);
return cImg;
}
ComplexImage.Data属性是只读的;所以,目前,我正在获取数据并对其进行修改。我现在想用这个修改过的复杂数据数组创建一个ComplexImage,但我还没弄清楚如何这样做。如果有另一种修改输入图像数据的方法,我也愿意接受建议。
答案 0 :(得分:0)
来自文档
构造函数受到保护,这使得无法实例化 这个班直接。创建此类的实例 应使用FromBitmap(Bitmap)或FromBitmap(BitmapData)方法。
并且您发现数据是只读的
所以基本上我认为您必须下载源代码并自定义它以添加过滤器
此外,您可以尝试他们的讨论论坛,这可能是更直接的帮助