AForge - 巴特沃思低通滤波器 - 如何从 Complex[,] 数组创建 ComplexImage
本文关键字:Complex 数组 ComplexImage 创建 低通滤波器 AForge | 更新日期: 2023-09-27 18:35:06
我正在尝试使用 AForge 在 C# 中实现巴特沃思低通滤波器。我创建了以下函数:
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,但我还没有弄清楚如何做到这一点。如果有修改输入图像数据的替代方法,我也愿意接受建议。
来自文档
构造函数受到保护,这使得无法实例化 直接上课。创建此类的实例 应使用 FromBitmap(Bitmap) 或 FromBitmap(BitmapData) 方法。
正如您发现的那样,数据是只读的
所以基本上我认为您必须下载源代码,并对其进行自定义以添加过滤器
此外,您可以尝试他们的论坛,这可能是更直接的帮助