我试图在C#中使用AForge实现巴特沃斯低通滤波器。我创建了以下函数:
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,但我还没有弄清楚如何这样做。如果有另一种修改输入图像数据的方法,我也愿意接受建议。
发布于 2014-12-24 00:49:29
从文件中
构造函数是受保护的,这使得无法直接实例化该类。要创建这个类的实例,应该使用FromBitmap(位图)或FromBitmap(BitmapData)方法。
正如您所发现的,这些数据是只读的。
所以基本上,我认为您需要下载源代码,并自定义它以添加过滤器
此外,您可以尝试他们的讨论论坛,这可能是更直接的帮助。
https://stackoverflow.com/questions/27629958
复制相似问题