gpt4 book ai didi

C# 使用 FFT 识别模糊图像

转载 作者:行者123 更新时间:2023-12-04 13:22:27 25 4
gpt4 key购买 nike

关闭。这个问题需要debugging details .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

3年前关闭。




Improve this question




我正在寻找一种方法来识别 C# 中的图像是否模糊。我看到了 this post但我没有看到适用于我的案例的方法。

我找到了 AForge.dll将 FFT 应用于我的图像。我正在寻找一种简单的方法来确定图像是否模糊(我对数学不太满意)。

有我的代码:

Bitmap  Picture;

// I'm working with images sized between 130x130 and 150x150
Bitmap tmp = new Bitmap(pictureFile);

// Crop to be 128x128
Bitmap cropped = cropBitmap(tmp, 128, 128);
using (MemoryStream ms = new MemoryStream())
{
cropped.Save(ms, ImageFormat.Gif);
ms.Position = 0;
// Save in grayscale
Picture = new Bitmap(ms);
}

// Create the ComplexImage with AForge.dll
ComplexImage output = ComplexImage.FromBitmap(Picture);
// Apply FFT
output.ForwardFourierTransform();
Bitmap result = output.ToBitmap();

// to be continued...

最佳答案

这应该可以解决问题。

calcBlurriness() 的结果越小(接近于零),图像越清晰。

using OpenCvSharp;    
namespace BlurDetectSO {
class Program
{

static float calcBlurriness(Mat src)
{
Mat Gx = new Mat();
Mat Gy = new Mat();
Cv2.Sobel(src, Gx, MatType.CV_32F, 1, 0);
Cv2.Sobel(src, Gy, MatType.CV_32F, 0, 1);
double normGx = Cv2.Norm(Gx);
double normGy = Cv2.Norm(Gy);
double sumSq = normGx * normGx + normGy * normGy;
return (float)(1.0 / (sumSq / (src.Size().Height * src.Size().Width) + 1e-6));
}

static void Main(string[] args)
{
Mat src = Cv2.ImRead("lenna.png", ImreadModes.GrayScale);
Mat dst = new Mat();

var blurIndex = calcBlurriness(src);

//test: find edges...
//Cv2.Canny(src, dst, 50, 200);
//using (new Window("src image", src))
//using (new Window("dst image", dst))
//{Cv2.WaitKey();}
}
}
}

笔记:
  • 如您所见,我使用了 .NET 包装器 OpenCVSharp(有些使用 Emgucv 代替 - 它看起来更复杂,但可能更高级)。
  • 我做了一些测试。这种方法不适用于某些类型的图像。我观察到包含某种自然噪声的图像存在一些问题,可以将其解释为模糊。
  • 这是我第一次尝试 OpenCV。所以,要谨慎。改编自此 sample .
  • 关于C# 使用 FFT 识别模糊图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48751468/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com