加速.Net中的图像锐化和相关图像优化

时间:2018-03-29 11:46:42

标签: c# .net bitmap gdi+ imaging

我的目标是通过提供改善位图的 清晰度,对比度等 的选项,让用户提高图像质量

我遵循了https://www.codeproject.com/Articles/2008/Image-Processing-for-Dummies-with-C-and-GDI-Part中提到的方法。这对于小分辨率图像非常有效。但对于使用DSLR拍摄的大分辨率图像(例如:6000X400像素),这种方法非常慢。我明白这是一般的GDI +和Bitmap的限制,所以我寻找一些框架来处理大分辨率图像。 Aforge 似乎是一个不错的选择,但处理大分辨率图像也需要相当长的时间。

例如:

GaussianSharpen filter = new GaussianSharpen(4, 11);
filter.ApplyInPlace(bm_dest);

有人可以告诉我一个快速库或工具(无论是非.NET命令行工具,我可以使用CMD调用它并更新Picturebox图像)来解决这个问题。

1 个答案:

答案 0 :(得分:0)

Gdiplus有自己的Sharpen class

这应该比手动操作位快得多。

对于Windows Vista及更高版本,需要GDI plus 1.1版。例如:

#define GDIPVER 0x0110

void test_sharpen(HDC hdc)
{
    Graphics graphics(hdc);

    Image img(L"test.jpg");
    graphics.DrawImage(&img, 0.0f, 0.0f, (REAL)img.GetWidth(), (REAL)img.GetHeight());

    SharpenParams sharpen_param;
    sharpen_param.amount = 50;
    sharpen_param.radius = 100;

    Sharpen sharpen;
    sharpen.SetParameters(&sharpen_param);

    RectF rect(0.0f, 0.0f, (REAL)img.GetWidth(), (REAL)img.GetHeight());
    Matrix matrix_offset(1.0f, 0.0f, 0.0f, 1.0f, 400.0, 0.0f);
    graphics.DrawImage(&img, &rect, &matrix_offset, &sharpen, NULL, UnitPixel);
}