A.P*_*cat 5 c# image fft image-processing
我看到了很多与此相关的主题,我了解了理论,但无法对此进行编码。
我有一些图片,我想确定它们是否模糊。我找到了一个库(aforge.dll),并用它来对图像进行FFT 运算。
例如,我正在处理两个图像:
我的代码在c#中:
public Bitmap PerformFFT(Bitmap Picture)
{
//Loade Image
ComplexImage output = ComplexImage.FromBitmap(Picture);
// Perform FFT
output.ForwardFourierTransform();
// return image
return = output.ToBitmap();
}
Run Code Online (Sandbox Code Playgroud)
如何确定图像是否模糊?我对理论不太满意,我需要具体的例子。我看到了这篇文章,但我不知道该怎么做。
编辑:
我会澄清我的问题。当我有一个复数的2D数组ComplexImage output(图像FFT)时,可以使用什么C#代码(或伪代码)来确定图像是否模糊?
模糊图像的 FFT 结果在高频区域幅度较小。具有低索引(near)的数组元素Result[0][0]表示低频区域。
因此,将结果数组除以某些标准,对两个区域的幅度求和并进行比较。index<M/2例如,使用和选择结果数组的四分之一(大小为 M)indexy<M/2
对于一系列越来越模糊的图像(对于相同的初始图像),您应该看到越来越高的比率Sum(Low)/Sum(High)
结果是方阵 NxN。它具有中心对称性(F(x,y)=F(-x,-y)因为源是纯实数),因此用 处理数组的上半部分就足够了y<N/2。
低频分量位于数组的左上角和右上角附近(y 的最小值、x 的最小值和最大值)。因此,对范围内的数组元素的大小求和
for y in range 0..N/2
for x in range 0..N
amp = magnitude(y,x)
if (y<N/4) and ((x<N/4)or (x>=3*N/4))
low = low + amp
else
high = high + amp
Run Code Online (Sandbox Code Playgroud)
请注意,您的图片显示了混乱的数组片段 - 这是在中心显示零分量的标准做法。
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |