我希望能够以编程方式在C#中扭曲图像。具体来说,我想重新在空间上对图像进行加权,使得中心像素得到扩展,并且周边像素占据较小的空间。想想鱼眼镜头。均田。是否有任何用于扭曲/变形图像的.NET工具?
是否有任何.NET工具可以做到这一点?我不介意它们是否内置于.NET核心,或者是一个插件。
我希望能够以编程方式在C#中扭曲图像。具体来说,我想重新在空间上对图像进行加权,使得中心像素得到扩展,并且周边像素占据较小的空间。想想鱼眼镜头。均田。是否有任何用于扭曲/变形图像的.NET工具?
是否有任何.NET工具可以做到这一点?我不介意它们是否内置于.NET核心,或者是一个插件。
免责声明:我工作的Atalasoft
我们免费的成像SDK DotImage照片免费,可以这样做:
http://www.atalasoft.com/free-dotnet-image-sdk
看Atalasoft.Imaging.ImageProcessing.Transforms.LensTransform
。你会做类似
AtalaImage img = new AtalaImage("file.jpg");
LensTransform cmd = new LensTransform();
cmd.Radius = 100;
cmd.Offset = new Point(100, 100); // set the center
AtalaImage img2 = cmd.Apply(img).Image;
嗯...你可以尝试使用ImageMagick的API来执行任何你需要的操作。
http://www.imagemagick.org/script/api.php
他们有两个可用的.NET解决方案。您应该能够进行调查并找到最适合您需求的方案。其中一个功能包括广义像素失真,您可以使用它来满足您的需求。
你可以用WPF着色器效果很容易达到这样的效果。
如果您还没有听说过它们,那么您可以在任何图像上运行Direct3D像素着色器效果。这将使您可以非常轻松地完成像实时帧速率描述的效果。
在许多方面,这比在C#或C中编写它们容易,因为您不必担心在图像缓冲区中的颜色样本的地址,范围检查和/或正确循环数据,因为所有这是由视频卡硬件处理的。
Here's a link到一个channel9视频,展示了wpffx示例库中的示例效果。
我认为“光滑的放大”非常接近你想要的。